Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

use-move-file.ts 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { useSetModalState } from '@/hooks/common-hooks';
  2. import { UseRowSelectionType } from '@/hooks/logic-hooks/use-row-selection';
  3. import { useMoveFile } from '@/hooks/use-file-request';
  4. import { useCallback, useRef, useState } from 'react';
  5. export const useHandleMoveFile = ({
  6. clearRowSelection,
  7. }: Pick<UseRowSelectionType, 'clearRowSelection'>) => {
  8. const {
  9. visible: moveFileVisible,
  10. hideModal: hideMoveFileModal,
  11. showModal: showMoveFileModal,
  12. } = useSetModalState();
  13. const { moveFile, loading } = useMoveFile();
  14. const [sourceFileIds, setSourceFileIds] = useState<string[]>([]);
  15. const isBulkRef = useRef(false);
  16. const onMoveFileOk = useCallback(
  17. async (targetFolderId: string) => {
  18. const ret = await moveFile({
  19. src_file_ids: sourceFileIds,
  20. dest_file_id: targetFolderId,
  21. });
  22. if (ret === 0) {
  23. if (isBulkRef.current) {
  24. clearRowSelection();
  25. }
  26. hideMoveFileModal();
  27. }
  28. return ret;
  29. },
  30. [moveFile, sourceFileIds, hideMoveFileModal, clearRowSelection],
  31. );
  32. const handleShowMoveFileModal = useCallback(
  33. (ids: string[], isBulk = false) => {
  34. isBulkRef.current = isBulk;
  35. setSourceFileIds(ids);
  36. showMoveFileModal();
  37. },
  38. [showMoveFileModal],
  39. );
  40. return {
  41. initialValue: '',
  42. moveFileLoading: loading,
  43. onMoveFileOk,
  44. moveFileVisible,
  45. hideMoveFileModal,
  46. showMoveFileModal: handleShowMoveFileModal,
  47. };
  48. };
  49. export type UseMoveDocumentReturnType = ReturnType<typeof useHandleMoveFile>;
  50. export type UseMoveDocumentShowType = Pick<
  51. ReturnType<typeof useHandleMoveFile>,
  52. 'showMoveFileModal'
  53. >;