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:
@@ -0,0 +1,31 @@
|
||||
import { useMutation } from '@tanstack/react-query'
|
||||
import { useNavigate } from 'react-router'
|
||||
import { authService } from '../services/authService'
|
||||
import type { UserRole } from '../domain/enums'
|
||||
|
||||
export function useLogin() {
|
||||
const navigate = useNavigate()
|
||||
return useMutation({
|
||||
mutationFn: ({ email, password }: { email: string; password: string }) =>
|
||||
authService.login(email, password),
|
||||
onSuccess: () => {
|
||||
navigate('/')
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
export function useSwitchDemoRole() {
|
||||
const navigate = useNavigate()
|
||||
return useMutation({
|
||||
mutationFn: (role: UserRole) => authService.switchDemoRole(role),
|
||||
onSuccess: () => {
|
||||
navigate('/')
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
export function useSwitchOrganization() {
|
||||
return useMutation({
|
||||
mutationFn: (organizationId: string) => authService.switchOrganization(organizationId),
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user