feat: enable trusted-senders address book sync by default when contacts are available

This commit is contained in:
Linus Rath
2026-07-09 13:59:52 +02:00
parent 38313639ed
commit c47137fb49
3 changed files with 14 additions and 3 deletions
@@ -67,7 +67,7 @@ export function ContentSendersSettings() {
<SettingItem label={t('trusted_senders.use_address_book_label')} description={t('trusted_senders.use_address_book_description')}>
<ToggleSwitch
checked={trustedSendersAddressBook}
checked={!!trustedSendersAddressBook}
onChange={(checked) => updateSetting('trustedSendersAddressBook', checked)}
/>
</SettingItem>
+7
View File
@@ -280,6 +280,13 @@ function initializeFeatureStores(client: IJMAPClient): void {
contactStore.setSupportsSync(true);
contactStore.fetchAddressBooks(client).catch((err) => debug.error('Failed to fetch address books:', err));
contactStore.fetchContacts(client).catch((err) => debug.error('Failed to fetch contacts:', err));
// Default trusted-sender syncing on when contacts are available, unless the
// user has already made an explicit choice (`null` = not yet decided).
const settings = useSettingsStore.getState();
if (settings.trustedSendersAddressBook === null) {
settings.updateSetting('trustedSendersAddressBook', true);
}
} else {
useContactStore.getState().setSupportsSync(false);
}
+6 -2
View File
@@ -188,7 +188,11 @@ interface SettingsState {
// Privacy & Security
sessionTimeout: number; // minutes (0 = never)
trustedSenders: string[]; // Email addresses that can load external content
trustedSendersAddressBook: boolean; // Store trusted senders in a dedicated JMAP address book
// Store trusted senders in a dedicated JMAP address book so they sync across
// devices. `null` means "not yet decided": resolved on first connect to
// `true` when the server supports contacts, otherwise left off. Once the user
// toggles it, it holds a concrete boolean and is never auto-changed again.
trustedSendersAddressBook: boolean | null;
// Filters
expandedFilterView: boolean;
@@ -398,7 +402,7 @@ const DEFAULT_SETTINGS = {
// Privacy & Security
sessionTimeout: 0, // Never
trustedSenders: [] as string[],
trustedSendersAddressBook: false,
trustedSendersAddressBook: null as boolean | null,
// Filters
expandedFilterView: false,