refactor(arch): eliminate direct service calls in components — route all through hooks
New hook files: - useAuth.ts: useLogin, useSwitchDemoRole, useSwitchOrganization - useAI.ts: useParseNeed, useGenerateOfferEmail, useGenerateDecisionBrief, useParseListingText - useAssistant.ts: useAssistantSuggestions (useQuery), useAssistantAnswer (useMutation) - useOfferReport.ts: useOfferReportByInquiry, useCreateOfferReport, useUpdateOfferReport, useGenerateOfferReportPdf - useInquiryReport.ts: useInquiryReportByInquiry, useCreateInquiryReport, useUpdateInquiryReport, useFinalizeInquiryReport - useMarketReport.ts: useMarketReport - useWeighting.ts: useDefaultWeights (synchronous wrapper) - useUnitMatches.ts: useUnitMatchesMap, useUnitBundle, useBundleMatches (useMemo wrappers) Extended hooks: useProperties (add update/create/remove mutations), useNeeds (add useCreateNeed), useMatches (add useNeedMatchesForProperty, useAdditionalMatchesForInquiry), useReviewQueue (add useCreateReviewTask) Updated 21 components/pages: all direct service imports replaced with hooks. Deliberate exception: getRecommendedActions in DataQuality.tsx (pure sync utility, no provider access). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -6,9 +6,9 @@ import { SensitivityBadge } from './SensitivityBadge'
|
||||
import { SignalReviewStatusBadge } from './SignalReviewStatusBadge'
|
||||
import { FutureSignalDisclaimer } from './FutureSignalDisclaimer'
|
||||
import { useUpdateSignalReviewStatus } from '../../hooks/useFutureSignals'
|
||||
import { useCreateReviewTask } from '../../hooks/useReviewQueue'
|
||||
import { useShortlistStore } from '../../stores/shortlistStore'
|
||||
import { useToastStore } from '../../stores/toastStore'
|
||||
import { reviewService } from '../../services/reviewService'
|
||||
import { ReviewStatus } from '../../domain/enums'
|
||||
import type { FutureSignal } from '../../domain/futureSignal'
|
||||
|
||||
@@ -51,6 +51,7 @@ interface Props {
|
||||
|
||||
export function FutureSignalDetailPanel({ signal, onClose }: Props) {
|
||||
const updateStatus = useUpdateSignalReviewStatus()
|
||||
const createReviewTask = useCreateReviewTask()
|
||||
const { openAddDialog } = useShortlistStore()
|
||||
const showToast = useToastStore((s) => s.showToast)
|
||||
const [reviewTaskSent, setReviewTaskSent] = useState(false)
|
||||
@@ -75,14 +76,13 @@ export function FutureSignalDetailPanel({ signal, onClose }: Props) {
|
||||
}
|
||||
}
|
||||
|
||||
async function handleSendReview() {
|
||||
try {
|
||||
await reviewService.createReviewTask(signal.id)
|
||||
setReviewTaskSent(true)
|
||||
showToast('Prüfungsaufgabe erstellt.')
|
||||
} catch {
|
||||
showToast('Prüfungsaufgabe konnte nicht erstellt werden.', 'error')
|
||||
}
|
||||
function handleSendReview() {
|
||||
createReviewTask.mutate(signal.id, {
|
||||
onSuccess: () => {
|
||||
setReviewTaskSent(true)
|
||||
showToast('Prüfungsaufgabe erstellt.')
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
function handleShortlist() {
|
||||
|
||||
Reference in New Issue
Block a user