// Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import React, { memo, useCallback } from 'react'; import { useSelector } from 'react-redux'; import type { ButtonVariant } from '../../components/Button.js'; import { ErrorModal } from '../../components/ErrorModal.js'; import { GlobalModalContainer } from '../../components/GlobalModalContainer.js'; import { SmartAboutContactModal } from './AboutContactModal.js'; import { SmartAddUserToAnotherGroupModal } from './AddUserToAnotherGroupModal.js'; import { SmartContactModal } from './ContactModal.js'; import { SmartEditHistoryMessagesModal } from './EditHistoryMessagesModal.js'; import { SmartForwardMessagesModal } from './ForwardMessagesModal.js'; import { SmartUsernameOnboardingModal } from './UsernameOnboardingModal.js'; import { SmartSafetyNumberModal } from './SafetyNumberModal.js'; import { SmartSendAnywayDialog } from './SendAnywayDialog.js'; import { SmartShortcutGuideModal } from './ShortcutGuideModal.js'; import { SmartStickerPreviewModal } from './StickerPreviewModal.js'; import { SmartStoriesSettingsModal } from './StoriesSettingsModal.js'; import { getConversationsStoppingSend } from '../selectors/conversations.js'; import { getIntl, getTheme } from '../selectors/user.js'; import { useGlobalModalActions } from '../ducks/globalModals.js'; import { SmartDeleteMessagesModal } from './DeleteMessagesModal.js'; import { SmartMessageRequestActionsConfirmation } from './MessageRequestActionsConfirmation.js'; import { getGlobalModalsState } from '../selectors/globalModals.js'; import { SmartEditNicknameAndNoteModal } from './EditNicknameAndNoteModal.js'; import { SmartNotePreviewModal } from './NotePreviewModal.js'; import { SmartCallLinkEditModal } from './CallLinkEditModal.js'; import { SmartCallLinkAddNameModal } from './CallLinkAddNameModal.js'; import { SmartConfirmLeaveCallModal } from './ConfirmLeaveCallModal.js'; import { SmartCallLinkPendingParticipantModal } from './CallLinkPendingParticipantModal.js'; import { SmartProfileNameWarningModal } from './ProfileNameWarningModal.js'; import { SmartDraftGifMessageSendModal } from './DraftGifMessageSendModal.js'; import { DebugLogErrorModal } from '../../components/DebugLogErrorModal.js'; function renderCallLinkAddNameModal(): JSX.Element { return ; } function renderCallLinkEditModal(): JSX.Element { return ; } function renderCallLinkPendingParticipantModal(): JSX.Element { return ; } function renderConfirmLeaveCallModal(): JSX.Element { return ; } function renderEditHistoryMessagesModal(): JSX.Element { return ; } function renderEditNicknameAndNoteModal(): JSX.Element { return ; } function renderProfileNameWarningModal(): JSX.Element { return ; } function renderUsernameOnboarding(): JSX.Element { return ; } function renderContactModal(): JSX.Element { return ; } function renderDeleteMessagesModal(): JSX.Element { return ; } function renderDraftGifMessageSendModal(): JSX.Element { return ; } function renderForwardMessagesModal(): JSX.Element { return ; } function renderMessageRequestActionsConfirmation(): JSX.Element { return ; } function renderNotePreviewModal(): JSX.Element { return ; } function renderStoriesSettings(): JSX.Element { return ; } function renderSendAnywayDialog(): JSX.Element { return ; } function renderShortcutGuideModal(): JSX.Element { return ; } function renderAboutContactModal(): JSX.Element { return ; } export const SmartGlobalModalContainer = memo( function SmartGlobalModalContainer() { const conversationsStoppingSend = useSelector(getConversationsStoppingSend); const i18n = useSelector(getIntl); const theme = useSelector(getTheme); const hasSafetyNumberChangeModal = conversationsStoppingSend.length > 0; const { aboutContactModalContactId, addUserToAnotherGroupModalContactId, backfillFailureModalProps, callLinkAddNameModalRoomId, callLinkEditModalRoomId, callLinkPendingParticipantContactId, confirmLeaveCallModalState, contactModalState, criticalIdlePrimaryDeviceModal, debugLogErrorModalProps, deleteMessagesProps, draftGifMessageSendModalProps, editHistoryMessages, editNicknameAndNoteModalProps, errorModalProps, forwardMessagesProps, lowDiskSpaceBackupImportModal, mediaPermissionsModalProps, messageRequestActionsConfirmationProps, notePreviewModalProps, isProfileNameWarningModalVisible, profileNameWarningModalConversationType, isShortcutGuideModalVisible, isSignalConnectionsVisible, isStoriesSettingsVisible, isWhatsNewVisible, usernameOnboardingState, safetyNumberChangedBlockingData, safetyNumberModalContactId, stickerPackPreviewId, tapToViewNotAvailableModalProps, userNotFoundModalState, } = useSelector(getGlobalModalsState); const { closeDebugLogErrorModal, closeErrorModal, closeMediaPermissionsModal, hideCriticalIdlePrimaryDeviceModal, hideLowDiskSpaceBackupImportModal, hideTapToViewNotAvailableModal, hideUserNotFoundModal, hideWhatsNewModal, hideBackfillFailureModal, toggleSignalConnectionsModal, } = useGlobalModalActions(); const renderAddUserToAnotherGroup = useCallback(() => { return ( ); }, [addUserToAnotherGroupModalContactId]); const renderSafetyNumber = useCallback( () => ( ), [safetyNumberModalContactId] ); const renderStickerPreviewModal = useCallback( () => stickerPackPreviewId ? ( ) : null, [stickerPackPreviewId] ); const renderErrorModal = useCallback( ({ buttonVariant, description, title, }: { buttonVariant?: ButtonVariant; description?: string; title?: string | null; }) => ( ), [closeErrorModal, i18n] ); const renderDebugLogErrorModal = useCallback( ({ description }: { description?: string }) => ( window.IPC.showDebugLog()} /> ), [closeDebugLogErrorModal, i18n] ); return ( ); } );