fix(FR-2979): display sender on shared folder invitations in summary page#7607
Open
agatha197 wants to merge 1 commit into
Open
fix(FR-2979): display sender on shared folder invitations in summary page#7607agatha197 wants to merge 1 commit into
agatha197 wants to merge 1 commit into
Conversation
Contributor
Author
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has required the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
Contributor
Coverage Report for react-coverage (./react)
File Coverage
|
||||||||||||||||||||||||||||||||||||||||||||
fa7cde6 to
26a8be8
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Fixes the Summary page invitation card showing an empty sender by applying the existing invitation-inviter-email capability check (already used in FolderInvitationResponseModal) so inviter_user_email is read on manager ≥25.6.0 while falling back to inviter on older managers.
Changes:
- Add
baiClient.supports('invitation-inviter-email')check inSummaryItemInvitation. - Render
inviter_user_emailwhen supported, fall back toinviterotherwise. - Add
'use memo'directive to the component.
26a8be8 to
147f8b1
Compare
3 tasks
147f8b1 to
25baf00
Compare
25baf00 to
f849b3a
Compare
nowgnuesLee
requested changes
May 28, 2026
…page Read `invitation.inviter_user_email` directly in both the Summary card and `FolderInvitationResponseModal`, with `|| '-'` fallback for empty values. Drops the `invitation-inviter-email` capability gating per review — the feature is already supported in LTS and the prior `inviter` legacy field has been collapsed by the backend (BA-6193). Backend follow-up tracked in BA-6228: `VFolderInvitationDTO` currently does not declare `inviter_user_email` as a separate response field, so until that lands the From field renders `-`.
f849b3a to
005aaf8
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Linked Jira: FR-2979
Backend counterpart: BA-6193 (merged, SSO empty-email)
Backend follow-up: BA-6228 (expose
inviter_user_emailas a separate DTO field)TL;DR
FR-2979 ("Summary page invitation card shows empty
From:") has two independent root causes. This PR fixes the frontend one. The other one is server-side and lives in BA-6193. Both need to land for FR-2979 to be fully resolved end-to-end.FolderInvitationResponseModalreadinvitation.inviterblindly. The legacy backend used to put the inviter email there, but manager v25.6.0 plans to expose it under a separateinviter_user_emailfield. This PR gates the read with the existinginvitation-inviter-emailcapability flag and falls back to the legacyinviterfield for older managers.User.email = ""for SSO-created accounts and mirrors it straight into the invitation response, so the sender renders blank regardless of the field name; the accept handler'sif not inviter_emailcheck also raises on the empty string.After this PR alone: users invited by a manually-created sender on a manager that exposes
inviter_user_emailsee the sender's email again. Users whose inviter is an SSO-created account still see blank — unblocked only by BA-6193.What this PR does
Use the same capability-check pattern that
FolderInvitationResponseModal.tsxoriginally followed (added in FR-1101): readbaiClient.supports('invitation-inviter-email')and choose the field accordingly. Both call sites also fall back to'-'to avoid renderingFrom: undefinedwhen neither field has a value.react/src/components/FolderInvitationResponseModal.tsx— adduseSuspendedBackendaiClient+hasInviterEmail, render(hasInviterEmail ? item.inviter_user_email : item.inviter) || '-'in the "From" descriptions item.react/src/components/SummaryPageItems/SummaryItemInvitation.tsx— same gating in the card title.Known limitation (and the backend follow-up that unblocks it)
The current
VFolderInvitationDTO(src/ai/backend/common/dto/manager/vfolder/response.pyinlablup/backend.ai) only declares the singleinviterfield:The handler collapses both possibilities into that field (
inviter=info.inviter_user_email or info.inviter_username or ""). So on managers where the capability flag is true but the DTO has not yet been expanded withinviter_user_email, this PR will renderFrom: -for every invitation. Older managers (capability = false) continue to read the legacyinviterfield and work as before.The backend side needs to add
inviter_user_emailas a separate DTO field for the capability-gated branch to actually show the email. Tracked separately in BA-6228 — until that lands, manager ≥ 25.6.0 will renderFrom: -for every invitation. Older managers (capability = false) continue to read the legacyinviterfield and work as before.What this PR explicitly does NOT fix — and why the frontend can't
The SSO-side problem above is not addressable from the client:
is_sso/external_idflag, so the frontend cannot even differentiate SSO rows to apply a special UI.So the fix has to land where the empty email originates — the backend. See BA-6193.
Verification
bash scripts/verify.sh— Relay, Lint, Format PASS. TypeScript surfaces only pre-existing failures in unrelated files; no new errors in the touched files.inviter_user_email; the Summary card and the invitation modal both show the inviter's email. On a manager that only returnsinviter(current main), both fall back to the legacy field and render correctly. SSO-related rows remain blank, expected until BA-6193 lands.Checklist
FolderInvitationResponseModal"From:" field both show the inviter's email (or-if not available on the current manager)