@bindu-dashing/dam-solution-v2 5.8.118 → 5.8.120
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/build/MyDrive/AddFolder.js +16 -2
- package/build/MyDrive/DriveContainer.js +40 -39
- package/build/MyDrive/FileMenuOptions.js +14 -6
- package/build/MyDrive/FolderMenuOptions.js +1 -1
- package/build/utilities/FoldersContext.d.ts +2 -0
- package/build/utilities/FoldersContext.js +7 -0
- package/package.json +1 -1
|
@@ -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;
|
|
@@ -75,7 +76,20 @@ function AddFolder({ open, handleCancel, folder, file, onCloseSelection, fileMod
|
|
|
75
76
|
}
|
|
76
77
|
});
|
|
77
78
|
updateFoldersCacheOnUpdateFolder(queryClient, folderId ? folderId : rootFolderId, updatedFolder, generateFoldersQueryKey(type));
|
|
78
|
-
|
|
79
|
+
if (file) {
|
|
80
|
+
invalidateData(queryClient, QueryKeys.FILE, get(file, "_id"));
|
|
81
|
+
}
|
|
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
|
+
}
|
|
79
93
|
}
|
|
80
94
|
else {
|
|
81
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)
|
|
@@ -188,12 +190,18 @@ function FileMenuOptions({ file, folderIds = [], fileIds = [], folder, onCloseSe
|
|
|
188
190
|
const duplicateFileMutation = useMutation({
|
|
189
191
|
mutationFn: duplicateFiles,
|
|
190
192
|
onSuccess: (response) => __awaiter(this, void 0, void 0, function* () {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
193
|
+
if (refetchFolders) {
|
|
194
|
+
yield refetchFolders();
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
const foldersQueryKey = generateFoldersQueryKey(type);
|
|
198
|
+
const currentFolderId = folderId ? folderId : rootFolderId;
|
|
199
|
+
invalidateData(queryClient, foldersQueryKey, currentFolderId);
|
|
200
|
+
yield queryClient.refetchQueries({
|
|
201
|
+
queryKey: [foldersQueryKey, currentFolderId],
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
onCloseSelection === null || onCloseSelection === void 0 ? void 0 : onCloseSelection();
|
|
197
205
|
showNotification(get(response, "data.message", CREATE_SUCCESS), NotificationStatus.SUCCESS);
|
|
198
206
|
}),
|
|
199
207
|
onError: (error) => {
|
|
@@ -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
|
+
}
|