Files
goodgo-platform/apps/web/lib/hooks/use-inquiries.ts
Ho Ngoc Hai eebe24e1ae fix(docker): MinIO healthcheck curl probe + Redis password in .env.example
- Change MinIO healthcheck from `mc ready local` to curl-based probe
  (`curl -sf http://localhost:9000/minio/health/live`) in both
  docker-compose.yml and docker-compose.prod.yml, matching the
  approach already used in docker-compose.ci.yml
- Add descriptive placeholder for REDIS_PASSWORD in .env.example
  (was empty, now has CHANGE_ME_IN_PRODUCTION reminder)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-15 11:23:34 +07:00

48 lines
1.6 KiB
TypeScript

import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
import { inquiriesApi, type ListInquiriesParams, type CreateInquiryDto } from '@/lib/inquiries-api';
export const inquiriesKeys = {
all: ['inquiries'] as const,
myInquiries: (params: ListInquiriesParams) => ['inquiries', 'my', params] as const,
byListing: (listingId: string, params: ListInquiriesParams) =>
['inquiries', 'listing', listingId, params] as const,
};
export function useMyInquiries(params: ListInquiriesParams = {}) {
return useQuery({
queryKey: inquiriesKeys.myInquiries(params),
queryFn: () => inquiriesApi.getMyInquiries(params),
});
}
export function useInquiriesByListing(listingId: string, params: ListInquiriesParams = {}) {
return useQuery({
queryKey: inquiriesKeys.byListing(listingId, params),
queryFn: () => inquiriesApi.getByListing(listingId, params),
enabled: !!listingId,
});
}
export function useMarkInquiryRead() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (id: string) => inquiriesApi.markAsRead(id),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: inquiriesKeys.all });
},
});
}
export function useCreateInquiry() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (data: CreateInquiryDto) => inquiriesApi.create(data),
onSuccess: (_data, variables) => {
queryClient.invalidateQueries({ queryKey: inquiriesKeys.all });
queryClient.invalidateQueries({
queryKey: inquiriesKeys.byListing(variables.listingId, {}),
});
},
});
}