From c09dc17867f7dfabd0ac768a92b2dfca02d4f050 Mon Sep 17 00:00:00 2001 From: ayumi-signal <143036029+ayumi-signal@users.noreply.github.com> Date: Tue, 2 Sep 2025 16:42:04 -0700 Subject: [PATCH] Fix remote config for configs with unspecified on-off values --- ts/RemoteConfig.ts | 2 +- ts/test-node/RemoteConfig_test.ts | 14 ++++++++++++++ ts/textsecure/WebAPI.ts | 1 - 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ts/RemoteConfig.ts b/ts/RemoteConfig.ts index 751518526d0..7043c389d0b 100644 --- a/ts/RemoteConfig.ts +++ b/ts/RemoteConfig.ts @@ -131,7 +131,7 @@ export const _refreshRemoteConfig = async ( const oldConfig = config; config = Array.from(newConfigValues.entries()).reduce( (acc, [name, value]) => { - const enabled = value !== undefined; + const enabled = value !== undefined && value !== 'false'; const previouslyEnabled: boolean = get( oldConfig, [name, 'enabled'], diff --git a/ts/test-node/RemoteConfig_test.ts b/ts/test-node/RemoteConfig_test.ts index af498fba48d..96fec568960 100644 --- a/ts/test-node/RemoteConfig_test.ts +++ b/ts/test-node/RemoteConfig_test.ts @@ -139,6 +139,20 @@ describe('RemoteConfig', () => { assert.equal(isEnabled('desktop.internalUser'), true); }); + it('is true for true string flag', async () => { + await updateRemoteConfig([ + { name: 'desktop.internalUser', value: 'true' }, + ]); + assert.equal(isEnabled('desktop.internalUser'), true); + }); + + it('is false for false string flag', async () => { + await updateRemoteConfig([ + { name: 'desktop.internalUser', value: 'false' }, + ]); + assert.equal(isEnabled('desktop.internalUser'), false); + }); + it('reflects the value of an unknown flag in the config', async () => { assert.equal( isEnabled('desktop.unknownFlagName' as ConfigKeyType), diff --git a/ts/textsecure/WebAPI.ts b/ts/textsecure/WebAPI.ts index 05153103510..ce080b72957 100644 --- a/ts/textsecure/WebAPI.ts +++ b/ts/textsecure/WebAPI.ts @@ -700,7 +700,6 @@ const CHAT_CALLS = { batchIdentityCheck: 'v1/profile/identity_check/batch', boostReceiptCredentials: 'v1/subscription/boost/receipt_credentials', challenge: 'v1/challenge', - config: 'v1/config', configV2: 'v2/config', createBoost: 'v1/subscription/boost/create', deliveryCert: 'v1/certificate/delivery',