From 63e125738ddf4d4d89cf53fb92c065ff37221fc1 Mon Sep 17 00:00:00 2001 From: zhom <2717306+zhom@users.noreply.github.com> Date: Thu, 7 Aug 2025 01:11:19 +0400 Subject: [PATCH] refactor: force ui refreshe after group changes --- src/app/page.tsx | 5 ++++ src/components/group-management-dialog.tsx | 33 ++++++++++++++-------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 56b7198..fcedc7f 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -638,6 +638,10 @@ export default function Home() { setSelectedProfilesForGroup([]); }, [loadProfiles, loadGroups]); + const handleGroupManagementComplete = useCallback(async () => { + await loadGroups(); + }, [loadGroups]); + useEffect(() => { void loadProfilesWithUpdateCheck(); void loadGroups(); @@ -845,6 +849,7 @@ export default function Home() { onClose={() => { setGroupManagementDialogOpen(false); }} + onGroupManagementComplete={handleGroupManagementComplete} /> void; + onGroupManagementComplete: () => void; } export function GroupManagementDialog({ isOpen, onClose, + onGroupManagementComplete, }: GroupManagementDialogProps) { const [groups, setGroups] = useState([]); const [isLoading, setIsLoading] = useState(false); @@ -60,21 +62,30 @@ export function GroupManagementDialog({ } }, []); - const handleGroupCreated = useCallback((newGroup: ProfileGroup) => { - setGroups((prev) => [...prev, newGroup]); - }, []); + const handleGroupCreated = useCallback( + (newGroup: ProfileGroup) => { + setGroups((prev) => [...prev, newGroup]); + onGroupManagementComplete(); + }, + [onGroupManagementComplete], + ); - const handleGroupUpdated = useCallback((updatedGroup: ProfileGroup) => { - setGroups((prev) => - prev.map((group) => - group.id === updatedGroup.id ? updatedGroup : group, - ), - ); - }, []); + const handleGroupUpdated = useCallback( + (updatedGroup: ProfileGroup) => { + setGroups((prev) => + prev.map((group) => + group.id === updatedGroup.id ? updatedGroup : group, + ), + ); + onGroupManagementComplete(); + }, + [onGroupManagementComplete], + ); const handleGroupDeleted = useCallback(() => { void loadGroups(); - }, [loadGroups]); + onGroupManagementComplete(); + }, [loadGroups, onGroupManagementComplete]); const handleEditGroup = useCallback((group: ProfileGroup) => { setSelectedGroup(group);