| import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; |
| import { |
| QueryKeys, |
| dataService, |
| promptPermissionsSchema, |
| memoryPermissionsSchema, |
| marketplacePermissionsSchema, |
| peoplePickerPermissionsSchema, |
| } from 'librechat-data-provider'; |
| import type { |
| UseQueryOptions, |
| UseMutationResult, |
| QueryObserverResult, |
| } from '@tanstack/react-query'; |
| import type * as t from 'librechat-data-provider'; |
|
|
| export const useGetRole = ( |
| roleName: string, |
| config?: UseQueryOptions<t.TRole>, |
| ): QueryObserverResult<t.TRole> => { |
| return useQuery<t.TRole>([QueryKeys.roles, roleName], () => dataService.getRole(roleName), { |
| refetchOnWindowFocus: false, |
| refetchOnReconnect: false, |
| refetchOnMount: false, |
| retry: false, |
| ...config, |
| }); |
| }; |
|
|
| export const useUpdatePromptPermissionsMutation = ( |
| options?: t.UpdatePromptPermOptions, |
| ): UseMutationResult< |
| t.UpdatePermResponse, |
| t.TError | undefined, |
| t.UpdatePromptPermVars, |
| unknown |
| > => { |
| const queryClient = useQueryClient(); |
| const { onMutate, onSuccess, onError } = options ?? {}; |
| return useMutation( |
| (variables) => { |
| promptPermissionsSchema.partial().parse(variables.updates); |
| return dataService.updatePromptPermissions(variables); |
| }, |
| { |
| onSuccess: (data, variables, context) => { |
| queryClient.invalidateQueries([QueryKeys.roles, variables.roleName]); |
| if (onSuccess) { |
| onSuccess(data, variables, context); |
| } |
| }, |
| onError: (...args) => { |
| const error = args[0]; |
| if (error != null) { |
| console.error('Failed to update prompt permissions:', error); |
| } |
| if (onError) { |
| onError(...args); |
| } |
| }, |
| onMutate, |
| }, |
| ); |
| }; |
|
|
| export const useUpdateAgentPermissionsMutation = ( |
| options?: t.UpdateAgentPermOptions, |
| ): UseMutationResult< |
| t.UpdatePermResponse, |
| t.TError | undefined, |
| t.UpdateAgentPermVars, |
| unknown |
| > => { |
| const queryClient = useQueryClient(); |
| const { onMutate, onSuccess, onError } = options ?? {}; |
| return useMutation( |
| (variables) => { |
| promptPermissionsSchema.partial().parse(variables.updates); |
| return dataService.updateAgentPermissions(variables); |
| }, |
| { |
| onSuccess: (data, variables, context) => { |
| queryClient.invalidateQueries([QueryKeys.roles, variables.roleName]); |
| if (onSuccess != null) { |
| onSuccess(data, variables, context); |
| } |
| }, |
| onError: (...args) => { |
| const error = args[0]; |
| if (error != null) { |
| console.error('Failed to update prompt permissions:', error); |
| } |
| if (onError != null) { |
| onError(...args); |
| } |
| }, |
| onMutate, |
| }, |
| ); |
| }; |
|
|
| export const useUpdateMemoryPermissionsMutation = ( |
| options?: t.UpdateMemoryPermOptions, |
| ): UseMutationResult< |
| t.UpdatePermResponse, |
| t.TError | undefined, |
| t.UpdateMemoryPermVars, |
| unknown |
| > => { |
| const queryClient = useQueryClient(); |
| const { onMutate, onSuccess, onError } = options ?? {}; |
| return useMutation( |
| (variables) => { |
| memoryPermissionsSchema.partial().parse(variables.updates); |
| return dataService.updateMemoryPermissions(variables); |
| }, |
| { |
| onSuccess: (data, variables, context) => { |
| queryClient.invalidateQueries([QueryKeys.roles, variables.roleName]); |
| if (onSuccess) { |
| onSuccess(data, variables, context); |
| } |
| }, |
| onError: (...args) => { |
| const error = args[0]; |
| if (error != null) { |
| console.error('Failed to update memory permissions:', error); |
| } |
| if (onError) { |
| onError(...args); |
| } |
| }, |
| onMutate, |
| }, |
| ); |
| }; |
|
|
| export const useUpdatePeoplePickerPermissionsMutation = ( |
| options?: t.UpdatePeoplePickerPermOptions, |
| ): UseMutationResult< |
| t.UpdatePermResponse, |
| t.TError | undefined, |
| t.UpdatePeoplePickerPermVars, |
| unknown |
| > => { |
| const queryClient = useQueryClient(); |
| const { onMutate, onSuccess, onError } = options ?? {}; |
| return useMutation( |
| (variables) => { |
| peoplePickerPermissionsSchema.partial().parse(variables.updates); |
| return dataService.updatePeoplePickerPermissions(variables); |
| }, |
| { |
| onSuccess: (data, variables, context) => { |
| queryClient.invalidateQueries([QueryKeys.roles, variables.roleName]); |
| if (onSuccess) { |
| onSuccess(data, variables, context); |
| } |
| }, |
| onError: (...args) => { |
| const error = args[0]; |
| if (error != null) { |
| console.error('Failed to update people picker permissions:', error); |
| } |
| if (onError) { |
| onError(...args); |
| } |
| }, |
| onMutate, |
| }, |
| ); |
| }; |
|
|
| export const useUpdateMarketplacePermissionsMutation = ( |
| options?: t.UpdateMarketplacePermOptions, |
| ): UseMutationResult< |
| t.UpdatePermResponse, |
| t.TError | undefined, |
| t.UpdateMarketplacePermVars, |
| unknown |
| > => { |
| const queryClient = useQueryClient(); |
| const { onMutate, onSuccess, onError } = options ?? {}; |
| return useMutation( |
| (variables) => { |
| marketplacePermissionsSchema.partial().parse(variables.updates); |
| return dataService.updateMarketplacePermissions(variables); |
| }, |
| { |
| onSuccess: (data, variables, context) => { |
| queryClient.invalidateQueries([QueryKeys.roles, variables.roleName]); |
| if (onSuccess) { |
| onSuccess(data, variables, context); |
| } |
| }, |
| onError: (...args) => { |
| const error = args[0]; |
| if (error != null) { |
| console.error('Failed to update marketplace permissions:', error); |
| } |
| if (onError) { |
| onError(...args); |
| } |
| }, |
| onMutate, |
| }, |
| ); |
| }; |
|
|