Phase 20: Admin Member Editor & Form Declutter #25

Merged
luckberg merged 37 commits from gsd/phase-20-admin-member-editor-form-declutter into main 2026-06-18 20:40:35 -04:00
Showing only changes of commit 5161bd39c2 - Show all commits
@@ -270,11 +270,15 @@ export function MemberEditorSheet({
payload.displayName = trimmed; payload.displayName = trimmed;
} }
if (isAdmin !== member.isAdmin) payload.isAdmin = isAdmin; if (isAdmin !== member.isAdmin) payload.isAdmin = isAdmin;
// No-op guard — nothing changed, skip the network call // No-op guard — nothing changed, skip the network call and signal no write
if (Object.keys(payload).length === 0) return; // (IN-04: avoids firing the "Profile saved." toast + refetch on a no-op save).
if (Object.keys(payload).length === 0) return false;
await updateMemberProfile(member.id, payload); await updateMemberProfile(member.id, payload);
return true;
}, },
onSuccess: () => { onSuccess: (changed) => {
// IN-04: only surface success feedback when an actual write occurred.
if (!changed) return;
void queryClient.invalidateQueries({ queryKey: ['admin', 'members'] }); void queryClient.invalidateQueries({ queryKey: ['admin', 'members'] });
onToast('Profile saved.'); onToast('Profile saved.');
// Sheet stays open — per-section save (D-05) // Sheet stays open — per-section save (D-05)