@bindu-dashing/dam-solution-v2 5.8.119 → 5.8.121
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.
|
@@ -23,9 +23,10 @@ import { useDamConfig } from "../hocs/DamConfigContext";
|
|
|
23
23
|
import { createApiClient } from "../hocs/configureAxios";
|
|
24
24
|
import useAppParams from "../utilities/useAppParams";
|
|
25
25
|
import { RenderModalTitle } from "../common/CustomElements";
|
|
26
|
-
import { useFoldersContext } from "../utilities/FoldersContext";
|
|
26
|
+
import { useFoldersContext, useRefetchFolders } from "../utilities/FoldersContext";
|
|
27
27
|
function AddFolder({ open, handleCancel, folder, file, onCloseSelection, fileModal, parentFolderId, }) {
|
|
28
28
|
const { setFolders, globalSearch } = useFoldersContext();
|
|
29
|
+
const refetchFolders = useRefetchFolders();
|
|
29
30
|
const { folderId, type } = useAppParams();
|
|
30
31
|
const damConfig = useDamConfig();
|
|
31
32
|
const { rootFolderId } = damConfig;
|
|
@@ -78,12 +79,17 @@ function AddFolder({ open, handleCancel, folder, file, onCloseSelection, fileMod
|
|
|
78
79
|
if (file) {
|
|
79
80
|
invalidateData(queryClient, QueryKeys.FILE, get(file, "_id"));
|
|
80
81
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
82
|
+
if (refetchFolders) {
|
|
83
|
+
yield refetchFolders();
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
const foldersQueryKey = generateFoldersQueryKey(type);
|
|
87
|
+
const effectiveFolderId = folderId ? folderId : rootFolderId;
|
|
88
|
+
invalidateData(queryClient, foldersQueryKey, effectiveFolderId);
|
|
89
|
+
yield queryClient.refetchQueries({
|
|
90
|
+
queryKey: [foldersQueryKey, effectiveFolderId],
|
|
91
|
+
});
|
|
92
|
+
}
|
|
87
93
|
}
|
|
88
94
|
else {
|
|
89
95
|
// ✅ create case → take folder from response
|
|
@@ -34,6 +34,7 @@ import { FETCH_ASSETS_URL, FETCH_IMAGE_PCIKER_THUMBNAIL_URL, UPLOAD_IMAGE_PICKER
|
|
|
34
34
|
import { showNotification } from "../common/notifications";
|
|
35
35
|
import useAppParams from "../utilities/useAppParams";
|
|
36
36
|
import { IoIosSearch } from "react-icons/io";
|
|
37
|
+
import { RefetchFoldersProvider } from "../utilities/FoldersContext";
|
|
37
38
|
const BsUploadIcon = BsUpload;
|
|
38
39
|
const IoIosSearchIcon = IoIosSearch;
|
|
39
40
|
function DriveContainer({ parentFolderId, setSelectedFile, setParentFolderId, pickerFolderId, selectedPickerFile, imagePicker, globalSearch, setGlobalSearch, setSelectedKeys, }) {
|
|
@@ -229,45 +230,45 @@ function DriveContainer({ parentFolderId, setSelectedFile, setParentFolderId, pi
|
|
|
229
230
|
setState((prevState) => (Object.assign(Object.assign({}, prevState), filters)));
|
|
230
231
|
};
|
|
231
232
|
// console.log("search", searchKey, searchValue, metadataKey, metadataValue);
|
|
232
|
-
return (_jsxs("div", { className: "md-lib-h-[inherit]", children: [type !== DriveModes.FILE && (_jsx(_Fragment, { children: _jsxs("div", { className: "md-lib-flex md-lib-items-center md-lib-px-4 md-lib-h-20 md-lib-justify-between md-lib-border-b md-lib-border-borderColor dark:md-lib-border-darkBorderColor md-lib-mb-4", children: [imagePicker ? (_jsx(ImagePickerBreadCrumbList, { folder: parentFolder, parentFolderId: parentFolderId, setParentFolderId: setParentFolderId, pickerFolderId: pickerFolderId })) : (_jsx(_Fragment, { children: _jsx(BreadCrumbList, { folder: parentFolder, parentFolderId: parentFolderId, setParentFolderId: setParentFolderId, pickerFolderId: pickerFolderId, globalSearch: globalSearch, setSelectedKeys: setSelectedKeys }) })), isAdmin && _jsx(AddDrive, { parentFolderId: parentFolderId }), get(imagePicker, "allowNewFiles") && (_jsx(Upload, { beforeUpload: (file) => {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
233
|
+
return (_jsx(RefetchFoldersProvider, { value: refetch, children: _jsxs("div", { className: "md-lib-h-[inherit]", children: [type !== DriveModes.FILE && (_jsx(_Fragment, { children: _jsxs("div", { className: "md-lib-flex md-lib-items-center md-lib-px-4 md-lib-h-20 md-lib-justify-between md-lib-border-b md-lib-border-borderColor dark:md-lib-border-darkBorderColor md-lib-mb-4", children: [imagePicker ? (_jsx(ImagePickerBreadCrumbList, { folder: parentFolder, parentFolderId: parentFolderId, setParentFolderId: setParentFolderId, pickerFolderId: pickerFolderId })) : (_jsx(_Fragment, { children: _jsx(BreadCrumbList, { folder: parentFolder, parentFolderId: parentFolderId, setParentFolderId: setParentFolderId, pickerFolderId: pickerFolderId, globalSearch: globalSearch, setSelectedKeys: setSelectedKeys }) })), isAdmin && _jsx(AddDrive, { parentFolderId: parentFolderId }), get(imagePicker, "allowNewFiles") && (_jsx(Upload, { beforeUpload: (file) => {
|
|
234
|
+
onSelectNewFile(file);
|
|
235
|
+
}, showUploadList: false, accept: "image/*", children: _jsx(CustomButton, { loading: loadingType === "NEW_FILE_UPLOAD", label: "Select File", icon: _jsx(BsUploadIcon, {}) }) }))] }) })), _jsxs("div", { className: `md-lib-px-4 md-lib-border-borderColor dark:md-lib-border-darkBorderColor md-lib-flex ${!includes([DriveModes.FOLDERS, DriveModes.FILE], type)
|
|
236
|
+
? "md-lib-justify-between"
|
|
237
|
+
: "md-lib-justify-end md-lib-my-4"}`, children: [_jsxs("div", { className: "md-lib-flex md-lib-items-center md-lib-gap-4 md-lib-mb-4", children: [_jsx(Input, { placeholder: "Search files (min. 2 characters required)", ref: nameSearchRef, prefix: _jsx(IoIosSearchIcon, {}), onPressEnter: () => {
|
|
238
|
+
var _a;
|
|
239
|
+
const currentObj = nameSearchRef.current;
|
|
240
|
+
if (currentObj) {
|
|
241
|
+
const value = ((_a = currentObj === null || currentObj === void 0 ? void 0 : currentObj.input) === null || _a === void 0 ? void 0 : _a.value) || "";
|
|
242
|
+
if (value.length >= 2 || !value) {
|
|
243
|
+
setState((prevState) => {
|
|
244
|
+
return Object.assign(Object.assign({}, prevState), { folderSearch: value });
|
|
245
|
+
});
|
|
246
|
+
}
|
|
245
247
|
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
})
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
}), isImagePicker: !!pickerFolderId, setSelectedFile: setSelectedFile, setParentFolderId: setParentFolderId, selectedPickerFile: selectedPickerFile, location: get(parentFolder, "name"), assets: assets, sortByKey: sortBy, sortOrder: sortOrder, setSortOrders: (newSortBy, newSortOrder) => setState((prev) => (Object.assign(Object.assign({}, prev), { sortBy: newSortBy, sortOrder: newSortOrder }))), onSearch: onSearch, searchKey: searchKey, searchValue: searchValue, metadataKey: metadataKey, metadataValue: metadataValue, setSelectedKeys: setSelectedKeys })) }))] }));
|
|
248
|
+
} }), !includes([DriveModes.FOLDERS, DriveModes.FILE], type) && (_jsx(TypeAndDateFilters, { selectedDateKey: selectedDateKey, selectedType: selectedType, onDateMenuClick: onDateMenuClick, onTypeMenuClick: onTypeMenuClick, onChangeDates: (dates) => {
|
|
249
|
+
if (dates) {
|
|
250
|
+
const [start, end] = dates;
|
|
251
|
+
setState((prev) => (Object.assign(Object.assign({}, prev), { customDateRange: dates, selectedDateKey: "custom" })));
|
|
252
|
+
}
|
|
253
|
+
}, loading: isFetching, loadingType: loadingType }))] }), _jsx(ToggleView, { showGrid: showGrid, toggleView: (value) => setState((prevState) => (Object.assign(Object.assign({}, prevState), { showGrid: value }))) })] }), _jsx("div", { className: "md-lib-border-b md-lib-border-borderColor md-lib-mb-4" }), isLoading ? (_jsx(Loader, {})) : isEmpty(folders) ? (_jsxs("div", { className: "md-lib-flex md-lib-flex-col md-lib-items-center md-lib-justify-center", children: [_jsx("img", { src: NOT_FOUND_IMAGE_URL, alt: "Not Found", width: 300, height: 300 }), _jsx("p", { className: "md-lib-mt-3 md-lib-text-sm md-lib-font-semibold", children: error
|
|
254
|
+
? get(error, "message", SOMETHING_WENT_WRONG)
|
|
255
|
+
: includes(Object.values(DriveModes), type)
|
|
256
|
+
? "No data found"
|
|
257
|
+
: (searchKey && searchValue) || (metadataKey && metadataValue)
|
|
258
|
+
? "No results found"
|
|
259
|
+
: "No files has been created yet" }), ((searchKey && searchValue) || (metadataKey && metadataValue)) && (_jsx(Button, { type: "primary", className: "md-lib-mt-4", onClick: () => {
|
|
260
|
+
onSearch({
|
|
261
|
+
searchKey: "",
|
|
262
|
+
searchValue: "",
|
|
263
|
+
metadataKey: "",
|
|
264
|
+
metadataValue: "",
|
|
265
|
+
});
|
|
266
|
+
}, children: "Clear Filters" }))] })) : (_jsx("div", { className: "md-lib-p-4 md-lib-max-h-[calc(100%-161px)] md-lib-overflow-x-auto", children: state.showGrid ? (_jsx(FolderGridView, { folders: filter(folders, (item) => get(item, "type") !== EntityType.FILE), files: _.filter(folders, (item) => get(item, "type") === EntityType.FILE), foldersFetching: isFetching, hasNextPage: !!hasNextPage, fetchNextPage: fetchNextPage, selectedFolderIds: get(selectedItems, "folderIds", []), selectedFileIds: get(selectedItems, "fileIds", []), setSelectedItems: (updateFnOrValue = {}) => setState((prevState) => {
|
|
267
|
+
const prevSelected = prevState.selectedItems;
|
|
268
|
+
return Object.assign(Object.assign({}, prevState), { selectedItems: Object.assign(Object.assign({}, prevSelected), updateFnOrValue) });
|
|
269
|
+
}), isImagePicker: !!pickerFolderId, setSelectedFile: setSelectedFile, setParentFolderId: setParentFolderId, selectedPickerFile: selectedPickerFile, sortBy: sortBy, sortOrder: sortOrder, setSortOrders: (newSortBy, newSortOrder) => setState((prev) => (Object.assign(Object.assign({}, prev), { sortBy: newSortBy, sortOrder: newSortOrder }))), setSelectedKeys: setSelectedKeys })) : (_jsx(FolderListView, { folders: folders, foldersFetching: isFetching, hasNextPage: !!hasNextPage, fetchNextPage: fetchNextPage, selectedFolderIds: get(selectedItems, "folderIds", []), selectedFileIds: get(selectedItems, "fileIds", []), setSelectedItems: (updateFnOrValue = {}) => setState((prevState) => {
|
|
270
|
+
const prevSelected = prevState.selectedItems;
|
|
271
|
+
return Object.assign(Object.assign({}, prevState), { selectedItems: Object.assign(Object.assign({}, prevSelected), updateFnOrValue) });
|
|
272
|
+
}), isImagePicker: !!pickerFolderId, setSelectedFile: setSelectedFile, setParentFolderId: setParentFolderId, selectedPickerFile: selectedPickerFile, location: get(parentFolder, "name"), assets: assets, sortByKey: sortBy, sortOrder: sortOrder, setSortOrders: (newSortBy, newSortOrder) => setState((prev) => (Object.assign(Object.assign({}, prev), { sortBy: newSortBy, sortOrder: newSortOrder }))), onSearch: onSearch, searchKey: searchKey, searchValue: searchValue, metadataKey: metadataKey, metadataValue: metadataValue, setSelectedKeys: setSelectedKeys })) }))] }) }));
|
|
272
273
|
}
|
|
273
274
|
export default DriveContainer;
|
|
@@ -25,6 +25,7 @@ import { archiveFiles, deleteFiles, downloadFiles, duplicateFiles, restoreFiles,
|
|
|
25
25
|
import { ADDED_TO_FAV_MSG, ARCHIVE_OK_TEXT, ARCHIVE_SUCCESS, CREATE_SUCCESS, DELETE_CONFIRMATION_MESSAGE, DELETE_MESSAGE_DESCRIPTION, DELETE_OK_TEXT, DELETE_SUCCESS, INVALID_URL, REMOVED_FROM_FAV_MSG, RESTORE_SUCCESS, SOMETHING_WENT_WRONG, } from "../utilities/constants/messages";
|
|
26
26
|
import { getSelectedFiles, } from "../react-query/hooks/folder-hooks";
|
|
27
27
|
import { generateFoldersQueryKey, invalidateData, QueryKeys, } from "../utilities/constants/queryKeys";
|
|
28
|
+
import { useRefetchFolders } from "../utilities/FoldersContext";
|
|
28
29
|
import { DeleteConfirmationModal } from "../common/CustomElements";
|
|
29
30
|
import { addToFavFolders, removeFromFavFolders, } from "../react-query/services/folder-services";
|
|
30
31
|
import { MdDriveFileMoveOutline, MdOutlineUnarchive } from "react-icons/md";
|
|
@@ -53,6 +54,7 @@ function FileMenuOptions({ file, folderIds = [], fileIds = [], folder, onCloseSe
|
|
|
53
54
|
const { folderId, type } = useAppParams();
|
|
54
55
|
const api = useMemo(() => createApiClient(damConfig), [damConfig]);
|
|
55
56
|
const queryClient = useQueryClient();
|
|
57
|
+
const refetchFolders = useRefetchFolders();
|
|
56
58
|
// Fetch file data from API if file is null but we have a single fileId (no folders)
|
|
57
59
|
const singleFileId = useMemo(() => {
|
|
58
60
|
if (file)
|
|
@@ -128,17 +130,27 @@ function FileMenuOptions({ file, folderIds = [], fileIds = [], folder, onCloseSe
|
|
|
128
130
|
const onFailure = (message) => {
|
|
129
131
|
showNotification(message, NotificationStatus.ERROR);
|
|
130
132
|
};
|
|
131
|
-
const onDeleteSuccess = (message) => {
|
|
132
|
-
|
|
133
|
+
const onDeleteSuccess = (message) => __awaiter(this, void 0, void 0, function* () {
|
|
134
|
+
if (refetchFolders) {
|
|
135
|
+
yield refetchFolders();
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
const foldersQueryKey = generateFoldersQueryKey(type);
|
|
139
|
+
const currentFolderId = folderId ? folderId : rootFolderId;
|
|
140
|
+
invalidateData(queryClient, foldersQueryKey, currentFolderId);
|
|
141
|
+
yield queryClient.refetchQueries({
|
|
142
|
+
queryKey: [foldersQueryKey, currentFolderId],
|
|
143
|
+
});
|
|
144
|
+
}
|
|
133
145
|
showNotification(message, NotificationStatus.SUCCESS);
|
|
134
146
|
onCloseSelection === null || onCloseSelection === void 0 ? void 0 : onCloseSelection();
|
|
135
|
-
};
|
|
147
|
+
});
|
|
136
148
|
const deleteFileMutation = useMutation({
|
|
137
149
|
mutationFn: deleteFiles,
|
|
138
|
-
onSuccess: (response) => {
|
|
150
|
+
onSuccess: (response) => __awaiter(this, void 0, void 0, function* () {
|
|
139
151
|
toggleConfirmPopup();
|
|
140
|
-
onDeleteSuccess(get(response, "data.message", DELETE_SUCCESS));
|
|
141
|
-
},
|
|
152
|
+
yield onDeleteSuccess(get(response, "data.message", DELETE_SUCCESS));
|
|
153
|
+
}),
|
|
142
154
|
onError: (error) => {
|
|
143
155
|
onFailure(get(error, "message", SOMETHING_WENT_WRONG));
|
|
144
156
|
},
|
|
@@ -152,10 +164,10 @@ function FileMenuOptions({ file, folderIds = [], fileIds = [], folder, onCloseSe
|
|
|
152
164
|
};
|
|
153
165
|
const archiveFileMutation = useMutation({
|
|
154
166
|
mutationFn: archiveFiles,
|
|
155
|
-
onSuccess: (response) => {
|
|
167
|
+
onSuccess: (response) => __awaiter(this, void 0, void 0, function* () {
|
|
156
168
|
toggleConfirmPopup();
|
|
157
|
-
onDeleteSuccess(get(response, "data.message", ARCHIVE_SUCCESS));
|
|
158
|
-
},
|
|
169
|
+
yield onDeleteSuccess(get(response, "data.message", ARCHIVE_SUCCESS));
|
|
170
|
+
}),
|
|
159
171
|
onError: (error) => {
|
|
160
172
|
onFailure(get(error, "message", SOMETHING_WENT_WRONG));
|
|
161
173
|
},
|
|
@@ -188,12 +200,17 @@ function FileMenuOptions({ file, folderIds = [], fileIds = [], folder, onCloseSe
|
|
|
188
200
|
const duplicateFileMutation = useMutation({
|
|
189
201
|
mutationFn: duplicateFiles,
|
|
190
202
|
onSuccess: (response) => __awaiter(this, void 0, void 0, function* () {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
203
|
+
if (refetchFolders) {
|
|
204
|
+
yield refetchFolders();
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
const foldersQueryKey = generateFoldersQueryKey(type);
|
|
208
|
+
const currentFolderId = folderId ? folderId : rootFolderId;
|
|
209
|
+
invalidateData(queryClient, foldersQueryKey, currentFolderId);
|
|
210
|
+
yield queryClient.refetchQueries({
|
|
211
|
+
queryKey: [foldersQueryKey, currentFolderId],
|
|
212
|
+
});
|
|
213
|
+
}
|
|
197
214
|
onCloseSelection === null || onCloseSelection === void 0 ? void 0 : onCloseSelection();
|
|
198
215
|
showNotification(get(response, "data.message", CREATE_SUCCESS), NotificationStatus.SUCCESS);
|
|
199
216
|
}),
|
|
@@ -11,4 +11,6 @@ type FoldersContextType = {
|
|
|
11
11
|
};
|
|
12
12
|
export declare const FoldersProvider: import("react").Provider<FoldersContextType | undefined>;
|
|
13
13
|
export declare function useFoldersContext(): FoldersContextType;
|
|
14
|
+
export declare const RefetchFoldersProvider: import("react").Provider<(() => Promise<unknown>) | undefined>;
|
|
15
|
+
export declare function useRefetchFolders(): (() => Promise<unknown>) | undefined;
|
|
14
16
|
export {};
|
|
@@ -8,3 +8,10 @@ export function useFoldersContext() {
|
|
|
8
8
|
}
|
|
9
9
|
return ctx;
|
|
10
10
|
}
|
|
11
|
+
// Optional refetch for the current folder list (provided by DriveContainer).
|
|
12
|
+
// When available, use this after rename/duplicate so the list updates without full refresh.
|
|
13
|
+
const RefetchFoldersContext = createContext(undefined);
|
|
14
|
+
export const RefetchFoldersProvider = RefetchFoldersContext.Provider;
|
|
15
|
+
export function useRefetchFolders() {
|
|
16
|
+
return useContext(RefetchFoldersContext);
|
|
17
|
+
}
|