@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
- const foldersQueryKey = generateFoldersQueryKey(type);
82
- const effectiveFolderId = folderId ? folderId : rootFolderId;
83
- invalidateData(queryClient, foldersQueryKey, effectiveFolderId);
84
- yield queryClient.refetchQueries({
85
- queryKey: [foldersQueryKey, effectiveFolderId],
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
- onSelectNewFile(file);
234
- }, 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)
235
- ? "md-lib-justify-between"
236
- : "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: () => {
237
- var _a;
238
- const currentObj = nameSearchRef.current;
239
- if (currentObj) {
240
- const value = ((_a = currentObj === null || currentObj === void 0 ? void 0 : currentObj.input) === null || _a === void 0 ? void 0 : _a.value) || "";
241
- if (value.length >= 2 || !value) {
242
- setState((prevState) => {
243
- return Object.assign(Object.assign({}, prevState), { folderSearch: value });
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
- } }), !includes([DriveModes.FOLDERS, DriveModes.FILE], type) && (_jsx(TypeAndDateFilters, { selectedDateKey: selectedDateKey, selectedType: selectedType, onDateMenuClick: onDateMenuClick, onTypeMenuClick: onTypeMenuClick, onChangeDates: (dates) => {
248
- if (dates) {
249
- const [start, end] = dates;
250
- setState((prev) => (Object.assign(Object.assign({}, prev), { customDateRange: dates, selectedDateKey: "custom" })));
251
- }
252
- }, 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
253
- ? get(error, "message", SOMETHING_WENT_WRONG)
254
- : includes(Object.values(DriveModes), type)
255
- ? "No data found"
256
- : (searchKey && searchValue) || (metadataKey && metadataValue)
257
- ? "No results found"
258
- : "No files has been created yet" }), ((searchKey && searchValue) || (metadataKey && metadataValue)) && (_jsx(Button, { type: "primary", className: "md-lib-mt-4", onClick: () => {
259
- onSearch({
260
- searchKey: "",
261
- searchValue: "",
262
- metadataKey: "",
263
- metadataValue: "",
264
- });
265
- }, 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) => {
266
- const prevSelected = prevState.selectedItems;
267
- return Object.assign(Object.assign({}, prevState), { selectedItems: Object.assign(Object.assign({}, prevSelected), updateFnOrValue) });
268
- }), 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) => {
269
- const prevSelected = prevState.selectedItems;
270
- return Object.assign(Object.assign({}, prevState), { selectedItems: Object.assign(Object.assign({}, prevSelected), updateFnOrValue) });
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
- invalidateData(queryClient, generateFoldersQueryKey(type), folderId ? folderId : rootFolderId);
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
- const foldersQueryKey = generateFoldersQueryKey(type);
192
- const currentFolderId = folderId ? folderId : rootFolderId;
193
- invalidateData(queryClient, foldersQueryKey, currentFolderId);
194
- yield queryClient.refetchQueries({
195
- queryKey: [foldersQueryKey, currentFolderId],
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
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bindu-dashing/dam-solution-v2",
3
- "version": "5.8.119",
3
+ "version": "5.8.121",
4
4
  "dependencies": {
5
5
  "@ant-design/icons": "^5.0.1",
6
6
  "@emoji-mart/data": "^1.2.1",