@epam/ai-dial-chat-hooks 1.2.0-rc.1 → 1.3.0-dev.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/file-manager.d.ts +17 -4
- package/file-manager.js +25 -25
- package/files/dial-file-manager.model.js +7 -3
- package/files/dial-file-manager.types.js +1 -1
- package/files/useDialFileListing/useDialFileListing.js +24 -14
- package/files/useDialFileManager/useDialFileManager.js +148 -140
- package/files/useDialFileMutations/useDialFileMutations.js +206 -204
- package/files/useDialFileSharing/useDialFileSharing.js +45 -39
- package/index.d.ts +17 -4
- package/index.js +43 -43
- package/package.json +15 -15
|
@@ -1,280 +1,282 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
1
|
+
import { splitFileNameExtension as e } from "../file-name.js";
|
|
2
|
+
import { FileManagerNotificationReason as t, FileNameValidationErrorReason as n, FileOperationKind as r } from "../dial-file-manager.types.js";
|
|
3
|
+
import { RESERVED_MARKER_NAME as i } from "../dial-file-manager.model.js";
|
|
4
|
+
import { formatOperationFolderName as a, getVirtualPathName as o, hasForbiddenNameSymbols as s, parseNewFolderVirtualPath as c, resolveOwnerCoords as l } from "../dial-file-manager-path.util.js";
|
|
5
|
+
import { resolveDialFileApiPath as u, virtualPathToApiPath as d } from "../resolve-dial-file-api-path.js";
|
|
6
|
+
import { prepareCopyItems as f, prepareMoveRenameItems as p } from "../dial-file-manager-copy-move.util.js";
|
|
7
|
+
import { findFirstSuccessfulCopyMoveItem as m } from "../dial-file-manager-mapping.util.js";
|
|
8
|
+
import { DownloadDestinationType as h } from "../download-destination.js";
|
|
9
|
+
import { getParentFolderPath as g } from "@epam/ai-dial-chat-shared";
|
|
10
|
+
import { useCallback as _, useRef as v, useState as y } from "react";
|
|
11
|
+
import { ArchiveItemDtoNodeTypeEnum as b, CopyItemDtoNodeTypeEnum as x, DeleteItemDtoNodeTypeEnum as S, MoveItemDtoNodeTypeEnum as ee, RenameItemDtoNodeTypeEnum as C } from "@epam/ai-dial-chat-api-client";
|
|
12
|
+
import { NOT_ALLOWED_SYMBOLS as te, NotificationVariant as w } from "@epam/ai-dial-ui-kit";
|
|
13
|
+
import { DialFileManagerTabs as T, DialFileNodeType as E } from "@epam/ai-dial-react-file-manager";
|
|
13
14
|
//#region src/files/useDialFileMutations/useDialFileMutations.ts
|
|
14
|
-
var
|
|
15
|
-
let [ne,
|
|
16
|
-
let
|
|
17
|
-
if (!e || e.trim() === "")
|
|
18
|
-
else if (
|
|
19
|
-
reason:
|
|
20
|
-
symbols:
|
|
15
|
+
var D = ({ filesApi: D, bucket: O, rootLabel: k, activeTab: A, folderPath: j, currentFolder: M, sharedRootMetaRef: N, listingPermissionsCache: P, invalidateFolders: F, bumpRetry: I, mergeCreatedFolder: L, setFolderPath: R, onNotification: z, onOperationSuccess: B, downloadDestination: V, forbiddenSymbolsRegExp: H }) => {
|
|
16
|
+
let [ne, U] = y(!1), [re, W] = y(!1), [ie, G] = y(!1), [K, q] = y(!1), [J, Y] = y(!1), [X, ae] = y(!1), Z = v(null), Q = v(null), $ = _((e, t) => {
|
|
17
|
+
let r = null;
|
|
18
|
+
if (!e || e.trim() === "") r = { reason: n.Empty };
|
|
19
|
+
else if (s(e, H)) r = {
|
|
20
|
+
reason: n.ForbiddenSymbols,
|
|
21
|
+
symbols: te
|
|
21
22
|
};
|
|
22
|
-
else if (e ===
|
|
23
|
-
else if (e.length > 255)
|
|
24
|
-
reason:
|
|
23
|
+
else if (e === i) r = { reason: n.ReservedName };
|
|
24
|
+
else if (e.length > 255) r = {
|
|
25
|
+
reason: n.TooLong,
|
|
25
26
|
maxLength: 255
|
|
26
27
|
};
|
|
27
28
|
else {
|
|
28
|
-
let
|
|
29
|
-
o && (
|
|
30
|
-
reason:
|
|
29
|
+
let i = t.items ?? [], a = e.toLowerCase(), o = i.find((e) => e.name.toLowerCase() === a);
|
|
30
|
+
o && (r = {
|
|
31
|
+
reason: n.DuplicateName,
|
|
31
32
|
existingName: o.name
|
|
32
33
|
});
|
|
33
34
|
}
|
|
34
|
-
return Q.current =
|
|
35
|
-
}, [
|
|
36
|
-
let { parentVirtualPath: a, name: o } =
|
|
37
|
-
id:
|
|
38
|
-
path:
|
|
35
|
+
return Q.current = r, r;
|
|
36
|
+
}, [H]), oe = _(async (e, n, i) => {
|
|
37
|
+
let { parentVirtualPath: a, name: o } = c(n, k), s = d(a, k), u = M && j === s ? M : {
|
|
38
|
+
id: s,
|
|
39
|
+
path: s,
|
|
39
40
|
name: a.split("/").filter(Boolean).pop() ?? "",
|
|
40
|
-
folderId:
|
|
41
|
-
nodeType:
|
|
41
|
+
folderId: s,
|
|
42
|
+
nodeType: E.FOLDER,
|
|
42
43
|
items: []
|
|
43
44
|
}, f = Q.current;
|
|
44
|
-
if (Q.current = null, $(o,
|
|
45
|
-
|
|
46
|
-
let { bucket: p, path: m } =
|
|
47
|
-
bucket:
|
|
48
|
-
path:
|
|
45
|
+
if (Q.current = null, $(o, u) || f) return;
|
|
46
|
+
U(!0);
|
|
47
|
+
let { bucket: p, path: m } = A === T.Shared ? l(s, N.current, O) : {
|
|
48
|
+
bucket: O,
|
|
49
|
+
path: s
|
|
49
50
|
};
|
|
50
51
|
try {
|
|
51
|
-
|
|
52
|
+
L(s, await D.createFolder({
|
|
52
53
|
bucket: p,
|
|
53
54
|
parentPath: m,
|
|
54
55
|
name: o
|
|
55
|
-
}),
|
|
56
|
-
kind:
|
|
56
|
+
}), P.get(s)), I(), B?.({
|
|
57
|
+
kind: r.FolderCreated,
|
|
57
58
|
name: o
|
|
58
59
|
});
|
|
59
60
|
} catch {
|
|
60
|
-
|
|
61
|
-
variant:
|
|
62
|
-
reason:
|
|
61
|
+
z?.({
|
|
62
|
+
variant: w.Error,
|
|
63
|
+
reason: t.FolderCreateFailed
|
|
63
64
|
});
|
|
64
65
|
} finally {
|
|
65
|
-
|
|
66
|
+
U(!1);
|
|
66
67
|
}
|
|
67
68
|
}, [
|
|
68
|
-
|
|
69
|
+
A,
|
|
70
|
+
O,
|
|
71
|
+
M,
|
|
69
72
|
D,
|
|
70
73
|
j,
|
|
71
|
-
E,
|
|
72
|
-
A,
|
|
73
74
|
$,
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
k,
|
|
76
|
+
P,
|
|
77
|
+
L,
|
|
76
78
|
I,
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
]), oe = g((t) => {
|
|
79
|
+
B,
|
|
80
|
+
N,
|
|
81
|
+
z
|
|
82
|
+
]), se = _((e) => {
|
|
82
83
|
(async () => {
|
|
83
|
-
|
|
84
|
+
W(!0);
|
|
84
85
|
try {
|
|
85
|
-
let
|
|
86
|
-
if (
|
|
87
|
-
if (
|
|
88
|
-
let
|
|
89
|
-
if (!
|
|
90
|
-
let i =
|
|
86
|
+
let t = e.length === 1 ? e[0].nodeType === E.ITEM ? e[0].name : `${e[0].name}.zip` : "files.zip", n = await V.resolveDestination(t, e.length === 1 && e[0].nodeType === E.ITEM ? e[0].contentType ?? "application/octet-stream" : "application/zip");
|
|
87
|
+
if (n.type === h.Cancelled) return;
|
|
88
|
+
if (e.length === 1 && e[0].nodeType === E.ITEM) {
|
|
89
|
+
let t = e[0];
|
|
90
|
+
if (!t.bucket) throw Error("File is missing bucket");
|
|
91
|
+
let i = u(t, t.bucket, k), a = await D.downloadFile(t.bucket, i);
|
|
91
92
|
if (!a.ok) throw Error(`Download failed with status ${a.status}`);
|
|
92
|
-
let o = await
|
|
93
|
-
|
|
94
|
-
kind:
|
|
93
|
+
let o = await V.triggerDownload(a, t.name, n);
|
|
94
|
+
B?.({
|
|
95
|
+
kind: r.FileDownloaded,
|
|
95
96
|
name: o,
|
|
96
97
|
count: 1
|
|
97
98
|
});
|
|
98
99
|
} else {
|
|
99
|
-
let i =
|
|
100
|
-
bucket: e.bucket ??
|
|
101
|
-
path:
|
|
100
|
+
let i = e.map((e) => ({
|
|
101
|
+
bucket: e.bucket ?? O,
|
|
102
|
+
path: u(e, e.bucket ?? O, k),
|
|
102
103
|
name: e.name,
|
|
103
|
-
nodeType: e.nodeType ===
|
|
104
|
-
})), a = await
|
|
104
|
+
nodeType: e.nodeType === E.FOLDER ? b.Folder : b.Item
|
|
105
|
+
})), a = await D.downloadArchive(i);
|
|
105
106
|
if (!a.ok) throw Error(`Download failed with status ${a.status}`);
|
|
106
|
-
let o = await
|
|
107
|
-
|
|
108
|
-
kind:
|
|
107
|
+
let o = await V.triggerDownload(a, t, n);
|
|
108
|
+
e.length === 1 ? B?.({
|
|
109
|
+
kind: r.FileDownloaded,
|
|
109
110
|
name: o
|
|
110
|
-
}) :
|
|
111
|
-
kind:
|
|
112
|
-
count:
|
|
111
|
+
}) : B?.({
|
|
112
|
+
kind: r.FilesDownloaded,
|
|
113
|
+
count: e.length
|
|
113
114
|
});
|
|
114
115
|
}
|
|
115
116
|
} catch {
|
|
116
|
-
|
|
117
|
-
variant:
|
|
118
|
-
reason:
|
|
117
|
+
z?.({
|
|
118
|
+
variant: w.Error,
|
|
119
|
+
reason: e.length === 1 ? t.DownloadFileFailed : t.DownloadFilesFailed
|
|
119
120
|
});
|
|
120
121
|
} finally {
|
|
121
|
-
|
|
122
|
+
W(!1);
|
|
122
123
|
}
|
|
123
124
|
})();
|
|
124
125
|
}, [
|
|
125
|
-
D,
|
|
126
126
|
O,
|
|
127
|
+
k,
|
|
128
|
+
B,
|
|
127
129
|
z,
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
let t = e.nodeType === T.FOLDER, n = u(e.sourceUrl, O), i = t ? n : n.replace(/\/$/, "");
|
|
130
|
+
D,
|
|
131
|
+
V
|
|
132
|
+
]), ce = _((e, n) => {
|
|
133
|
+
e.length !== 0 && (async () => {
|
|
134
|
+
G(!0);
|
|
135
|
+
let r = [], i = e.map((e) => {
|
|
136
|
+
let t = e.nodeType === E.FOLDER, n = d(e.sourceUrl, k), i = t ? n : n.replace(/\/$/, "");
|
|
136
137
|
t && i !== "" && r.push(i.endsWith("/") ? i : `${i}/`);
|
|
137
|
-
let
|
|
138
|
-
bucket:
|
|
138
|
+
let a = o(e.sourceUrl, i), { bucket: s, path: c } = A === T.Shared ? l(i, N.current, O) : {
|
|
139
|
+
bucket: O,
|
|
139
140
|
path: i
|
|
140
141
|
};
|
|
141
142
|
return {
|
|
142
143
|
bucket: s,
|
|
143
|
-
path:
|
|
144
|
-
name:
|
|
145
|
-
nodeType: t ?
|
|
144
|
+
path: c,
|
|
145
|
+
name: a,
|
|
146
|
+
nodeType: t ? S.Folder : S.Item
|
|
146
147
|
};
|
|
147
148
|
});
|
|
148
149
|
try {
|
|
149
|
-
let { results:
|
|
150
|
-
if (o > 0 &&
|
|
151
|
-
variant:
|
|
152
|
-
reason:
|
|
150
|
+
let { results: e } = await D.deleteFiles(i), r = e.filter((e) => !e.success), a = r.length, o = e.length - a, s = e.find((e) => e.success), c = i.find((e) => e.path === s?.path) ?? i[0];
|
|
151
|
+
if (o > 0 && z?.({
|
|
152
|
+
variant: w.Success,
|
|
153
|
+
reason: t.FilesDeleted,
|
|
153
154
|
count: o,
|
|
154
155
|
name: c?.name,
|
|
155
|
-
folder: n ||
|
|
156
|
+
folder: n || k
|
|
156
157
|
}), a > 0) {
|
|
157
|
-
let
|
|
158
|
-
|
|
159
|
-
variant:
|
|
160
|
-
reason:
|
|
161
|
-
names:
|
|
158
|
+
let e = r.slice(0, 3).map((e) => i.find((t) => t.path === e.path)?.name ?? e.path), n = a - e.length;
|
|
159
|
+
z?.({
|
|
160
|
+
variant: w.Error,
|
|
161
|
+
reason: t.FilesDeletePartiallyFailed,
|
|
162
|
+
names: e,
|
|
162
163
|
restCount: n
|
|
163
164
|
});
|
|
164
165
|
}
|
|
165
166
|
} catch {
|
|
166
|
-
|
|
167
|
-
variant:
|
|
168
|
-
reason:
|
|
167
|
+
z?.({
|
|
168
|
+
variant: w.Error,
|
|
169
|
+
reason: t.DeleteFailed
|
|
169
170
|
});
|
|
170
171
|
}
|
|
171
|
-
|
|
172
|
-
if (e.nodeType ===
|
|
172
|
+
F([...new Set(i.map((e) => {
|
|
173
|
+
if (e.nodeType === S.Folder) return e.path.endsWith("/") ? e.path : `${e.path}/`;
|
|
173
174
|
let t = e.path.lastIndexOf("/");
|
|
174
175
|
return t > 0 ? e.path.slice(0, t + 1) : "";
|
|
175
176
|
}))]);
|
|
176
|
-
let
|
|
177
|
-
|
|
177
|
+
let a = r.filter((e) => j.startsWith(e)).reduce((e, t) => e == null || t.length < e.length ? t : e, void 0);
|
|
178
|
+
a != null && R(g(a)), I(), G(!1);
|
|
178
179
|
})();
|
|
179
180
|
}, [
|
|
181
|
+
A,
|
|
182
|
+
O,
|
|
180
183
|
k,
|
|
184
|
+
j,
|
|
185
|
+
z,
|
|
181
186
|
D,
|
|
182
|
-
|
|
183
|
-
A,
|
|
184
|
-
R,
|
|
185
|
-
E,
|
|
186
|
-
M,
|
|
187
|
-
P,
|
|
187
|
+
N,
|
|
188
188
|
F,
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
if (
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
189
|
+
I,
|
|
190
|
+
R
|
|
191
|
+
]), le = _((t, r) => {
|
|
192
|
+
if (!t || t.trim() === "") return { reason: n.Empty };
|
|
193
|
+
let a = r.nodeType === E.ITEM ? e(r.name).extension : "";
|
|
194
|
+
if (t === i || a !== "" && t === `${i}${a}`) return { reason: n.ReservedName };
|
|
195
|
+
if (s(t, H)) return {
|
|
196
|
+
reason: n.ForbiddenSymbols,
|
|
197
|
+
symbols: te
|
|
196
198
|
};
|
|
197
|
-
if (
|
|
198
|
-
reason:
|
|
199
|
+
if (t.length > 255) return {
|
|
200
|
+
reason: n.TooLong,
|
|
199
201
|
maxLength: 255
|
|
200
202
|
};
|
|
201
|
-
let
|
|
202
|
-
return
|
|
203
|
-
reason:
|
|
204
|
-
existingName:
|
|
203
|
+
let o = M?.items ?? [], c = t.toLowerCase(), l = o.find((e) => e.path !== r.path && e.name.toLowerCase() === c);
|
|
204
|
+
return l ? {
|
|
205
|
+
reason: n.DuplicateName,
|
|
206
|
+
existingName: l.name
|
|
205
207
|
} : null;
|
|
206
|
-
}, [
|
|
207
|
-
if (
|
|
208
|
-
let
|
|
209
|
-
Z.current =
|
|
210
|
-
|
|
211
|
-
let o =
|
|
208
|
+
}, [H, M]), ue = _((e, n) => {
|
|
209
|
+
if (e.length === 0 || J || X) return;
|
|
210
|
+
let i = new AbortController();
|
|
211
|
+
Z.current = i, (async () => {
|
|
212
|
+
Y(!0);
|
|
213
|
+
let o = f(e, O, k), s = o.map(({ dto: e }) => e);
|
|
212
214
|
try {
|
|
213
|
-
let { results:
|
|
215
|
+
let { results: e } = await D.copyFiles(s, i.signal), c = e.filter((e) => !e.success).length, l = e.length - c;
|
|
214
216
|
if (l > 0) {
|
|
215
|
-
let
|
|
216
|
-
c =
|
|
217
|
+
let t = m(o, e), i = s.every((e) => g(e.sourcePath) === g(e.destinationPath)), c;
|
|
218
|
+
c = i ? l === 1 ? r.FileDuplicated : r.FilesDuplicated : l === 1 ? r.FileCopied : r.FilesCopied, B?.({
|
|
217
219
|
kind: c,
|
|
218
|
-
name:
|
|
220
|
+
name: t?.destinationName,
|
|
219
221
|
count: l,
|
|
220
|
-
isFolder:
|
|
221
|
-
destinationFolderName:
|
|
222
|
+
isFolder: t?.dto.nodeType === x.Folder,
|
|
223
|
+
destinationFolderName: a(n, k)
|
|
222
224
|
});
|
|
223
225
|
}
|
|
224
|
-
c > 0 && c <
|
|
225
|
-
variant:
|
|
226
|
-
reason:
|
|
226
|
+
c > 0 && c < e.length ? z?.({
|
|
227
|
+
variant: w.Error,
|
|
228
|
+
reason: t.CopyPartiallyFailed,
|
|
227
229
|
count: c
|
|
228
|
-
}) : c ===
|
|
229
|
-
variant:
|
|
230
|
-
reason:
|
|
230
|
+
}) : c === e.length && z?.({
|
|
231
|
+
variant: w.Error,
|
|
232
|
+
reason: t.CopyFailed
|
|
231
233
|
});
|
|
232
234
|
} catch {
|
|
233
|
-
|
|
234
|
-
variant:
|
|
235
|
-
reason:
|
|
235
|
+
i.signal.aborted || z?.({
|
|
236
|
+
variant: w.Error,
|
|
237
|
+
reason: t.CopyFailed
|
|
236
238
|
});
|
|
237
239
|
} finally {
|
|
238
|
-
|
|
240
|
+
F([...new Set(s.flatMap((e) => [g(e.sourcePath), g(e.destinationPath)]))]), I(), Y(!1), Z.current = null;
|
|
239
241
|
}
|
|
240
242
|
})();
|
|
241
243
|
}, [
|
|
242
|
-
D,
|
|
243
244
|
O,
|
|
244
|
-
|
|
245
|
+
k,
|
|
245
246
|
z,
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
F
|
|
251
|
-
|
|
247
|
+
B,
|
|
248
|
+
D,
|
|
249
|
+
J,
|
|
250
|
+
X,
|
|
251
|
+
F,
|
|
252
|
+
I
|
|
253
|
+
]), de = _(() => {
|
|
252
254
|
Z.current?.abort();
|
|
253
255
|
}, []);
|
|
254
256
|
return {
|
|
255
257
|
isCreatingFolder: ne,
|
|
256
258
|
isDownloading: re,
|
|
257
259
|
isDeleting: ie,
|
|
258
|
-
isRenaming:
|
|
259
|
-
isCopying:
|
|
260
|
-
isMoving:
|
|
261
|
-
onCreateFolder:
|
|
260
|
+
isRenaming: K,
|
|
261
|
+
isCopying: J,
|
|
262
|
+
isMoving: X,
|
|
263
|
+
onCreateFolder: oe,
|
|
262
264
|
onCreateFolderValidate: $,
|
|
263
|
-
onDownloadFiles:
|
|
264
|
-
onDeleteFiles:
|
|
265
|
-
onRenameValidate:
|
|
266
|
-
onMoveToFiles:
|
|
267
|
-
if (
|
|
268
|
-
let { renameDtos: s, preparedMoveItems: c } =
|
|
265
|
+
onDownloadFiles: se,
|
|
266
|
+
onDeleteFiles: ce,
|
|
267
|
+
onRenameValidate: le,
|
|
268
|
+
onMoveToFiles: _((e, n, i) => {
|
|
269
|
+
if (e.length === 0 || J || X || K) return;
|
|
270
|
+
let { renameDtos: s, preparedMoveItems: c } = p(e, O, k), l = c.map(({ dto: e }) => e), u = new AbortController();
|
|
269
271
|
l.length > 0 && (Z.current = u), (async () => {
|
|
270
|
-
s.length > 0 &&
|
|
271
|
-
let [
|
|
272
|
+
s.length > 0 && q(!0), l.length > 0 && ae(!0);
|
|
273
|
+
let [e, n] = await Promise.all([(async () => {
|
|
272
274
|
if (s.length === 0) return {
|
|
273
275
|
results: [],
|
|
274
276
|
threw: !1
|
|
275
277
|
};
|
|
276
278
|
try {
|
|
277
|
-
let { results: e } = await
|
|
279
|
+
let { results: e } = await D.renameFiles(s);
|
|
278
280
|
return {
|
|
279
281
|
results: e,
|
|
280
282
|
threw: !1
|
|
@@ -292,7 +294,7 @@ var E = ({ filesApi: E, bucket: D, rootLabel: O, activeTab: k, folderPath: A, cu
|
|
|
292
294
|
aborted: !1
|
|
293
295
|
};
|
|
294
296
|
try {
|
|
295
|
-
let { results: e } = await
|
|
297
|
+
let { results: e } = await D.moveFiles(l, u.signal);
|
|
296
298
|
return {
|
|
297
299
|
results: e,
|
|
298
300
|
threw: !1,
|
|
@@ -305,60 +307,60 @@ var E = ({ filesApi: E, bucket: D, rootLabel: O, activeTab: k, folderPath: A, cu
|
|
|
305
307
|
aborted: u.signal.aborted
|
|
306
308
|
};
|
|
307
309
|
}
|
|
308
|
-
})()]), d =
|
|
310
|
+
})()]), d = e.threw ? s.length : e.results.filter((e) => !e.success).length, f = n.threw && n.aborted, p = f ? 0 : l.length, h = f ? 0 : n.threw ? l.length : n.results.filter((e) => !e.success).length, _ = n.threw ? 0 : n.results.filter((e) => e.success).length, v = s.length + p, y = d + h, b = h > 0;
|
|
309
311
|
if (_ > 0) {
|
|
310
|
-
let e =
|
|
311
|
-
|
|
312
|
-
kind: _ === 1 ?
|
|
312
|
+
let e = m(c, n.results);
|
|
313
|
+
B?.({
|
|
314
|
+
kind: _ === 1 ? r.FileMoved : r.FilesMoved,
|
|
313
315
|
name: e?.destinationName,
|
|
314
316
|
count: _,
|
|
315
317
|
isFolder: e?.dto.nodeType === ee.Folder,
|
|
316
|
-
destinationFolderName: i
|
|
318
|
+
destinationFolderName: a(i, k)
|
|
317
319
|
});
|
|
318
320
|
}
|
|
319
321
|
if (s.length === 1 && d === 0) {
|
|
320
322
|
let [e] = s;
|
|
321
|
-
|
|
322
|
-
kind:
|
|
323
|
-
name:
|
|
324
|
-
isFolder: e.nodeType ===
|
|
323
|
+
B?.({
|
|
324
|
+
kind: r.FileRenamed,
|
|
325
|
+
name: o(e.destinationPath, e.destinationPath),
|
|
326
|
+
isFolder: e.nodeType === C.Folder
|
|
325
327
|
});
|
|
326
328
|
}
|
|
327
|
-
y > 0 && (y === v ?
|
|
328
|
-
variant:
|
|
329
|
-
reason: b ?
|
|
330
|
-
}) :
|
|
331
|
-
variant:
|
|
332
|
-
reason: b ?
|
|
329
|
+
y > 0 && (y === v ? z?.({
|
|
330
|
+
variant: w.Error,
|
|
331
|
+
reason: b ? t.MoveFailed : t.RenameFailed
|
|
332
|
+
}) : z?.({
|
|
333
|
+
variant: w.Error,
|
|
334
|
+
reason: b ? t.MovePartiallyFailed : t.RenamePartiallyFailed,
|
|
333
335
|
count: y
|
|
334
336
|
}));
|
|
335
|
-
let x = s.find((
|
|
337
|
+
let x = s.find((t) => t.nodeType === C.Folder && e.results.some((e) => e.success && e.sourcePath === t.sourcePath));
|
|
336
338
|
if (x != null) {
|
|
337
339
|
let e = x.sourcePath.endsWith("/") ? x.sourcePath : `${x.sourcePath}/`;
|
|
338
|
-
if (
|
|
340
|
+
if (j === e || j.startsWith(e)) {
|
|
339
341
|
let t = x.destinationPath.endsWith("/") ? x.destinationPath : `${x.destinationPath}/`;
|
|
340
|
-
|
|
342
|
+
R(j.replace(e, t));
|
|
341
343
|
}
|
|
342
344
|
}
|
|
343
|
-
|
|
345
|
+
F([...new Set([...s, ...l].flatMap((e) => [g(e.sourcePath), g(e.destinationPath)]))]), I(), q(!1), ae(!1), l.length > 0 && (Z.current = null);
|
|
344
346
|
})();
|
|
345
347
|
}, [
|
|
346
|
-
D,
|
|
347
348
|
O,
|
|
348
|
-
|
|
349
|
+
k,
|
|
350
|
+
j,
|
|
351
|
+
B,
|
|
349
352
|
z,
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
G,
|
|
355
|
-
P,
|
|
353
|
+
D,
|
|
354
|
+
J,
|
|
355
|
+
X,
|
|
356
|
+
K,
|
|
356
357
|
F,
|
|
357
|
-
|
|
358
|
+
I,
|
|
359
|
+
R
|
|
358
360
|
]),
|
|
359
|
-
onCopyFiles:
|
|
360
|
-
cancelCopyMove:
|
|
361
|
+
onCopyFiles: ue,
|
|
362
|
+
cancelCopyMove: de
|
|
361
363
|
};
|
|
362
364
|
};
|
|
363
365
|
//#endregion
|
|
364
|
-
export {
|
|
366
|
+
export { D as useDialFileMutations };
|