added tanstack query keys and hooks

This commit is contained in:
Oliver Bryan
2026-01-20 17:00:33 +00:00
parent 45343571f5
commit 8f11805bab
10 changed files with 459 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
import type { UserRecord, UserUpdateRequest } from "@sprint/shared";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { queryKeys } from "@/lib/query/keys";
import { user } from "@/lib/server";
export function useUserByUsername(username?: string | null) {
return useQuery<UserRecord>({
queryKey: queryKeys.users.byUsername(username ?? ""),
queryFn: () => user.byUsername(username ?? ""),
enabled: Boolean(username),
});
}
export function useUpdateUser() {
const queryClient = useQueryClient();
return useMutation<UserRecord, Error, UserUpdateRequest>({
mutationKey: ["users", "update"],
mutationFn: user.update,
onSuccess: (_data) => {
queryClient.invalidateQueries({ queryKey: queryKeys.users.all });
},
});
}
export function useUploadAvatar() {
const queryClient = useQueryClient();
return useMutation<string, Error, File>({
mutationKey: ["users", "upload-avatar"],
mutationFn: user.uploadAvatar,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: queryKeys.users.all });
},
});
}