mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-04-17 23:34:14 +01:00
Update local backup export UI
This commit is contained in:
@@ -34,7 +34,11 @@ import { SmartProfileNameWarningModal } from './ProfileNameWarningModal.preload.
|
||||
import { SmartDraftGifMessageSendModal } from './DraftGifMessageSendModal.preload.js';
|
||||
import { DebugLogErrorModal } from '../../components/DebugLogErrorModal.dom.js';
|
||||
import { SmartPlaintextExportWorkflow } from './PlaintextExportWorkflow.preload.js';
|
||||
import { shouldShowPlaintextWorkflow } from '../selectors/backups.std.js';
|
||||
import { SmartLocalBackupExportWorkflow } from './LocalBackupExportWorkflow.preload.js';
|
||||
import {
|
||||
shouldShowPlaintextWorkflow,
|
||||
shouldShowLocalBackupWorkflow,
|
||||
} from '../selectors/backups.std.js';
|
||||
|
||||
function renderCallLinkAddNameModal(): React.JSX.Element {
|
||||
return <SmartCallLinkAddNameModal />;
|
||||
@@ -100,6 +104,10 @@ function renderPlaintextExportWorkflow(): React.JSX.Element {
|
||||
return <SmartPlaintextExportWorkflow />;
|
||||
}
|
||||
|
||||
function renderLocalBackupExportWorkflow(): React.JSX.Element {
|
||||
return <SmartLocalBackupExportWorkflow />;
|
||||
}
|
||||
|
||||
function renderStoriesSettings(): React.JSX.Element {
|
||||
return <SmartStoriesSettingsModal />;
|
||||
}
|
||||
@@ -124,6 +132,9 @@ export const SmartGlobalModalContainer = memo(
|
||||
const shouldShowPlaintextExportWorkflow = useSelector(
|
||||
shouldShowPlaintextWorkflow
|
||||
);
|
||||
const shouldShowLocalBackupExportWorkflow = useSelector(
|
||||
shouldShowLocalBackupWorkflow
|
||||
);
|
||||
|
||||
const hasSafetyNumberChangeModal = conversationsStoppingSend.length > 0;
|
||||
|
||||
@@ -300,6 +311,7 @@ export const SmartGlobalModalContainer = memo(
|
||||
}
|
||||
renderNotePreviewModal={renderNotePreviewModal}
|
||||
renderPlaintextExportWorkflow={renderPlaintextExportWorkflow}
|
||||
renderLocalBackupExportWorkflow={renderLocalBackupExportWorkflow}
|
||||
renderProfileNameWarningModal={renderProfileNameWarningModal}
|
||||
renderUsernameOnboarding={renderUsernameOnboarding}
|
||||
renderSafetyNumber={renderSafetyNumber}
|
||||
@@ -310,6 +322,9 @@ export const SmartGlobalModalContainer = memo(
|
||||
safetyNumberChangedBlockingData={safetyNumberChangedBlockingData}
|
||||
safetyNumberModalContactId={safetyNumberModalContactId}
|
||||
shouldShowPlaintextExportWorkflow={shouldShowPlaintextExportWorkflow}
|
||||
shouldShowLocalBackupExportWorkflow={
|
||||
shouldShowLocalBackupExportWorkflow
|
||||
}
|
||||
stickerPackPreviewId={stickerPackPreviewId}
|
||||
tapToViewNotAvailableModalProps={tapToViewNotAvailableModalProps}
|
||||
theme={theme}
|
||||
|
||||
59
ts/state/smart/LocalBackupExportWorkflow.preload.tsx
Normal file
59
ts/state/smart/LocalBackupExportWorkflow.preload.tsx
Normal file
@@ -0,0 +1,59 @@
|
||||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import React, { memo } from 'react';
|
||||
import { useSelector } from 'react-redux';
|
||||
|
||||
import { createLogger } from '../../logging/log.std.js';
|
||||
import { getIntl, getUser } from '../selectors/user.std.js';
|
||||
import {
|
||||
getBackups,
|
||||
getLocalBackupWorkflow,
|
||||
shouldShowLocalBackupWorkflow,
|
||||
} from '../selectors/backups.std.js';
|
||||
import { useBackupActions } from '../ducks/backups.preload.js';
|
||||
import { LocalBackupExportWorkflow } from '../../components/LocalBackupExportWorkflow.dom.js';
|
||||
import { useToastActions } from '../ducks/toast.preload.js';
|
||||
|
||||
const log = createLogger('smart/LocalBackupExportWorkflow');
|
||||
|
||||
export const SmartLocalBackupExportWorkflow = memo(
|
||||
function SmartLocalBackupExportWorkflow() {
|
||||
const backups = useSelector(getBackups);
|
||||
const workflow = useSelector(getLocalBackupWorkflow);
|
||||
const shouldWeRender = useSelector(shouldShowLocalBackupWorkflow);
|
||||
const { osName } = useSelector(getUser);
|
||||
|
||||
const i18n = useSelector(getIntl);
|
||||
|
||||
const { openFileInFolder } = useToastActions();
|
||||
const { cancelLocalBackupWorkflow, clearWorkflow } = useBackupActions();
|
||||
|
||||
const containerType = backups.workflow?.type;
|
||||
if (containerType !== 'local-backup') {
|
||||
log.error(
|
||||
`SmartLocalBackupExportWorkflow: containerType is ${containerType}!`
|
||||
);
|
||||
return;
|
||||
}
|
||||
if (!shouldWeRender) {
|
||||
log.error('SmartLocalBackupExportWorkflow: shouldWeRender=false!');
|
||||
return;
|
||||
}
|
||||
if (!workflow) {
|
||||
log.error('SmartLocalBackupExportWorkflow: no workflow!');
|
||||
return;
|
||||
}
|
||||
|
||||
return (
|
||||
<LocalBackupExportWorkflow
|
||||
cancelWorkflow={cancelLocalBackupWorkflow}
|
||||
clearWorkflow={clearWorkflow}
|
||||
i18n={i18n}
|
||||
openFileInFolder={openFileInFolder}
|
||||
osName={osName}
|
||||
workflow={workflow}
|
||||
/>
|
||||
);
|
||||
}
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import { createLogger } from '../../logging/log.std.js';
|
||||
import { getIntl, getUser } from '../selectors/user.std.js';
|
||||
import {
|
||||
getBackups,
|
||||
getWorkflow,
|
||||
getPlaintextWorkflow,
|
||||
shouldShowPlaintextWorkflow,
|
||||
} from '../selectors/backups.std.js';
|
||||
import { useBackupActions } from '../ducks/backups.preload.js';
|
||||
@@ -20,7 +20,7 @@ const log = createLogger('smart/PlaintextExportWorkflow');
|
||||
export const SmartPlaintextExportWorkflow = memo(
|
||||
function SmartPlaintextExportWorkflow() {
|
||||
const backups = useSelector(getBackups);
|
||||
const workflow = useSelector(getWorkflow);
|
||||
const workflow = useSelector(getPlaintextWorkflow);
|
||||
const shouldWeRender = useSelector(shouldShowPlaintextWorkflow);
|
||||
const { osName } = useSelector(getUser);
|
||||
|
||||
|
||||
@@ -228,7 +228,7 @@ export function SmartPreferences(): React.JSX.Element | null {
|
||||
const { changeLocation } = useNavActions();
|
||||
const { showToast } = useToastActions();
|
||||
const { internalAddDonationReceipt } = useDonationsActions();
|
||||
const { startPlaintextExport } = useBackupActions();
|
||||
const { startPlaintextExport, startLocalBackupExport } = useBackupActions();
|
||||
|
||||
// Selectors
|
||||
|
||||
@@ -289,8 +289,6 @@ export function SmartPreferences(): React.JSX.Element | null {
|
||||
};
|
||||
|
||||
const validateBackup = () => backupsService._internalValidate();
|
||||
const exportLocalBackup = () =>
|
||||
backupsService._internalExportLocalEncryptedBackup();
|
||||
const pickLocalBackupFolder = () => backupsService.pickLocalBackupFolder();
|
||||
|
||||
const doDeleteAllData = () => renderClearingDataView();
|
||||
@@ -564,6 +562,7 @@ export function SmartPreferences(): React.JSX.Element | null {
|
||||
backupSubscriptionStatus,
|
||||
backupTier,
|
||||
cloudBackupStatus,
|
||||
lastLocalBackup,
|
||||
localBackupFolder,
|
||||
backupMediaDownloadCompletedBytes,
|
||||
backupMediaDownloadTotalBytes,
|
||||
@@ -821,7 +820,6 @@ export function SmartPreferences(): React.JSX.Element | null {
|
||||
defaultConversationColor={defaultConversationColor}
|
||||
deviceName={deviceName}
|
||||
emojiSkinToneDefault={emojiSkinToneDefault}
|
||||
exportLocalBackup={exportLocalBackup}
|
||||
phoneNumber={phoneNumber}
|
||||
doDeleteAllData={doDeleteAllData}
|
||||
editCustomColor={editCustomColor}
|
||||
@@ -874,6 +872,7 @@ export function SmartPreferences(): React.JSX.Element | null {
|
||||
isSyncSupported={isSyncSupported}
|
||||
isSystemTraySupported={isSystemTraySupported}
|
||||
isInternalUser={isInternalUser}
|
||||
lastLocalBackup={lastLocalBackup}
|
||||
lastSyncTime={lastSyncTime}
|
||||
localBackupFolder={localBackupFolder}
|
||||
localeOverride={localeOverride}
|
||||
@@ -960,6 +959,7 @@ export function SmartPreferences(): React.JSX.Element | null {
|
||||
setSettingsLocation={setSettingsLocation}
|
||||
shouldShowUpdateDialog={shouldShowUpdateDialog}
|
||||
showToast={showToast}
|
||||
startLocalBackupExport={startLocalBackupExport}
|
||||
startPlaintextExport={startPlaintextExport}
|
||||
theme={theme}
|
||||
themeSetting={themeSetting}
|
||||
|
||||
Reference in New Issue
Block a user