feat: refactor ResourceExceptionsPanel and related hooks; remove unused availability logic and simplify resource detail management
This commit is contained in:
@@ -10,6 +10,8 @@ import type {
|
||||
* آدرس محل نوبتدهی است — پس فیلترها با `address_uuid` کار میکنند نه `branch_id`.
|
||||
*/
|
||||
const RESOURCES_KEY = 'resources';
|
||||
/** کلیدِ کوئریِ صفحهٔ جزئیات — `useResourceDetail` هم از همین میسازد. */
|
||||
const RESOURCE_DETAIL_KEY = 'resource-detail';
|
||||
const TYPES_KEY = ['resource-types'];
|
||||
const SKILLS_KEY = ['skills'];
|
||||
const POOLS_KEY = ['resource-pools'];
|
||||
@@ -36,7 +38,16 @@ function toQuery(filters: ResourceFilters): string {
|
||||
|
||||
export function useResources(filters: ResourceFilters = {}) {
|
||||
const qc = useQueryClient();
|
||||
const invalidate = () => qc.invalidateQueries({ queryKey: [RESOURCES_KEY] });
|
||||
|
||||
/**
|
||||
* هر جهش روی یک منبع، هم فهرست را کهنه میکند هم صفحهٔ جزئیاتِ همان منبع را —
|
||||
* دو کوئری با دو کلید جدا (`resources` و `resource-detail`). فقط باطلکردن فهرست
|
||||
* یعنی صفحهٔ جزئیات تا رفرشِ دستی مقدار قدیمی را نشان میدهد.
|
||||
*/
|
||||
const invalidate = () => {
|
||||
qc.invalidateQueries({ queryKey: [RESOURCES_KEY] });
|
||||
qc.invalidateQueries({ queryKey: [RESOURCE_DETAIL_KEY] });
|
||||
};
|
||||
|
||||
const query = useQuery({
|
||||
queryKey: [RESOURCES_KEY, filters],
|
||||
@@ -77,11 +88,7 @@ export function useResources(filters: ResourceFilters = {}) {
|
||||
const setCategories = useMutation({
|
||||
mutationFn: ({ uuid, categoryUuids }: { uuid: string; categoryUuids: string[] }) =>
|
||||
api.put<ApiResponse<ClinicResource>>(`/api/v1/resource/${uuid}/categories`, { category_uuids: categoryUuids }),
|
||||
onSuccess: () => {
|
||||
toast.success('دستهبندیهای منبع ذخیره شد');
|
||||
invalidate();
|
||||
qc.invalidateQueries({ queryKey: ['resource-detail'] });
|
||||
},
|
||||
onSuccess: () => { toast.success('دستهبندیهای منبع ذخیره شد'); invalidate(); },
|
||||
onError: (e) => fail(e, 'ذخیرهٔ دستهبندیها ناموفق بود'),
|
||||
});
|
||||
|
||||
@@ -234,7 +241,7 @@ export function useResourcePools() {
|
||||
*/
|
||||
export function useResourceDetail(uuid: string | undefined) {
|
||||
const query = useQuery({
|
||||
queryKey: ['resource-detail', uuid],
|
||||
queryKey: [RESOURCE_DETAIL_KEY, uuid],
|
||||
queryFn: () =>
|
||||
api.get<ApiResponse<ClinicResource & { upcoming_appointments: number }>>(
|
||||
`/api/v1/resource/${uuid}`,
|
||||
|
||||
Reference in New Issue
Block a user