diff --git a/src/renderer/src/components/settings/cloud-secrets/CloudSecretList.tsx b/src/renderer/src/components/settings/cloud-secrets/CloudSecretList.tsx index ff9ec2de66d..2870cf1988e 100644 --- a/src/renderer/src/components/settings/cloud-secrets/CloudSecretList.tsx +++ b/src/renderer/src/components/settings/cloud-secrets/CloudSecretList.tsx @@ -22,6 +22,8 @@ export type CloudSecretPeople = { viewerUserId: string | null /** Display name for a teammate, or null when the roster does not know them. */ nameFor: (userId: string) => string | null + /** True once the team roster has loaded (so a user missing from it has left the team). */ + rosterLoaded?: boolean } export type CloudSecretListMode = diff --git a/src/renderer/src/components/settings/cloud-secrets/CloudSecretsActivity.tsx b/src/renderer/src/components/settings/cloud-secrets/CloudSecretsActivity.tsx index b8b6834fb98..df08df1150a 100644 --- a/src/renderer/src/components/settings/cloud-secrets/CloudSecretsActivity.tsx +++ b/src/renderer/src/components/settings/cloud-secrets/CloudSecretsActivity.tsx @@ -47,7 +47,9 @@ function ActivityRow({ ? t('cloudSecrets.activity.byYou', 'You') : (people.nameFor(event.actor.userId) ?? event.actor.name ?? - t('cloudSecrets.activity.byTeammate', 'A teammate')) + (people.rosterLoaded && event.orgId + ? t('cloudSecrets.activity.byFormerTeammate', 'A former teammate') + : t('cloudSecrets.activity.bySomeone', 'Someone'))) return (
  • {actionLabel(event.action, t)} @@ -58,7 +60,7 @@ function ActivityRow({ : cloudSecretScopeLabel(event.scope, t)} {t('cloudSecrets.activity.byWhen', '{{who}} ยท {{when}}', { diff --git a/src/renderer/src/components/settings/cloud-secrets/CloudSecretsPane.fixture.tsx b/src/renderer/src/components/settings/cloud-secrets/CloudSecretsPane.fixture.tsx index 015ebb243eb..a253ab27d83 100644 --- a/src/renderer/src/components/settings/cloud-secrets/CloudSecretsPane.fixture.tsx +++ b/src/renderer/src/components/settings/cloud-secrets/CloudSecretsPane.fixture.tsx @@ -18,7 +18,7 @@ const REPOS: CloudSecretRepoChoice[] = [ { key: 'github.com/acme/web', label: 'acme/web' }, { key: 'github.com/acme/api', label: 'acme/api' } ] -const people = { nameFor: (userId: string) => FIXTURE_NAMES[userId] ?? null } +const people = { nameFor: (userId: string) => FIXTURE_NAMES[userId] ?? null, rosterLoaded: true } const noop = (): void => {} function Frame({ children }: { children: React.ReactNode }): React.JSX.Element { @@ -340,7 +340,7 @@ export const activityAdmin = defineFixture({ + return } /** Shown only where Orca Cloud is offered to this account. */ diff --git a/src/renderer/src/components/settings/cloud-secrets/cloud-secrets-fixture-data.ts b/src/renderer/src/components/settings/cloud-secrets/cloud-secrets-fixture-data.ts index e603f0c75f3..ad19678f42a 100644 --- a/src/renderer/src/components/settings/cloud-secrets/cloud-secrets-fixture-data.ts +++ b/src/renderer/src/components/settings/cloud-secrets/cloud-secrets-fixture-data.ts @@ -143,7 +143,8 @@ export const FIXTURE_TEAM_ACTIVITY: CloudSecretEvent[] = [ event(5, 'created', 'org', 'ANTHROPIC_MODEL', 30, 'u_dana'), event(6, 'created', 'org', 'AI_GATEWAY_API_KEY', 30, 'u_dana'), // A member who has since left the team: no roster name, so it reads "A teammate". - event(7, 'created', 'org', 'NPM_TOKEN', 170, 'u_gone') + event(7, 'created', 'org', 'NPM_TOKEN', 170, 'u_gone'), + event(8, 'created', 'org', 'SENTRY_DSN', 400, 'u_ravi') ] export const FIXTURE_PERSONAL_ACTIVITY: CloudSecretEvent[] = [