improvement(credential-groups): align settings surface with the shared page patterns - #6727
Conversation
…d page patterns - drop the row "..." menu; a row opening a detail page carries the chevron only, and Delete moves to the detail header behind a confirm modal - replace the hand-rolled Save chip with saveDiscardActions, and wire useSettingsUnsavedGuard so detail edits survive tab switches - fix swapped staleTime constants: the list carried Infinity, which combined with the app-wide retryOnMount:false to cache one transient failure until a full page reload - evict the detail query on delete, and keep the bots prop referentially stable so a refetch cannot drop a queued Slack authorization message - reset the detail tab param on open and close so a stale link cannot open the next group on the previous group's tab - match peer rows (iconFilled + --text-icon), drop a bespoke max-w and a duplicated gap-7, align no-results copy and the Slack modal field gutter
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryMedium Risk Overview Detail editing moves name/description drafts to the detail panel. The header uses Query/cache fixes: swaps list vs detail Navigation/UX: resets the detail tab URL param when opening or closing a group; avoids list flash on deep links; stabilizes Slack modal Reviewed by Cursor Bugbot for commit 12fb50a. Configure here. |
Greptile SummaryThe PR aligns credential-group settings with shared settings-page patterns and improves editing, deletion, navigation, Slack setup, and query-cache behavior.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains.
|
| Filename | Overview |
|---|---|
| apps/sim/ee/credential-groups/components/credential-group-detail.tsx | Centralizes editable detail drafts and header actions, adds guarded back navigation, and moves deletion behind a confirmation modal. |
| apps/sim/ee/credential-groups/components/credential-group-details.tsx | Converts name and description fields to controlled inputs and stabilizes the empty Slack-bot collection passed to the setup modal. |
| apps/sim/ee/credential-groups/components/credential-group-invite-modal.tsx | Preserves mutation-provided invite errors while adding a consistent fallback message. |
| apps/sim/ee/credential-groups/components/credential-groups-settings.tsx | Removes row-level deletion, resets group-scoped tab state during transitions, and aligns list rows with shared settings patterns. |
| apps/sim/ee/credential-groups/components/slack-managed-users-modal.tsx | Refactors authorization cleanup and message handling so query-data identity changes do not recreate the BroadcastChannel listener. |
| apps/sim/hooks/queries/credential-groups.ts | Corrects list/detail freshness configuration and removes deleted credential-group detail cache entries. |
Reviews (3): Last reviewed commit: "fix(credential-groups): await the refetc..." | Re-trigger Greptile
Matches the data-drains list: a deep link whose id is still resolving no longer flashes the list chrome before jumping to the detail. Keys the detail by group id so lifted draft state can never carry across groups.
|
@cursor review |
…ffer The update mutation fired its invalidations without returning them, so mutateAsync resolved before the refetch landed. Callers that clear their draft on success then fell back onto the pre-save cache and flashed the old name and description until the refetch completed — or kept showing them if it failed.
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 522b3f5. Configure here.
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 12fb50a. Configure here.
Summary
...menu — a row that opens a detail page gets the chevron only; Delete moves to the detail header behind the confirm modalsaveDiscardActions, and wireuseSettingsUnsavedGuardso detail edits survive tab switches and warn on leavestaleTimeconstants: the list carriedInfinity, which combined with the app-wideretryOnMount: falseto cache one transient failure until a full page reloadbotsprop referentially stable so a refetch can't drop a queued Slack authorization messageiconFilled+--text-icon), drop a bespokemax-w-[560px]and a duplicatedgap-7, align no-results copy and the Slack modal's field gutterHeader actions are now tab-scoped (Details → Save/Discard, People → Invite users, Delete on both) so two primary chips never collide.
Type of Change
Testing
type-check,lint:check, all 26 audits, and 822 tests pass. Not verified in a browser.Checklist