Skip to content

Commit 76de7aa

Browse files
GimirMagomed-Elbi_Dzhukalaev
andauthored
feat: only cancel conflicting files on Cancel button click (#540)
Co-authored-by: Magomed-Elbi_Dzhukalaev <magomed-elbi_dzhukalaev@epam.com>
1 parent f5a89fe commit 76de7aa

File tree

6 files changed

+52
-5
lines changed

6 files changed

+52
-5
lines changed

src/components/FileManager/FileManager.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -566,16 +566,16 @@ export const DialFileManagerView: FC = () => {
566566

567567
conflictingFiles,
568568
conflictResolutionOpen,
569-
closeConflictResolution,
570569
handleConflictReplace,
571570
handleConflictDuplicate,
571+
handleConflictCancel,
572572
handleConflictDecideForEach,
573573

574574
uploadConflictingFiles,
575575
uploadConflictResolutionOpen,
576-
closeUploadConflictResolution,
577576
handleUploadConflictReplace,
578577
handleUploadConflictDuplicate,
578+
handleUploadConflictCancel,
579579
handleUploadConflictDecideForEach,
580580

581581
openMetadataPopup,
@@ -1318,7 +1318,7 @@ export const DialFileManagerView: FC = () => {
13181318
<ConflictResolutionPopup
13191319
{...conflictResolutionPopupOptions}
13201320
open={conflictResolutionOpen}
1321-
onClose={closeConflictResolution}
1321+
onClose={handleConflictCancel}
13221322
onReplace={handleConflictReplace}
13231323
onDuplicate={handleConflictDuplicate}
13241324
onDecideForEach={handleConflictDecideForEach}
@@ -1328,7 +1328,7 @@ export const DialFileManagerView: FC = () => {
13281328
<ConflictResolutionPopup
13291329
{...conflictResolutionPopupOptions}
13301330
open={uploadConflictResolutionOpen}
1331-
onClose={closeUploadConflictResolution}
1331+
onClose={handleUploadConflictCancel}
13321332
onReplace={handleUploadConflictReplace}
13331333
onDuplicate={handleUploadConflictDuplicate}
13341334
onDecideForEach={handleUploadConflictDecideForEach}

src/components/FileManager/FileManagerContext.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,15 @@ export interface FileManagerContextValue {
159159
conflictResolutionOpen: boolean;
160160
closeConflictResolution: () => void;
161161
handleConflictReplace: () => void;
162+
handleConflictCancel: () => void;
162163
handleConflictDuplicate: () => void;
163164
handleConflictDecideForEach: (decisions: FileConflictDecision[]) => void;
164165

165166
uploadConflictingFiles: DialFile[];
166167
uploadConflictResolutionOpen: boolean;
167168
closeUploadConflictResolution: () => void;
168169
handleUploadConflictReplace: () => void;
170+
handleUploadConflictCancel: () => void;
169171
handleUploadConflictDuplicate: () => void;
170172
handleUploadConflictDecideForEach: (
171173
decisions: FileConflictDecision[],

src/components/FileManager/FileManagerProvider.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@ export const FileManagerProvider: FC<FileManagerProviderProps> = ({
253253
closeConflictResolution,
254254
handleConflictReplace,
255255
handleConflictDuplicate,
256+
handleConflictCancel,
256257
handleConflictDecideForEach,
257258
sourceFolder,
258259
} = useFileClipboard({
@@ -310,6 +311,7 @@ export const FileManagerProvider: FC<FileManagerProviderProps> = ({
310311
closeUploadConflictResolution,
311312
handleUploadConflictReplace,
312313
handleUploadConflictDuplicate,
314+
handleUploadConflictCancel,
313315
handleUploadConflictDecideForEach,
314316
} = useFileUpload({
315317
onUploadFiles,
@@ -656,13 +658,15 @@ export const FileManagerProvider: FC<FileManagerProviderProps> = ({
656658
closeConflictResolution,
657659
handleConflictReplace,
658660
handleConflictDuplicate,
661+
handleConflictCancel,
659662
handleConflictDecideForEach,
660663

661664
uploadConflictingFiles,
662665
uploadConflictResolutionOpen,
663666
closeUploadConflictResolution,
664667
handleUploadConflictReplace,
665668
handleUploadConflictDuplicate,
669+
handleUploadConflictCancel,
666670
handleUploadConflictDecideForEach,
667671

668672
fileMetadataPopupOptions,

src/components/FileManager/hooks/use-conflict-resolution.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useCallback, useState, useRef } from 'react';
1+
import { useCallback, useRef, useState } from 'react';
22
import type { DialFile } from '@/models/file';
33
import { DialFileNodeType } from '@/models/file';
44
import type { DialCopiedItem } from '@/models/file-manager';
@@ -228,6 +228,32 @@ export const useConflictResolution = ({
228228
closeConflictResolution,
229229
]);
230230

231+
const handleCancelAll = useCallback(() => {
232+
if (!pendingOperation) return;
233+
const { files, destinationFolder, metadata } = pendingOperation;
234+
235+
const resolvedItems = resolveConflictsWithDecisions(
236+
destinationFolder,
237+
files,
238+
new Map(
239+
conflictingFiles.map((file) => [
240+
file.path,
241+
DialFileManagerConflictActions.Cancel,
242+
]),
243+
),
244+
metadata,
245+
);
246+
247+
onResolve?.(resolvedItems, destinationFolder);
248+
closeConflictResolution();
249+
}, [
250+
closeConflictResolution,
251+
conflictingFiles,
252+
onResolve,
253+
pendingOperation,
254+
resolveConflictsWithDecisions,
255+
]);
256+
231257
const handleDecideForEach = useCallback(
232258
(decisions: FileConflictDecision[]) => {
233259
if (!pendingOperation) return;
@@ -269,6 +295,7 @@ export const useConflictResolution = ({
269295

270296
handleReplaceAll,
271297
handleDuplicateAll,
298+
handleCancelAll,
272299
handleDecideForEach,
273300
};
274301
};

src/components/FileManager/hooks/use-file-clipboard.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export const useFileClipboard = ({
5454
openConflictResolution,
5555
handleReplaceAll: baseHandleReplaceAll,
5656
handleDuplicateAll: baseHandleDuplicateAll,
57+
handleCancelAll: baseHandleCancelAll,
5758
handleDecideForEach: baseHandleDecideForEach,
5859
} = useConflictResolution({
5960
getDestinationFiles,
@@ -153,6 +154,11 @@ export const useFileClipboard = ({
153154
clearState();
154155
}, [baseHandleDuplicateAll, clearState]);
155156

157+
const handleConflictCancel = useCallback(() => {
158+
baseHandleCancelAll();
159+
clearState();
160+
}, [baseHandleCancelAll, clearState]);
161+
156162
const handleConflictDecideForEach = useCallback(
157163
(decisions: FileConflictDecision[]) => {
158164
baseHandleDecideForEach(decisions);
@@ -245,6 +251,7 @@ export const useFileClipboard = ({
245251
openConflictResolution,
246252
closeConflictResolution,
247253
handleConflictReplace,
254+
handleConflictCancel,
248255
handleConflictDuplicate,
249256
handleConflictDecideForEach,
250257
sourceFolder,

src/components/FileManager/hooks/use-file-upload.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ export const useFileUpload = ({
114114
openConflictResolution,
115115
handleReplaceAll: baseHandleReplaceAll,
116116
handleDuplicateAll: baseHandleDuplicateAll,
117+
handleCancelAll: baseHandleCancelAll,
117118
handleDecideForEach: baseHandleDecideForEach,
118119
} = useConflictResolution({
119120
getDestinationFiles: () => existingFilesRef.current,
@@ -321,6 +322,11 @@ export const useFileUpload = ({
321322
clearUploadState();
322323
}, [baseHandleDuplicateAll, clearUploadState]);
323324

325+
const handleConflictCancel = useCallback(() => {
326+
baseHandleCancelAll();
327+
clearUploadState();
328+
}, [baseHandleCancelAll, clearUploadState]);
329+
324330
const handleConflictDecideForEach = useCallback(
325331
(decisions: FileConflictDecision[]) => {
326332
baseHandleDecideForEach(decisions);
@@ -595,6 +601,7 @@ export const useFileUpload = ({
595601
closeUploadConflictResolution: handleCloseConflictResolution,
596602
handleUploadConflictReplace: handleConflictReplace,
597603
handleUploadConflictDuplicate: handleConflictDuplicate,
604+
handleUploadConflictCancel: handleConflictCancel,
598605
handleUploadConflictDecideForEach: handleConflictDecideForEach,
599606
};
600607
};

0 commit comments

Comments
 (0)