diff --git a/frontend/src/teams/ShareToTeamModal.test.tsx b/frontend/src/teams/ShareToTeamModal.test.tsx index 765614af..ad0ae043 100644 --- a/frontend/src/teams/ShareToTeamModal.test.tsx +++ b/frontend/src/teams/ShareToTeamModal.test.tsx @@ -477,6 +477,17 @@ describe('ShareToTeamModal credentials', () => { expect(text()).toContain('settings.connectors.share.forced'); }); + it('follows the mode once the connection loads after opening', async () => { + await render(); + await render(credentials({ hasWrites: true, mode: 'member' })); + expect(toggle('member').getAttribute('aria-checked')).toBe('true'); + // Member mode runs on each member's own account: nothing to confirm. + expect(body().querySelector('#share-confirm-writes')).toBeNull(); + await render(credentials({ hasWrites: true, forcedMode: 'owner' })); + expect(toggle('owner').getAttribute('aria-checked')).toBe('true'); + expect(toggle('member').disabled).toBe(true); + }); + describe('access settings of a connected tool', () => { const toolSettings = (values: Record = {}) => ({ success: true, diff --git a/frontend/src/teams/ShareToTeamModal.tsx b/frontend/src/teams/ShareToTeamModal.tsx index f0a1da2e..04bb045a 100644 --- a/frontend/src/teams/ShareToTeamModal.tsx +++ b/frontend/src/teams/ShareToTeamModal.tsx @@ -157,9 +157,19 @@ export default function ShareToTeamModal({ const [loadError, setLoadError] = useState(false); const [actionError, setActionError] = useState(null); + const savedCredentialMode = + credentials?.forcedMode ?? credentials?.mode ?? 'owner'; const [credentialMode, setCredentialMode] = useState<'owner' | 'member'>( - credentials?.forcedMode ?? credentials?.mode ?? 'owner', + savedCredentialMode, ); + // The caller may open the dialog before the tool's connection has loaded: + // follow the mode (or an admin's forced one) when it arrives or changes. + const [seenCredentialMode, setSeenCredentialMode] = + useState(savedCredentialMode); + if (savedCredentialMode !== seenCredentialMode) { + setSeenCredentialMode(savedCredentialMode); + setCredentialMode(savedCredentialMode); + } const [writesConfirmed, setWritesConfirmed] = useState(false); const needsWriteConfirm = !!credentials && credentialMode === 'owner' && credentials.hasWrites;