Page MenuHomePhorge

D15456.1765035893.diff
No OneTemporary

Size
4 KB
Referenced Files
None
Subscribers
None

D15456.1765035893.diff

diff --git a/lib/backup/user-data-restore-context.js b/lib/backup/user-data-restore-context.js
--- a/lib/backup/user-data-restore-context.js
+++ b/lib/backup/user-data-restore-context.js
@@ -14,10 +14,12 @@
import { generateOpsToEstablishHoldersOnDevice } from '../actions/holder-actions.js';
import { logTypes, useDebugLogs } from '../components/debug-logs-context.js';
import { IdentityClientContext } from '../shared/identity-client-context.js';
+import { useIsCurrentUserStaff } from '../shared/staff-utils.js';
import { restoreUserDataStepsOrder } from '../types/backup-types.js';
import { databaseIdentifier } from '../types/database-identifier-types.js';
import type { QRAuthBackupData } from '../types/tunnelbroker/qr-code-auth-message-types.js';
import { getConfig } from '../utils/config.js';
+import { isDev } from '../utils/dev-utils.js';
import { BackupIsNewerError } from '../utils/errors.js';
import { withAuthMetadataOverride } from '../utils/identity-service.js';
import { useDispatchActionPromise } from '../utils/redux-promise-utils.js';
@@ -48,6 +50,7 @@
const { addLog } = useDebugLogs();
const restoreBackupState = useSelector(state => state.restoreBackupState);
const identityContext = React.useContext(IdentityClientContext);
+ const isCurrentUserStaff = useIsCurrentUserStaff();
invariant(identityContext, 'Identity client context not set');
const executeRestoreUserData = React.useCallback(
@@ -59,6 +62,20 @@
) => {
const { sqliteAPI } = getConfig();
+ const stepTimings: Array<{ step: string, duration: number }> = [];
+
+ const measureStepTime = async <T>(
+ stepName: string,
+ stepPromise: Promise<T>,
+ ): Promise<T> => {
+ const startTime = performance.now();
+ const result = await stepPromise;
+ const endTime = performance.now();
+ const duration = endTime - startTime;
+ stepTimings.push({ step: stepName, duration });
+ return result;
+ };
+
// Determine starting step based on current state
let startStepIndex = 0;
@@ -103,7 +120,7 @@
undefined,
{ step: 'restore_database' },
);
- await restoreUserDataPromise;
+ await measureStepTime('restore_database', restoreUserDataPromise);
}
// 2. Check database versions and migrate if needed
@@ -154,7 +171,10 @@
undefined,
{ step: 'migrate_backup_schema' },
);
- await migrateBackupSchemaPromise;
+ await measureStepTime(
+ 'migrate_backup_schema',
+ migrateBackupSchemaPromise,
+ );
}
// 3. Check store versions and migrate if needed
@@ -206,7 +226,10 @@
undefined,
{ step: 'run_restored_backup_migrations' },
);
- await runRestoredMigrationsPromise;
+ await measureStepTime(
+ 'run_restored_backup_migrations',
+ runRestoredMigrationsPromise,
+ );
}
// 4. Assign holders for the new device
@@ -230,7 +253,7 @@
undefined,
{ step: 'assign_new_holders' },
);
- await assignHoldersPromise;
+ await measureStepTime('assign_new_holders', assignHoldersPromise);
}
// 5. Remove local message infos
@@ -246,7 +269,10 @@
undefined,
{ step: 'remove_local_message_infos' },
);
- await removeLocalMessageInfosPromise;
+ await measureStepTime(
+ 'remove_local_message_infos',
+ removeLocalMessageInfosPromise,
+ );
}
// 6. Update peer device lists
@@ -280,7 +306,7 @@
undefined,
{ step: 'update_peers' },
);
- await updatePeersPromise;
+ await measureStepTime('update_peers', updatePeersPromise);
}
// 7. Copy content to main database
@@ -292,7 +318,10 @@
undefined,
{ step: 'copy_content_from_backup_db' },
);
- await copyContentPromise;
+ await measureStepTime(
+ 'copy_content_from_backup_db',
+ copyContentPromise,
+ );
}
// 8. Populate store
@@ -301,6 +330,23 @@
userID,
);
+ if ((isCurrentUserStaff || isDev) && stepTimings.length > 0) {
+ const totalTime = stepTimings.reduce(
+ (sum, timing) => sum + timing.duration,
+ 0,
+ );
+ const timingDetails = stepTimings
+ .map(
+ ({ step, duration }) => `${step}: ${(duration / 1000).toFixed(2)}s`,
+ )
+ .join('\n');
+
+ getConfig().showAlert(
+ 'Restore Timing Summary:',
+ `${timingDetails}\n\nTotal: ${(totalTime / 1000).toFixed(2)}s`,
+ );
+ }
+
dispatch({
type: setClientDBStoreActionType,
payload: clientDBStore,
@@ -311,6 +357,7 @@
dispatch,
dispatchActionPromise,
identityContext,
+ isCurrentUserStaff,
restoreBackupState,
],
);

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 6, 3:44 PM (20 h, 33 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5837354
Default Alt Text
D15456.1765035893.diff (4 KB)

Event Timeline