diff --git a/client/src/mobile/screens/settings/MSettingsIntegrations.tsx b/client/src/mobile/screens/settings/MSettingsIntegrations.tsx index f35f204e1..f423da303 100644 --- a/client/src/mobile/screens/settings/MSettingsIntegrations.tsx +++ b/client/src/mobile/screens/settings/MSettingsIntegrations.tsx @@ -16,10 +16,11 @@ export default function MSettingsIntegrations() { return ( <> - - {airtrailEnabled && } - {/* Reaches a server the reader runs themselves, which a managed install has - no route to — the same gate the desktop shell puts on AirTrail. */} + {/* Immich, Synology Photos, AirTrail and Dawarich all reach a server the reader + runs themselves, which a managed install has no route to: the same gate the + desktop shell puts on them. */} + {!managed && } + {airtrailEnabled && !managed && } {dawarichEnabled && !managed && } {/* Which model reads a booking, and what that costs, comes with the instance on a managed install. The per-user fallback exists for people who supply their diff --git a/client/tests/unit/mobile/settings/MSettingsIntegrations.test.tsx b/client/tests/unit/mobile/settings/MSettingsIntegrations.test.tsx index f78690c9a..af4791a33 100644 --- a/client/tests/unit/mobile/settings/MSettingsIntegrations.test.tsx +++ b/client/tests/unit/mobile/settings/MSettingsIntegrations.test.tsx @@ -3,6 +3,7 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { render, screen } from '../../../helpers/render'; import { resetAllStores, seedStore } from '../../../helpers/store'; import { useAddonStore } from '../../../../src/store/addonStore'; +import { useAuthStore } from '../../../../src/store/authStore'; import MSettingsIntegrations from '../../../../src/mobile/screens/settings/MSettingsIntegrations'; // The four sections are covered by their own suites — stub them so this file @@ -94,4 +95,14 @@ describe('MSettingsIntegrations', () => { expect(loadAddons).toHaveBeenCalledTimes(1); }); + + it('FE-MOB-SETINT-008: a managed install hides the photo providers and AirTrail, as the desktop does', () => { + seedAddons(['airtrail', 'mcp']); + seedStore(useAuthStore, { managed: true }); + render(); + + expect(screen.queryByTestId('photo-providers')).not.toBeInTheDocument(); + expect(screen.queryByTestId('airtrail')).not.toBeInTheDocument(); + expect(screen.getByTestId('mcp')).toBeInTheDocument(); + }); });