feat(frontend): config history and schedule rollback hooks

This commit is contained in:
2026-03-17 14:43:12 +01:00
parent 45c05b5720
commit 6bfb148e39
2 changed files with 96 additions and 0 deletions

View File

@@ -117,3 +117,69 @@ export function useEpg(channelId: string, from?: string, until?: string, channel
enabled: !!channelId,
});
}
export function useConfigHistory(channelId: string) {
const { token } = useAuthContext();
return useQuery({
queryKey: ["config-history", channelId],
queryFn: () => api.channels.listConfigHistory(channelId, token!),
enabled: !!token && !!channelId,
});
}
export function usePinSnapshot() {
const { token } = useAuthContext();
const qc = useQueryClient();
return useMutation({
mutationFn: ({ channelId, snapId, label }: { channelId: string; snapId: string; label: string | null }) =>
api.channels.patchConfigSnapshot(channelId, snapId, label, token!),
onSuccess: (_, { channelId }) => qc.invalidateQueries({ queryKey: ["config-history", channelId] }),
onError: (e: Error) => toast.error(e.message),
});
}
export function useRestoreConfig() {
const { token } = useAuthContext();
const qc = useQueryClient();
return useMutation({
mutationFn: ({ channelId, snapId }: { channelId: string; snapId: string }) =>
api.channels.restoreConfigSnapshot(channelId, snapId, token!),
onSuccess: (_, { channelId }) => {
qc.invalidateQueries({ queryKey: ["channels"] });
qc.invalidateQueries({ queryKey: ["config-history", channelId] });
},
onError: (e: Error) => toast.error(e.message),
});
}
export function useScheduleHistory(channelId: string) {
const { token } = useAuthContext();
return useQuery({
queryKey: ["schedule-history", channelId],
queryFn: () => api.channels.listScheduleHistory(channelId, token!),
enabled: !!token && !!channelId,
});
}
export function useScheduleGeneration(channelId: string, genId: string | null) {
const { token } = useAuthContext();
return useQuery({
queryKey: ["schedule-generation", channelId, genId],
queryFn: () => api.channels.getScheduleGeneration(channelId, genId!, token!),
enabled: !!token && !!channelId && genId !== null,
});
}
export function useRollbackSchedule() {
const { token } = useAuthContext();
const qc = useQueryClient();
return useMutation({
mutationFn: ({ channelId, genId }: { channelId: string; genId: string }) =>
api.channels.rollbackSchedule(channelId, genId, token!),
onSuccess: (_, { channelId }) => {
qc.invalidateQueries({ queryKey: ["schedule-history", channelId] });
qc.invalidateQueries({ queryKey: ["schedule", channelId] });
},
onError: (e: Error) => toast.error(e.message),
});
}