first
Deploy Iddaai Frontend / build-and-deploy (push) Successful in 4m0s

This commit is contained in:
2026-04-16 13:36:34 +03:00
parent de5e145c4e
commit fc7a1ba567
218 changed files with 32370 additions and 0 deletions
+128
View File
@@ -0,0 +1,128 @@
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
import { adminService } from "./service";
import type {
AdminPaginationParams,
UpdateSettingDto,
UpdateUserRoleDto,
UpdateUserSubscriptionDto,
} from "./types";
export const AdminQueryKeys = {
all: ["admin"] as const,
analytics: () => [...AdminQueryKeys.all, "analytics"] as const,
settings: () => [...AdminQueryKeys.all, "settings"] as const,
usageLimits: (params?: AdminPaginationParams) =>
[...AdminQueryKeys.all, "usageLimits", params] as const,
users: (params?: AdminPaginationParams) =>
[...AdminQueryKeys.all, "users", params] as const,
user: (id: string) => [...AdminQueryKeys.all, "user", id] as const,
};
// Analytics
export const useAdminAnalytics = () => {
return useQuery({
queryKey: AdminQueryKeys.analytics(),
queryFn: () => adminService.getAnalyticsOverview(),
});
};
// Settings
export const useAdminSettings = () => {
return useQuery({
queryKey: AdminQueryKeys.settings(),
queryFn: () => adminService.getAllSettings(),
});
};
export const useUpdateSetting = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({ key, dto }: { key: string; dto: UpdateSettingDto }) =>
adminService.updateSetting(key, dto),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: AdminQueryKeys.settings() });
},
});
};
// Usage Limits
export const useAdminUsageLimits = (params?: AdminPaginationParams) => {
return useQuery({
queryKey: AdminQueryKeys.usageLimits(params),
queryFn: () => adminService.getAllUsageLimits(params),
});
};
export const useResetAllUsageLimits = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: () => adminService.resetAllUsageLimits(),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: AdminQueryKeys.usageLimits() });
},
});
};
// Users
export const useAdminUsers = (params?: AdminPaginationParams) => {
return useQuery({
queryKey: AdminQueryKeys.users(params),
queryFn: () => adminService.getAllUsers(params),
});
};
export const useAdminUserById = (id: string) => {
return useQuery({
queryKey: AdminQueryKeys.user(id),
queryFn: () => adminService.getUserById(id),
enabled: !!id,
});
};
export const useDeleteUser = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (id: string) => adminService.deleteUser(id),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: AdminQueryKeys.users() });
},
});
};
export const useUpdateUserRole = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({ id, dto }: { id: string; dto: UpdateUserRoleDto }) =>
adminService.updateUserRole(id, dto),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: AdminQueryKeys.users() });
},
});
};
export const useUpdateUserSubscription = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({ id, dto }: { id: string; dto: UpdateUserSubscriptionDto }) =>
adminService.updateUserSubscription(id, dto),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: AdminQueryKeys.users() });
},
});
};
export const useToggleUserActive = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (id: string) => adminService.toggleUserActive(id),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: AdminQueryKeys.users() });
},
});
};