diff --git a/src/components/settings/ContentSendersSettings.tsx b/src/components/settings/ContentSendersSettings.tsx
index e33824c4..95d0e518 100644
--- a/src/components/settings/ContentSendersSettings.tsx
+++ b/src/components/settings/ContentSendersSettings.tsx
@@ -13,6 +13,7 @@ import { useHasContacts } from '../../lib/capabilities';
import { isTrustedSendersSyncOn } from '../../lib/trusted-senders';
import { removeTrustedSenderWithUndo } from '../../lib/settings-undo';
import { useLocaleStore } from '../../stores/locale-store';
+import { usePolicyFeature, useSettingHidden, useSettingLocked } from '../../stores/policy-store';
import { MODAL_ORIENTATIONS } from '../../lib/modal-orientations';
import { useSheetBottomInset } from '../../lib/sheet-bottom-inset';
import { ToastHost } from '../ToastHost';
@@ -31,6 +32,12 @@ export function ContentSendersSettings() {
const t = useLocaleStore((s) => s.t);
const externalContentPolicy = useSettingsStore((s) => s.externalContentPolicy);
const setExternalContentPolicy = useSettingsStore((s) => s.setExternalContentPolicy);
+ // The organisation can take the option away or pin it (webmail
+ // reading-settings.tsx).
+ const externalContentAllowed = usePolicyFeature('externalContentEnabled');
+ const externalContentHidden = useSettingHidden('externalContentPolicy');
+ const externalContentLocked = useSettingLocked('externalContentPolicy');
+ const showExternalContent = externalContentAllowed && !externalContentHidden;
const emailAlwaysLightMode = useSettingsStore((s) => s.emailAlwaysLightMode);
const setEmailAlwaysLightMode = useSettingsStore((s) => s.setEmailAlwaysLightMode);
const trustedSenders = useSettingsStore((s) => s.trustedSenders);
@@ -134,20 +141,23 @@ export function ContentSendersSettings() {
title={t('settings.tabs.content_senders', 'Content & Senders')}
description={t('settings.email_behavior.content_senders_description_mobile', 'Control how external resources and tracking pixels are handled.')}
>
-
- setExternalContentPolicy(v as ExternalContentPolicy)}
- options={[
- { value: 'ask', label: t('settings.email_behavior.external_content.ask_mobile', 'Ask') },
- { value: 'block', label: t('settings.email_behavior.external_content.block_mobile', 'Block') },
- { value: 'allow', label: t('settings.email_behavior.external_content.allow_mobile', 'Allow') },
- ]}
- />
-
+ {showExternalContent && (
+
+ setExternalContentPolicy(v as ExternalContentPolicy)}
+ options={[
+ { value: 'ask', label: t('settings.email_behavior.external_content.ask_mobile', 'Ask') },
+ { value: 'block', label: t('settings.email_behavior.external_content.block_mobile', 'Block') },
+ { value: 'allow', label: t('settings.email_behavior.external_content.allow_mobile', 'Allow') },
+ ]}
+ />
+
+ )}
{
expect(page).toMatch(/\{tasksAllowed && \(\s* {
+ const page = settings('ContentSendersSettings');
+ expect(page).toContain("const externalContentAllowed = usePolicyFeature('externalContentEnabled');");
+ expect(page).toContain("const externalContentHidden = useSettingHidden('externalContentPolicy');");
+ expect(page).toContain('const showExternalContent = externalContentAllowed && !externalContentHidden;');
+ expect(page).toMatch(/\{showExternalContent && \(\s*