import { Box, Icon, Menu } from '@rocket.chat/fuselage';
import React, { useMemo, useCallback } from 'react';
import { useSetModal } from '../../../contexts/ModalContext';
import { useRoute } from '../../../contexts/RouterContext';
import { useMethod, useEndpoint } from '../../../contexts/ServerContext';
import { useTranslation } from '../../../contexts/TranslationContext';
import CloudLoginModal from './CloudLoginModal';
import IframeModal from './IframeModal';
import WarningModal from './WarningModal';
import { appEnabledStatuses, warnStatusChange, handleAPIError } from './helpers';
function AppMenu({ app, ...props }) {
const t = useTranslation();
const setModal = useSetModal();
const appsRoute = useRoute('admin-apps');
const checkUserLoggedIn = useMethod('cloud:checkUserLoggedIn');
const setAppStatus = useEndpoint('POST', `/apps/${app.id}/status`);
const buildExternalUrl = useEndpoint('GET', '/apps');
const syncApp = useEndpoint('POST', `/apps/${app.id}/sync`);
const uninstallApp = useEndpoint('DELETE', `/apps/${app.id}`);
const canAppBeSubscribed = app.purchaseType === 'subscription';
const isSubscribed = app.subscriptionInfo && ['active', 'trialing'].includes(app.subscriptionInfo.status);
const isAppEnabled = appEnabledStatuses.includes(app.status);
const closeModal = useCallback(() => {
setModal(null);
}, [setModal]);
const handleEnable = useCallback(async () => {
try {
const { status } = await setAppStatus({ status: 'manually_enabled' });
warnStatusChange(app.name, status);
} catch (error) {
handleAPIError(error);
}
}, [app.name, setAppStatus]);
const handleViewLogs = useCallback(() => {
appsRoute.push({ context: 'logs', id: app.id });
}, [app.id, appsRoute]);
const handleSubscription = useCallback(async () => {
if (!(await checkUserLoggedIn())) {
setModal(