Files
property-match/src/hooks/useFutureSignals.ts
T
Benjamin Sutter efc72b720e fix: P0 stabilisation — score modifiers, logout cache clear, provider isolation, mutation error feedback
- scoreCalculator: apply dataQuality/confidence modifiers to finalScore (were computed but hardcoded to 0)
- authService: call queryClient.clear() on logout to prevent cross-session data leakage
- queryClient: extract to src/lib/queryClient.ts singleton so services can access it without circular imports
- matchSyncService: new service layer owns match-generation logic; MockupNeedProvider no longer imports other providers directly
- hooks (11 files): add onError + German toast feedback to every useMutation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 00:13:14 +02:00

63 lines
2.0 KiB
TypeScript

import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'
import { futureSignalService } from '../services/futureSignalService'
import type { ReviewStatus } from '../domain/enums'
import { STALE_SIGNALS } from '../lib/constants'
import { useToastStore } from '../stores/toastStore'
export function useFutureSignals() {
return useQuery({
queryKey: ['futureSignals'],
queryFn: () => futureSignalService.getAll(),
staleTime: STALE_SIGNALS,
select: (res) => res.data ?? [],
})
}
export function useFutureSignal(id: string) {
return useQuery({
queryKey: ['futureSignal', id],
queryFn: () => futureSignalService.getById(id),
staleTime: STALE_SIGNALS,
enabled: !!id,
select: (res) => res.data ?? null,
})
}
export function useFutureSignalsByProperty(propertyId: string) {
return useQuery({
queryKey: ['futureSignals', 'property', propertyId],
queryFn: () => futureSignalService.getByProperty(propertyId),
staleTime: STALE_SIGNALS,
enabled: Boolean(propertyId),
select: (res) => res.data ?? [],
})
}
export function useVerifySignal() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: (signalId: string) => futureSignalService.verify(signalId, 'admin@ideal-sharing.ch'),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['futureSignals'] })
},
onError: () => {
useToastStore.getState().showToast('Signal konnte nicht verifiziert werden.', 'error')
},
})
}
export function useUpdateSignalReviewStatus() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: ({ id, status }: { id: string; status: ReviewStatus }) =>
futureSignalService.updateReviewStatus(id, status),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['futureSignals'] })
queryClient.invalidateQueries({ queryKey: ['futureSignal'] })
},
onError: () => {
useToastStore.getState().showToast('Status konnte nicht aktualisiert werden.', 'error')
},
})
}