diff --git a/stores/__tests__/settings-store-sync.test.ts b/stores/__tests__/settings-store-sync.test.ts index 0a0ad153a..671179a15 100644 --- a/stores/__tests__/settings-store-sync.test.ts +++ b/stores/__tests__/settings-store-sync.test.ts @@ -52,20 +52,41 @@ describe('settings sync debounce', () => { }); }); - it('defaults the signature auto-insert toggles and the separator to off, and exports all three', () => { + it('defaults the signature auto-insert toggles to on and exports them', () => { const settings = useSettingsStore.getState(); - expect(settings.signatureNewMailEnabled).toBe(false); - expect(settings.signatureReplyForwardEnabled).toBe(false); + expect(settings.signatureNewMailEnabled).toBe(true); + expect(settings.signatureReplyForwardEnabled).toBe(true); expect(settings.signatureSeparatorEnabled).toBe(false); const exported = JSON.parse(settings.exportSettings()) as Record; expect(exported).toMatchObject({ - signatureNewMailEnabled: false, - signatureReplyForwardEnabled: false, + signatureNewMailEnabled: true, + signatureReplyForwardEnabled: true, signatureSeparatorEnabled: false, }); }); + it('keeps inserting the signature for users whose saved settings predate the toggles', async () => { + useSettingsStore.getState().resetToDefaults(); + // Saved by a build without the toggles: the keys are missing. + localStorage.setItem('settings-storage', JSON.stringify({ + state: { signaturePosition: 'below_quote', signatureSeparatorEnabled: true }, + version: 12, + })); + await useSettingsStore.persist.rehydrate(); + expect(useSettingsStore.getState().signatureNewMailEnabled).toBe(true); + expect(useSettingsStore.getState().signatureReplyForwardEnabled).toBe(true); + + // A server copy written by such a build has no toggles either. + useSettingsStore.getState().importSettings( + JSON.stringify({ signaturePosition: 'above_quote' }), + { serverAccountId: 'a@example.com' }, + ); + expect(useSettingsStore.getState().signatureNewMailEnabled).toBe(true); + expect(useSettingsStore.getState().signatureReplyForwardEnabled).toBe(true); + localStorage.removeItem('settings-storage'); + }); + it('does not rewrite a pending account snapshot after another account becomes active', async () => { const settings = useSettingsStore.getState(); settings.enableSync('a@example.com', 'https://mail-a.example.com'); diff --git a/stores/settings-store.ts b/stores/settings-store.ts index 56b69fa93..fa5cd60aa 100644 --- a/stores/settings-store.ts +++ b/stores/settings-store.ts @@ -932,8 +932,10 @@ const DEFAULT_SETTINGS = { subAddressDelimiter: DEFAULT_SUB_ADDRESS_DELIMITER, sendDelaySeconds: 0 as SendDelaySeconds, signaturePosition: 'below_quote' as SignaturePosition, - signatureNewMailEnabled: false, - signatureReplyForwardEnabled: false, + // On, as before the toggles existed: saved settings and server copies + // from older builds lack these keys and fall back to this default. + signatureNewMailEnabled: true, + signatureReplyForwardEnabled: true, signatureSeparatorEnabled: false, signatureDetails: EMPTY_SIGNATURE_DETAILS, requestReadReceiptDefault: false,