feat: enhancements (#2107)

* refactor
* fix
* update packages
This commit is contained in:
Philip Okugbe
2026-04-13 23:34:40 +01:00
committed by GitHub
parent bd68e47e03
commit 4056bd0104
18 changed files with 412 additions and 155 deletions
@@ -1,13 +1,27 @@
import { useMemo } from "react";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import {
watchSpace,
unwatchSpace,
getSpaceWatchStatus,
getWatchedSpaceIds,
} from "@/features/space/services/space-watcher-service";
import { notifications } from "@mantine/notifications";
import { useTranslation } from "react-i18next";
const SPACE_WATCHER_KEY = "space-watcher";
const WATCHED_SPACE_IDS_KEY = "watched-space-ids";
export function useWatchedSpaceIds(): Set<string> {
const { data } = useQuery({
queryKey: [WATCHED_SPACE_IDS_KEY],
queryFn: () => getWatchedSpaceIds(),
refetchOnMount: true,
});
const items = data?.items;
return useMemo(() => new Set(items ?? []), [items]);
}
export function useSpaceWatchStatusQuery(spaceId: string) {
return useQuery({
@@ -27,6 +41,14 @@ export function useWatchSpaceMutation() {
queryClient.setQueryData([SPACE_WATCHER_KEY, spaceId], {
watching: true,
});
queryClient.setQueryData(
[WATCHED_SPACE_IDS_KEY],
(old: { items: string[]; meta: any } | undefined) => {
if (!old) return old;
if (old.items.includes(spaceId)) return old;
return { ...old, items: [...old.items, spaceId] };
},
);
notifications.show({ message: t("You are now watching this space") });
},
});
@@ -41,6 +63,13 @@ export function useUnwatchSpaceMutation() {
queryClient.setQueryData([SPACE_WATCHER_KEY, spaceId], {
watching: false,
});
queryClient.setQueryData(
[WATCHED_SPACE_IDS_KEY],
(old: { items: string[]; meta: any } | undefined) => {
if (!old) return old;
return { ...old, items: old.items.filter((id) => id !== spaceId) };
},
);
notifications.show({
message: t("You are no longer watching this space"),
});