From 56dcf1c24c4ecf7d70a03a0dd75ff0fdad91ada6 Mon Sep 17 00:00:00 2001 From: Oliver Bryan Date: Wed, 28 Jan 2026 17:23:52 +0000 Subject: [PATCH] useOrganisationMemberTimeTracking() hook --- .../src/lib/query/hooks/organisations.ts | 31 +++++++++++++++++++ packages/frontend/src/lib/query/keys.ts | 2 ++ 2 files changed, 33 insertions(+) diff --git a/packages/frontend/src/lib/query/hooks/organisations.ts b/packages/frontend/src/lib/query/hooks/organisations.ts index 41188f0..527634c 100644 --- a/packages/frontend/src/lib/query/hooks/organisations.ts +++ b/packages/frontend/src/lib/query/hooks/organisations.ts @@ -14,6 +14,20 @@ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { queryKeys } from "@/lib/query/keys"; import { apiClient } from "@/lib/server"; +export interface MemberTimeTrackingSession { + id: number; + userId: number; + issueId: number; + issueNumber: number; + projectKey: string; + timestamps: string[]; + endedAt: string | null; + createdAt: string | null; + workTimeMs: number; + breakTimeMs: number; + isRunning: boolean; +} + export function useOrganisations() { return useQuery({ queryKey: queryKeys.organisations.byUser(), @@ -39,6 +53,23 @@ export function useOrganisationMembers(organisationId?: number | null) { }); } +export function useOrganisationMemberTimeTracking(organisationId?: number | null, fromDate?: Date) { + return useQuery({ + queryKey: queryKeys.organisations.memberTimeTracking(organisationId ?? 0, fromDate?.toISOString()), + queryFn: async () => { + const { data, error } = await apiClient.organisationMemberTimeTracking({ + query: { + organisationId: organisationId ?? 0, + fromDate: fromDate, + }, + }); + if (error) throw new Error(error); + return (data ?? []) as MemberTimeTrackingSession[]; + }, + enabled: Boolean(organisationId), + }); +} + export function useCreateOrganisation() { const queryClient = useQueryClient(); diff --git a/packages/frontend/src/lib/query/keys.ts b/packages/frontend/src/lib/query/keys.ts index 67c3260..2c5903e 100644 --- a/packages/frontend/src/lib/query/keys.ts +++ b/packages/frontend/src/lib/query/keys.ts @@ -5,6 +5,8 @@ export const queryKeys = { all: ["organisations"] as const, byUser: () => [...queryKeys.organisations.all, "by-user"] as const, members: (orgId: number) => [...queryKeys.organisations.all, orgId, "members"] as const, + memberTimeTracking: (orgId: number, fromDate?: string) => + [...queryKeys.organisations.all, orgId, "member-time-tracking", fromDate ?? "all"] as const, }, projects: { all: ["projects"] as const,