diff --git a/src/components/SupportalActionRestrictedModal.tsx b/src/components/SupportalActionRestrictedModal.tsx new file mode 100644 index 000000000000..3af249a1f116 --- /dev/null +++ b/src/components/SupportalActionRestrictedModal.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import useLocalize from '@hooks/useLocalize'; +import ConfirmModal from './ConfirmModal'; + +type SupportalActionRestrictedModalProps = { + isModalOpen: boolean; + hideSupportalModal: () => void; +}; + +function SupportalActionRestrictedModal({isModalOpen, hideSupportalModal}: SupportalActionRestrictedModalProps) { + const {translate} = useLocalize(); + return ( + + ); +} + +SupportalActionRestrictedModal.displayName = 'SupportalActionRestrictedModal'; + +export default SupportalActionRestrictedModal; diff --git a/src/languages/en.ts b/src/languages/en.ts index 58cbf779027d..fe791f4e18a4 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -480,6 +480,10 @@ const translations = { chatWithAccountManager: ({accountManagerDisplayName}: ChatWithAccountManagerParams) => `Need something specific? Chat with your account manager, ${accountManagerDisplayName}.`, chatNow: 'Chat now', }, + supportalNoAccess: { + title: 'Not so fast', + description: 'You are not authorized to take this action when support logged in.', + }, location: { useCurrent: 'Use current location', notFound: 'We were unable to find your location. Please try again or enter an address manually.', diff --git a/src/languages/es.ts b/src/languages/es.ts index c5f1ffbc79dd..808fade00eba 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -471,6 +471,10 @@ const translations = { chatWithAccountManager: ({accountManagerDisplayName}: ChatWithAccountManagerParams) => `¿Necesitas algo específico? Habla con tu gerente de cuenta, ${accountManagerDisplayName}.`, chatNow: 'Chatear ahora', }, + supportalNoAccess: { + title: 'No tan rápido', + description: 'No estás autorizado para realizar esta acción mientras estás conectado como soporte.', + }, connectionComplete: { title: 'Conexión completa', supportingText: 'Ya puedes cerrar esta página y volver a la App de Expensify.', diff --git a/src/pages/workspace/WorkspacesListPage.tsx b/src/pages/workspace/WorkspacesListPage.tsx index 46f83a49b9f0..7980616c08e3 100755 --- a/src/pages/workspace/WorkspacesListPage.tsx +++ b/src/pages/workspace/WorkspacesListPage.tsx @@ -17,6 +17,7 @@ import type {PopoverMenuItem} from '@components/PopoverMenu'; import {PressableWithoutFeedback} from '@components/Pressable'; import ScreenWrapper from '@components/ScreenWrapper'; import ScrollView from '@components/ScrollView'; +import SupportalActionRestrictedModal from '@components/SupportalActionRestrictedModal'; import Text from '@components/Text'; import useActiveWorkspace from '@hooks/useActiveWorkspace'; import useLocalize from '@hooks/useLocalize'; @@ -131,6 +132,12 @@ function WorkspacesListPage() { // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing ((policyToDelete?.areExpensifyCardsEnabled || policyToDelete?.areCompanyCardsEnabled) && policyToDelete?.workspaceAccountID); + const isSupportalAction = Session.isSupportAuthToken(); + + const [isSupportalActionRestrictedModalOpen, setIsSupportalActionRestrictedModalOpen] = useState(false); + const hideSupportalModal = () => { + setIsSupportalActionRestrictedModalOpen(false); + }; const confirmDeleteAndHideModal = () => { if (!policyIDToDelete || !policyNameToDelete) { return; @@ -169,6 +176,10 @@ function WorkspacesListPage() { icon: Expensicons.Trashcan, text: translate('workspace.common.delete'), onSelected: () => { + if (isSupportalAction) { + setIsSupportalActionRestrictedModalOpen(true); + return; + } setPolicyIDToDelete(item.policyID ?? '-1'); setPolicyNameToDelete(item.title); setIsDeleteModalOpen(true); @@ -237,7 +248,18 @@ function WorkspacesListPage() { ); }, - [isLessThanMediumScreen, styles.mb2, styles.mh5, styles.ph5, styles.hoveredComponentBG, translate, styles.offlineFeedback.deleted, session?.accountID, session?.email], + [ + isLessThanMediumScreen, + styles.mb2, + styles.mh5, + styles.ph5, + styles.hoveredComponentBG, + translate, + styles.offlineFeedback.deleted, + session?.accountID, + session?.email, + isSupportalAction, + ], ); const listHeaderComponent = useCallback(() => { @@ -450,6 +472,10 @@ function WorkspacesListPage() { cancelText={translate('common.cancel')} danger /> + ); }