mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-04-02 00:07:56 +01:00
Add feature flag for local backups
This commit is contained in:
@@ -30,34 +30,36 @@ const log = createLogger('RemoteConfig');
|
||||
|
||||
// Semver flags must always be set to a valid semver (no empty enabled-only keys)
|
||||
const SemverKeys = [
|
||||
'desktop.adminDelete.receive.beta',
|
||||
'desktop.adminDelete.receive.prod',
|
||||
'desktop.adminDelete.send.beta',
|
||||
'desktop.adminDelete.send.prod',
|
||||
'desktop.binaryServiceId.beta',
|
||||
'desktop.binaryServiceId.prod',
|
||||
'desktop.callQualitySurvey.beta',
|
||||
'desktop.callQualitySurvey.prod',
|
||||
'desktop.donationPaypal.beta',
|
||||
'desktop.donationPaypal.prod',
|
||||
'desktop.groupMemberLabels.edit.beta',
|
||||
'desktop.groupMemberLabels.edit.prod',
|
||||
'desktop.adminDelete.receive.beta',
|
||||
'desktop.adminDelete.receive.prod',
|
||||
'desktop.adminDelete.send.beta',
|
||||
'desktop.adminDelete.send.prod',
|
||||
'desktop.keyTransparency.beta',
|
||||
'desktop.keyTransparency.prod',
|
||||
'desktop.localBackups.beta',
|
||||
'desktop.localBackups.prod',
|
||||
'desktop.pinnedMessages.receive.beta',
|
||||
'desktop.pinnedMessages.receive.prod',
|
||||
'desktop.pinnedMessages.send.beta',
|
||||
'desktop.pinnedMessages.send.prod',
|
||||
'desktop.plaintextExport.beta',
|
||||
'desktop.plaintextExport.prod',
|
||||
'desktop.pollSend1to1.beta',
|
||||
'desktop.pollSend1to1.prod',
|
||||
'desktop.remoteMegaphone.beta',
|
||||
'desktop.remoteMegaphone.prod',
|
||||
'desktop.remoteMute.send.beta',
|
||||
'desktop.remoteMute.send.prod',
|
||||
'desktop.retireAccessKeyGroupSend.beta',
|
||||
'desktop.retireAccessKeyGroupSend.prod',
|
||||
'desktop.keyTransparency.beta',
|
||||
'desktop.keyTransparency.prod',
|
||||
'desktop.binaryServiceId.beta',
|
||||
'desktop.binaryServiceId.prod',
|
||||
'desktop.pollSend1to1.beta',
|
||||
'desktop.pollSend1to1.prod',
|
||||
] as const;
|
||||
|
||||
export type SemverKeyType = ArrayValues<typeof SemverKeys>;
|
||||
@@ -72,10 +74,11 @@ const ScalarKeys = [
|
||||
'desktop.loggingErrorToasts',
|
||||
'desktop.mediaQuality.levels',
|
||||
'desktop.messageCleanup',
|
||||
'desktop.recentGifs.allowLegacyTenorCdnUrls',
|
||||
'desktop.retryRespondMaxAge',
|
||||
'desktop.senderKey.retry',
|
||||
'desktop.senderKeyMaxAge',
|
||||
'desktop.recentGifs.allowLegacyTenorCdnUrls',
|
||||
'global.adminDeleteMaxAgeInSeconds',
|
||||
'global.attachments.maxBytes',
|
||||
'global.attachments.maxReceiveBytes',
|
||||
'global.backups.mediaTierFallbackCdnNumber',
|
||||
@@ -85,10 +88,9 @@ const ScalarKeys = [
|
||||
'global.messageQueueTimeInSeconds',
|
||||
'global.nicknames.max',
|
||||
'global.nicknames.min',
|
||||
'global.normalDeleteMaxAgeInSeconds',
|
||||
'global.pinned_message_limit',
|
||||
'global.textAttachmentLimitBytes',
|
||||
'global.normalDeleteMaxAgeInSeconds',
|
||||
'global.adminDeleteMaxAgeInSeconds',
|
||||
] as const;
|
||||
|
||||
// These keys should always match those in Net.REMOTE_CONFIG_KEYS, prefixed by
|
||||
|
||||
@@ -80,7 +80,6 @@ import { renderToastManagerWithoutMegaphone } from './ToastManager.preload.js';
|
||||
import { useToastActions } from '../ducks/toast.preload.js';
|
||||
import { DataReader, DataWriter } from '../../sql/Client.preload.js';
|
||||
import { deleteAllMyStories } from '../../util/deleteAllMyStories.preload.js';
|
||||
import { isLocalBackupsEnabled } from '../../util/isLocalBackupsEnabled.dom.js';
|
||||
import { SmartPreferencesDonations } from './PreferencesDonations.preload.js';
|
||||
import { useDonationsActions } from '../ducks/donations.preload.js';
|
||||
import { generateDonationReceiptBlob } from '../../util/generateDonationReceipt.dom.js';
|
||||
@@ -580,7 +579,12 @@ export function SmartPreferences(): React.JSX.Element | null {
|
||||
Settings.isContentProtectionSupported(OS);
|
||||
const isContentProtectionNeeded = Settings.isContentProtectionNeeded(OS);
|
||||
|
||||
const backupLocalBackupsEnabled = isLocalBackupsEnabled(items.remoteConfig);
|
||||
const backupLocalBackupsEnabled = isFeaturedEnabledSelector({
|
||||
betaKey: 'desktop.localBackups.beta',
|
||||
prodKey: 'desktop.localBackups.prod',
|
||||
currentVersion: version,
|
||||
remoteConfig: items.remoteConfig,
|
||||
});
|
||||
const backupFreeMediaDays = getMessageQueueTime(items.remoteConfig) / DAY;
|
||||
|
||||
const isPlaintextExportEnabled = isFeaturedEnabledSelector({
|
||||
|
||||
@@ -1,26 +1,11 @@
|
||||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import * as RemoteConfig from '../RemoteConfig.dom.js';
|
||||
import { isTestOrMockEnvironment } from '../environment.std.js';
|
||||
import { isStagingServer } from './isStagingServer.dom.js';
|
||||
import { isNightly } from './version.std.js';
|
||||
import { isFeaturedEnabledNoRedux } from './isFeatureEnabled.dom.js';
|
||||
|
||||
export function isLocalBackupsEnabled(
|
||||
reduxConfig?: RemoteConfig.ConfigMapType
|
||||
): boolean {
|
||||
if (isStagingServer() || isTestOrMockEnvironment()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (RemoteConfig.isEnabled('desktop.internalUser', reduxConfig)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const version = window.getVersion?.();
|
||||
if (version != null) {
|
||||
return isNightly(version);
|
||||
}
|
||||
|
||||
return false;
|
||||
export function isLocalBackupsEnabled(): boolean {
|
||||
return isFeaturedEnabledNoRedux({
|
||||
betaKey: 'desktop.localBackups.beta',
|
||||
prodKey: 'desktop.localBackups.prod',
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user