()
| 479 | } |
| 480 | |
| 481 | export function useRenameWorkspaceFile() { |
| 482 | const queryClient = useQueryClient() |
| 483 | |
| 484 | return useMutation({ |
| 485 | mutationFn: async ({ workspaceId, fileId, name }: RenameFileParams) => |
| 486 | requestJson(renameWorkspaceFileContract, { |
| 487 | params: { id: workspaceId, fileId }, |
| 488 | body: { name }, |
| 489 | }), |
| 490 | onMutate: async ({ workspaceId, fileId, name }) => { |
| 491 | await queryClient.cancelQueries({ queryKey: workspaceFilesKeys.workspaceLists(workspaceId) }) |
| 492 | const previous = queryClient.getQueryData<WorkspaceFileRecord[]>( |
| 493 | workspaceFilesKeys.list(workspaceId, 'active') |
| 494 | ) |
| 495 | if (previous) { |
| 496 | queryClient.setQueryData<WorkspaceFileRecord[]>( |
| 497 | workspaceFilesKeys.list(workspaceId, 'active'), |
| 498 | previous.map((f) => (f.id === fileId ? { ...f, name } : f)) |
| 499 | ) |
| 500 | } |
| 501 | return { previous } |
| 502 | }, |
| 503 | onError: (error, variables, context) => { |
| 504 | if (context?.previous) { |
| 505 | queryClient.setQueryData( |
| 506 | workspaceFilesKeys.list(variables.workspaceId, 'active'), |
| 507 | context.previous |
| 508 | ) |
| 509 | } |
| 510 | toast.error(error.message, { duration: 5000 }) |
| 511 | }, |
| 512 | onSettled: (_data, _error, variables) => { |
| 513 | queryClient.invalidateQueries({ |
| 514 | queryKey: workspaceFilesKeys.workspaceLists(variables.workspaceId), |
| 515 | }) |
| 516 | }, |
| 517 | }) |
| 518 | } |
| 519 | |
| 520 | /** |
| 521 | * Delete workspace file mutation |
no test coverage detected