@bindu-dashing/dam-solution-v2 5.8.6
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/README.md +53 -0
- package/build/AssetType/AddFieldProperties.d.ts +9 -0
- package/build/AssetType/AddFieldProperties.js +197 -0
- package/build/AssetType/AssetTemplatesTable.d.ts +10 -0
- package/build/AssetType/AssetTemplatesTable.js +153 -0
- package/build/AssetType/CreateAssetTemplate.d.ts +3 -0
- package/build/AssetType/CreateAssetTemplate.js +68 -0
- package/build/AssetType/CreateOrEditAssetTemplate.d.ts +1 -0
- package/build/AssetType/CreateOrEditAssetTemplate.js +77 -0
- package/build/AssetType/DraggedField.d.ts +14 -0
- package/build/AssetType/DraggedField.js +40 -0
- package/build/AssetType/EditAssetTemplate.d.ts +5 -0
- package/build/AssetType/EditAssetTemplate.js +179 -0
- package/build/AssetType/FieldsSection.d.ts +14 -0
- package/build/AssetType/FieldsSection.js +239 -0
- package/build/AssetType/assetTemplatesContainer.d.ts +2 -0
- package/build/AssetType/assetTemplatesContainer.js +71 -0
- package/build/AssetType/fieldProperties/DateField.d.ts +5 -0
- package/build/AssetType/fieldProperties/DateField.js +23 -0
- package/build/AssetType/fieldProperties/NumberField.d.ts +5 -0
- package/build/AssetType/fieldProperties/NumberField.js +91 -0
- package/build/AssetType/fieldProperties/OptionsField.d.ts +6 -0
- package/build/AssetType/fieldProperties/OptionsField.js +55 -0
- package/build/AssetType/fieldProperties/TextField.d.ts +5 -0
- package/build/AssetType/fieldProperties/TextField.js +92 -0
- package/build/AssetType/index.d.ts +11 -0
- package/build/AssetType/index.js +24 -0
- package/build/AssetType/routes.d.ts +3 -0
- package/build/AssetType/routes.js +17 -0
- package/build/BookView/ProductDescription.d.ts +4 -0
- package/build/BookView/ProductDescription.js +20 -0
- package/build/BookView/bookDetail.d.ts +4 -0
- package/build/BookView/bookDetail.js +106 -0
- package/build/BookView/bookInfo.d.ts +4 -0
- package/build/BookView/bookInfo.js +17 -0
- package/build/BookView/description.d.ts +4 -0
- package/build/BookView/description.js +5 -0
- package/build/BookView/index.d.ts +10 -0
- package/build/BookView/index.js +23 -0
- package/build/CreateClient/CreateClientBtn.d.ts +8 -0
- package/build/CreateClient/CreateClientBtn.js +12 -0
- package/build/CreateClient/CreateClientForm.d.ts +9 -0
- package/build/CreateClient/CreateClientForm.js +165 -0
- package/build/CreateClient/index.d.ts +14 -0
- package/build/CreateClient/index.js +18 -0
- package/build/ImagePicker/MetaFieldOptions.d.ts +14 -0
- package/build/ImagePicker/MetaFieldOptions.js +75 -0
- package/build/ImagePicker/TestImagePickerModal.d.ts +8 -0
- package/build/ImagePicker/TestImagePickerModal.js +61 -0
- package/build/ImagePicker/TestImgFromMetaData.d.ts +7 -0
- package/build/ImagePicker/TestImgFromMetaData.js +82 -0
- package/build/ImagePicker/imagePickerComponent.d.ts +6 -0
- package/build/ImagePicker/imagePickerComponent.js +63 -0
- package/build/ImagePicker/index.d.ts +13 -0
- package/build/ImagePicker/index.js +24 -0
- package/build/ImagePicker/routes.d.ts +6 -0
- package/build/ImagePicker/routes.js +17 -0
- package/build/ImagePickerFilters/ImagePickerFiltersComponent.d.ts +8 -0
- package/build/ImagePickerFilters/ImagePickerFiltersComponent.js +223 -0
- package/build/ImagePickerFilters/index.d.ts +12 -0
- package/build/ImagePickerFilters/index.js +19 -0
- package/build/MyDrive/ActionBar.d.ts +6 -0
- package/build/MyDrive/ActionBar.js +165 -0
- package/build/MyDrive/AddDrive.d.ts +3 -0
- package/build/MyDrive/AddDrive.js +169 -0
- package/build/MyDrive/AddFolder.d.ts +10 -0
- package/build/MyDrive/AddFolder.js +150 -0
- package/build/MyDrive/BreadCrumbList.d.ts +9 -0
- package/build/MyDrive/BreadCrumbList.js +86 -0
- package/build/MyDrive/BulkUploadModal.d.ts +2 -0
- package/build/MyDrive/BulkUploadModal.js +279 -0
- package/build/MyDrive/DriveContainer.d.ts +13 -0
- package/build/MyDrive/DriveContainer.js +276 -0
- package/build/MyDrive/FileDownloadHistory.d.ts +7 -0
- package/build/MyDrive/FileDownloadHistory.js +94 -0
- package/build/MyDrive/FileMenuOptions.d.ts +11 -0
- package/build/MyDrive/FileMenuOptions.js +397 -0
- package/build/MyDrive/FilesGridView.d.ts +9 -0
- package/build/MyDrive/FilesGridView.js +25 -0
- package/build/MyDrive/FolderGridView.d.ts +19 -0
- package/build/MyDrive/FolderGridView.js +91 -0
- package/build/MyDrive/FolderListView.d.ts +25 -0
- package/build/MyDrive/FolderListView.js +188 -0
- package/build/MyDrive/FolderMenuOptions.d.ts +5 -0
- package/build/MyDrive/FolderMenuOptions.js +350 -0
- package/build/MyDrive/FolderTree.d.ts +8 -0
- package/build/MyDrive/FolderTree.js +342 -0
- package/build/MyDrive/ImageEditor/EditImage.d.ts +6 -0
- package/build/MyDrive/ImageEditor/EditImage.js +97 -0
- package/build/MyDrive/ImageEditor/EditImageModal.d.ts +8 -0
- package/build/MyDrive/ImageEditor/EditImageModal.js +30 -0
- package/build/MyDrive/ImageEditor/TuiImageEditor.d.ts +10 -0
- package/build/MyDrive/ImageEditor/TuiImageEditor.js +99 -0
- package/build/MyDrive/ImagePickerBreadCrumbList.d.ts +8 -0
- package/build/MyDrive/ImagePickerBreadCrumbList.js +35 -0
- package/build/MyDrive/ImagePickerDrive.d.ts +1 -0
- package/build/MyDrive/ImagePickerDrive.js +41 -0
- package/build/MyDrive/MyDriveMainContainer.d.ts +1 -0
- package/build/MyDrive/MyDriveMainContainer.js +32 -0
- package/build/MyDrive/SearchFilter.d.ts +8 -0
- package/build/MyDrive/SearchFilter.js +73 -0
- package/build/MyDrive/ShareBtn.d.ts +5 -0
- package/build/MyDrive/ShareBtn.js +19 -0
- package/build/MyDrive/ToggleView.d.ts +4 -0
- package/build/MyDrive/ToggleView.js +12 -0
- package/build/MyDrive/UploadStatusModal.d.ts +12 -0
- package/build/MyDrive/UploadStatusModal.js +40 -0
- package/build/MyDrive/fileDetails/CommentEntity.d.ts +8 -0
- package/build/MyDrive/fileDetails/CommentEntity.js +102 -0
- package/build/MyDrive/fileDetails/Comments.d.ts +6 -0
- package/build/MyDrive/fileDetails/Comments.js +65 -0
- package/build/MyDrive/fileDetails/Compliance.d.ts +2 -0
- package/build/MyDrive/fileDetails/Compliance.js +18 -0
- package/build/MyDrive/fileDetails/CreateComment.d.ts +7 -0
- package/build/MyDrive/fileDetails/CreateComment.js +48 -0
- package/build/MyDrive/fileDetails/Editor.d.ts +6 -0
- package/build/MyDrive/fileDetails/Editor.js +55 -0
- package/build/MyDrive/fileDetails/EmojiPicker.d.ts +5 -0
- package/build/MyDrive/fileDetails/EmojiPicker.js +6 -0
- package/build/MyDrive/fileDetails/FileDetails.d.ts +10 -0
- package/build/MyDrive/fileDetails/FileDetails.js +78 -0
- package/build/MyDrive/fileDetails/FileHeader.d.ts +7 -0
- package/build/MyDrive/fileDetails/FileHeader.js +25 -0
- package/build/MyDrive/fileDetails/FileViewer.d.ts +10 -0
- package/build/MyDrive/fileDetails/FileViewer.js +31 -0
- package/build/MyDrive/fileDetails/ImageOptions.d.ts +2 -0
- package/build/MyDrive/fileDetails/ImageOptions.js +44 -0
- package/build/MyDrive/fileDetails/ImageViewer.d.ts +5 -0
- package/build/MyDrive/fileDetails/ImageViewer.js +16 -0
- package/build/MyDrive/fileDetails/ManageFile.d.ts +7 -0
- package/build/MyDrive/fileDetails/ManageFile.js +34 -0
- package/build/MyDrive/fileDetails/MetaForm.d.ts +15 -0
- package/build/MyDrive/fileDetails/MetaForm.js +195 -0
- package/build/MyDrive/fileDetails/Metadata.d.ts +8 -0
- package/build/MyDrive/fileDetails/Metadata.js +52 -0
- package/build/MyDrive/fileDetails/PdfOptions.d.ts +9 -0
- package/build/MyDrive/fileDetails/PdfOptions.js +35 -0
- package/build/MyDrive/fileDetails/PdfViewer.d.ts +8 -0
- package/build/MyDrive/fileDetails/PdfViewer.js +18 -0
- package/build/MyDrive/fileDetails/Previewdetails.d.ts +9 -0
- package/build/MyDrive/fileDetails/Previewdetails.js +53 -0
- package/build/MyDrive/fileDetails/VideoPlayer.d.ts +4 -0
- package/build/MyDrive/fileDetails/VideoPlayer.js +21 -0
- package/build/MyDrive/files/AssetSelectionFormItem.d.ts +7 -0
- package/build/MyDrive/files/AssetSelectionFormItem.js +14 -0
- package/build/MyDrive/files/FolderTabs.d.ts +6 -0
- package/build/MyDrive/files/FolderTabs.js +83 -0
- package/build/MyDrive/files/MapFile.d.ts +8 -0
- package/build/MyDrive/files/MapFile.js +217 -0
- package/build/MyDrive/files/MoveToAnotherFolder.d.ts +9 -0
- package/build/MyDrive/files/MoveToAnotherFolder.js +53 -0
- package/build/MyDrive/filesListView.d.ts +2 -0
- package/build/MyDrive/filesListView.js +57 -0
- package/build/MyDrive/index.d.ts +10 -0
- package/build/MyDrive/index.js +35 -0
- package/build/MyDrive/routes.d.ts +7 -0
- package/build/MyDrive/routes.js +17 -0
- package/build/PenView/PenDetails.d.ts +4 -0
- package/build/PenView/PenDetails.js +114 -0
- package/build/PenView/ProductDescription.d.ts +5 -0
- package/build/PenView/ProductDescription.js +51 -0
- package/build/PenView/index.d.ts +10 -0
- package/build/PenView/index.js +23 -0
- package/build/RefreshKey/RefreshKeyBtn.d.ts +1 -0
- package/build/RefreshKey/RefreshKeyBtn.js +42 -0
- package/build/RefreshKey/index.d.ts +9 -0
- package/build/RefreshKey/index.js +23 -0
- package/build/ShoesView/ProductDescription.d.ts +4 -0
- package/build/ShoesView/ProductDescription.js +25 -0
- package/build/ShoesView/ShoeDetails.d.ts +4 -0
- package/build/ShoesView/ShoeDetails.js +96 -0
- package/build/ShoesView/index.d.ts +10 -0
- package/build/ShoesView/index.js +23 -0
- package/build/common/Button.d.ts +2 -0
- package/build/common/Button.js +18 -0
- package/build/common/CustomElements.d.ts +98 -0
- package/build/common/CustomElements.js +77 -0
- package/build/common/LoadMoreItems.d.ts +7 -0
- package/build/common/LoadMoreItems.js +33 -0
- package/build/common/RenderFormItem.d.ts +42 -0
- package/build/common/RenderFormItem.js +98 -0
- package/build/common/RenderThumnail.d.ts +7 -0
- package/build/common/RenderThumnail.js +6 -0
- package/build/common/deleteModal.d.ts +1 -0
- package/build/common/deleteModal.js +12 -0
- package/build/common/folders/TypeAndDateFilters.d.ts +10 -0
- package/build/common/folders/TypeAndDateFilters.js +59 -0
- package/build/common/folders/getFolderOrFileIcon.d.ts +2 -0
- package/build/common/folders/getFolderOrFileIcon.js +41 -0
- package/build/common/loader/CustomLoader.d.ts +7 -0
- package/build/common/loader/CustomLoader.js +8 -0
- package/build/common/loader/loader.d.ts +1 -0
- package/build/common/loader/loader.js +6 -0
- package/build/common/notifications.d.ts +2 -0
- package/build/common/notifications.js +30 -0
- package/build/common/steps.d.ts +4 -0
- package/build/common/steps.js +7 -0
- package/build/hocs/AppProvider.d.ts +3 -0
- package/build/hocs/AppProvider.js +11 -0
- package/build/hocs/DamConfigContext.d.ts +2 -0
- package/build/hocs/DamConfigContext.js +108 -0
- package/build/hocs/ThemeContext.d.ts +15 -0
- package/build/hocs/ThemeContext.js +131 -0
- package/build/hocs/ToastProvider.d.ts +2 -0
- package/build/hocs/ToastProvider.js +6 -0
- package/build/hocs/appConstants.d.ts +124 -0
- package/build/hocs/appConstants.js +211 -0
- package/build/hocs/configureAxios.d.ts +2 -0
- package/build/hocs/configureAxios.js +65 -0
- package/build/hocs/helpers.d.ts +15 -0
- package/build/hocs/helpers.js +177 -0
- package/build/index.d.ts +11 -0
- package/build/index.js +11 -0
- package/build/react-query/hooks/brand-hooks.d.ts +3 -0
- package/build/react-query/hooks/brand-hooks.js +10 -0
- package/build/react-query/hooks/folder-hooks.d.ts +7 -0
- package/build/react-query/hooks/folder-hooks.js +119 -0
- package/build/react-query/services/brand-services.d.ts +3 -0
- package/build/react-query/services/brand-services.js +30 -0
- package/build/react-query/services/file-services.d.ts +43 -0
- package/build/react-query/services/file-services.js +69 -0
- package/build/react-query/services/folder-services.d.ts +44 -0
- package/build/react-query/services/folder-services.js +87 -0
- package/build/react-query/services/image-picker-services.d.ts +5 -0
- package/build/react-query/services/image-picker-services.js +48 -0
- package/build/settings/InviteTeamModal.d.ts +12 -0
- package/build/settings/InviteTeamModal.js +174 -0
- package/build/settings/UpdateInvitationAccessType.d.ts +9 -0
- package/build/settings/UpdateInvitationAccessType.js +96 -0
- package/build/settings/getUserAvatar.d.ts +7 -0
- package/build/settings/getUserAvatar.js +11 -0
- package/build/style.css +1 -0
- package/build/types/assetType.d.ts +8 -0
- package/build/types/assetType.js +1 -0
- package/build/ui/pageTitle.d.ts +3 -0
- package/build/ui/pageTitle.js +4 -0
- package/build/utilities/FoldersContext.d.ts +14 -0
- package/build/utilities/FoldersContext.js +10 -0
- package/build/utilities/NavigatorProvider.d.ts +2 -0
- package/build/utilities/NavigatorProvider.js +10 -0
- package/build/utilities/constants/apiUrls.d.ts +95 -0
- package/build/utilities/constants/apiUrls.js +115 -0
- package/build/utilities/constants/imageUrls.d.ts +6 -0
- package/build/utilities/constants/imageUrls.js +6 -0
- package/build/utilities/constants/interface.d.ts +371 -0
- package/build/utilities/constants/interface.js +142 -0
- package/build/utilities/constants/messages.d.ts +54 -0
- package/build/utilities/constants/messages.js +54 -0
- package/build/utilities/constants/queryKeys.d.ts +16 -0
- package/build/utilities/constants/queryKeys.js +33 -0
- package/build/utilities/constants/routes.d.ts +22 -0
- package/build/utilities/constants/routes.js +22 -0
- package/build/utilities/helpers/validators.d.ts +12 -0
- package/build/utilities/helpers/validators.js +89 -0
- package/build/utilities/useAppNavigate.d.ts +2 -0
- package/build/utilities/useAppNavigate.js +19 -0
- package/build/utilities/useAppParams.d.ts +6 -0
- package/build/utilities/useAppParams.js +27 -0
- package/package.json +93 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
import { Form, Modal } from "antd";
|
|
12
|
+
import { useEffect, useMemo, useState } from "react";
|
|
13
|
+
import { showNotification } from "../common/notifications";
|
|
14
|
+
import { CREATE_SUCCESS, ENTITY_REQUIRED, SOMETHING_WENT_WRONG, } from "../utilities/constants/messages";
|
|
15
|
+
import { NotificationStatus, } from "../utilities/constants/interface";
|
|
16
|
+
import { get, sortBy } from "lodash";
|
|
17
|
+
import { FETCH_FILE_URL, FETCH_FOLDER_URL, FETCH_FOLDERS_URL, } from "../utilities/constants/apiUrls";
|
|
18
|
+
import { CustomInputFormItem } from "../common/RenderFormItem";
|
|
19
|
+
import { updateFoldersCacheOnUpdateFolder, } from "../react-query/hooks/folder-hooks";
|
|
20
|
+
import { useQueryClient } from "react-query";
|
|
21
|
+
import { generateFoldersQueryKey, invalidateData, QueryKeys, } from "../utilities/constants/queryKeys";
|
|
22
|
+
import { useDamConfig } from "../hocs/DamConfigContext";
|
|
23
|
+
import { createApiClient } from "../hocs/configureAxios";
|
|
24
|
+
import useAppParams from "../utilities/useAppParams";
|
|
25
|
+
import { RenderModalTitle } from "../common/CustomElements";
|
|
26
|
+
import { useFoldersContext } from "../utilities/FoldersContext";
|
|
27
|
+
function AddFolder({ open, handleCancel, folder, file, onCloseSelection, fileModal, }) {
|
|
28
|
+
const { setFolders, globalSearch } = useFoldersContext();
|
|
29
|
+
const { folderId, type } = useAppParams();
|
|
30
|
+
const damConfig = useDamConfig();
|
|
31
|
+
const { rootFolderId } = damConfig;
|
|
32
|
+
const api = useMemo(() => createApiClient(damConfig), [damConfig]);
|
|
33
|
+
const [state, setState] = useState({ loading: false });
|
|
34
|
+
const { loading } = state;
|
|
35
|
+
const [form] = Form.useForm();
|
|
36
|
+
const queryClient = useQueryClient();
|
|
37
|
+
const onAddFolder = () => {
|
|
38
|
+
form.validateFields().then((values) => __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
setState((prevState) => (Object.assign(Object.assign({}, prevState), { loading: true })));
|
|
40
|
+
try {
|
|
41
|
+
const response = get(folder, "_id")
|
|
42
|
+
? yield api.put(FETCH_FOLDER_URL.replace(":folderId", get(folder, "_id")), values)
|
|
43
|
+
: get(file, "_id")
|
|
44
|
+
? yield api.put(FETCH_FILE_URL.replace(":fileId", get(file, "_id")), values)
|
|
45
|
+
: yield api.post(FETCH_FOLDERS_URL, Object.assign(Object.assign({}, values), { teamIds: [], parentId: folderId ? folderId : rootFolderId }));
|
|
46
|
+
if (folder || file) {
|
|
47
|
+
// ✅ update case
|
|
48
|
+
const updatedFolder = folder
|
|
49
|
+
? get(response, "data.updatedFolder", {})
|
|
50
|
+
: file
|
|
51
|
+
? get(response, "data.file", Object.assign(Object.assign({}, file), { name: get(values, "name") }))
|
|
52
|
+
: {};
|
|
53
|
+
setFolders((prevFolders) => {
|
|
54
|
+
if (globalSearch) {
|
|
55
|
+
// Only update the matching folder (flat update)
|
|
56
|
+
const finalFolders = prevFolders.map((f) => {
|
|
57
|
+
// console.log("f", f);
|
|
58
|
+
return f._id === updatedFolder._id
|
|
59
|
+
? Object.assign(Object.assign({}, f), updatedFolder) : f;
|
|
60
|
+
});
|
|
61
|
+
// console.log("updatd folders", finalFolders);
|
|
62
|
+
return finalFolders;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const updateOrAddRecursively = (folders) => folders.map((f) => {
|
|
66
|
+
if (f._id === updatedFolder._id) {
|
|
67
|
+
return Object.assign(Object.assign({}, f), updatedFolder); // update
|
|
68
|
+
}
|
|
69
|
+
return Object.assign(Object.assign({}, f), { children: Array.isArray(f.children)
|
|
70
|
+
? updateOrAddRecursively(f.children)
|
|
71
|
+
: f.children });
|
|
72
|
+
});
|
|
73
|
+
return updateOrAddRecursively(prevFolders);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
updateFoldersCacheOnUpdateFolder(queryClient, folderId ? folderId : rootFolderId, updatedFolder, generateFoldersQueryKey(type));
|
|
77
|
+
invalidateData(queryClient, QueryKeys.FILE, get(file, "_id"));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// ✅ create case → take folder from response
|
|
81
|
+
const newFolder = get(response, "data.folder", {});
|
|
82
|
+
setFolders((prevFolders) => {
|
|
83
|
+
if (newFolder.parentId !== rootFolderId) {
|
|
84
|
+
// Add to parent's children
|
|
85
|
+
const addToParent = (folders) => folders.map((f) => {
|
|
86
|
+
if (f._id === newFolder.parentId) {
|
|
87
|
+
return Object.assign(Object.assign({}, f), { children: Array.isArray(f.children)
|
|
88
|
+
? [...f.children, newFolder]
|
|
89
|
+
: [newFolder] });
|
|
90
|
+
}
|
|
91
|
+
return f;
|
|
92
|
+
});
|
|
93
|
+
return addToParent(prevFolders);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
// Add to top level
|
|
97
|
+
return sortBy([...prevFolders, newFolder], (f) => {
|
|
98
|
+
var _a, _b;
|
|
99
|
+
return (_b = (_a = f.name) === null || _a === void 0 ? void 0 : _a.toLowerCase) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
invalidateData(queryClient, generateFoldersQueryKey(type), folderId ? folderId : rootFolderId);
|
|
104
|
+
}
|
|
105
|
+
handleCancel();
|
|
106
|
+
showNotification(get(response, "data.message", CREATE_SUCCESS), NotificationStatus.SUCCESS);
|
|
107
|
+
form.resetFields();
|
|
108
|
+
if (!fileModal) {
|
|
109
|
+
onCloseSelection === null || onCloseSelection === void 0 ? void 0 : onCloseSelection();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
showNotification(get(error, "message", SOMETHING_WENT_WRONG), NotificationStatus.ERROR);
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
setState((prevState) => (Object.assign(Object.assign({}, prevState), { loading: false })));
|
|
117
|
+
}
|
|
118
|
+
}));
|
|
119
|
+
};
|
|
120
|
+
const nameValue = (Form.useWatch("name", form) || "").trim();
|
|
121
|
+
const originalName = ((folder === null || folder === void 0 ? void 0 : folder.name) || (file === null || file === void 0 ? void 0 : file.name) || "").trim();
|
|
122
|
+
const isUnchanged = useMemo(() => !!(folder || file) && nameValue === originalName, [folder, file, nameValue, originalName]);
|
|
123
|
+
useEffect(() => {
|
|
124
|
+
if (folder) {
|
|
125
|
+
form.setFieldsValue(Object.assign({}, folder));
|
|
126
|
+
}
|
|
127
|
+
else if (file) {
|
|
128
|
+
form.setFieldsValue(Object.assign({}, file));
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
form.resetFields();
|
|
132
|
+
}
|
|
133
|
+
}, [folder, file, form]);
|
|
134
|
+
return (_jsx(Modal, { title: _jsx(RenderModalTitle, { title: !!folder
|
|
135
|
+
? `Update ${get(folder, "name", "N/A")}`
|
|
136
|
+
: !!file
|
|
137
|
+
? `Update ${get(file, "name", "File")}`
|
|
138
|
+
: "Add Folder" }), okText: !!folder || !!file ? "Update" : "Save", okButtonProps: {
|
|
139
|
+
loading,
|
|
140
|
+
disabled: !nameValue || isUnchanged,
|
|
141
|
+
type: nameValue && !isUnchanged ? "primary" : "default",
|
|
142
|
+
size: "large",
|
|
143
|
+
}, onOk: onAddFolder, onCancel: handleCancel, open: open, cancelButtonProps: { size: "large" }, children: _jsx(Form, { layout: "vertical", form: form, scrollToFirstError: true, initialValues: folder ? folder : file ? file : {}, children: _jsx(CustomInputFormItem, { name: "name", label: "Name", placeholder: "Enter folder name", rules: [
|
|
144
|
+
{
|
|
145
|
+
required: true,
|
|
146
|
+
message: ENTITY_REQUIRED.replace(":entity", "Name"),
|
|
147
|
+
},
|
|
148
|
+
], showCount: true }) }) }));
|
|
149
|
+
}
|
|
150
|
+
export default AddFolder;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FolderEntity } from "../utilities/constants/interface";
|
|
2
|
+
declare function BreadCrumbList({ folder, parentFolderId, setParentFolderId, pickerFolderId, globalSearch, }: {
|
|
3
|
+
folder: FolderEntity;
|
|
4
|
+
parentFolderId?: string;
|
|
5
|
+
setParentFolderId?: (id: string) => void;
|
|
6
|
+
pickerFolderId?: string;
|
|
7
|
+
globalSearch?: string;
|
|
8
|
+
}): JSX.Element;
|
|
9
|
+
export default BreadCrumbList;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { DriveModes } from "../utilities/constants/interface";
|
|
3
|
+
import { DRIVE_MODES_SCREEN, MY_DRIVE_SCREEN, SUBFOLDERS_SCREEN, } from "../utilities/constants/routes";
|
|
4
|
+
import { Breadcrumb, Tooltip } from "antd";
|
|
5
|
+
import { findIndex, get, isEmpty, last, map, slice } from "lodash";
|
|
6
|
+
import { useMemo } from "react";
|
|
7
|
+
import { FaChevronRight } from "react-icons/fa";
|
|
8
|
+
import { useDamConfig } from "../hocs/DamConfigContext";
|
|
9
|
+
import useAppNavigate from "../utilities/useAppNavigate";
|
|
10
|
+
import useAppParams from "../utilities/useAppParams";
|
|
11
|
+
const FaChevronRightIcon = FaChevronRight;
|
|
12
|
+
function BreadCrumbList({ folder, parentFolderId, setParentFolderId, pickerFolderId, globalSearch, }) {
|
|
13
|
+
const { type, id } = useAppParams();
|
|
14
|
+
const damConfig = useDamConfig();
|
|
15
|
+
const { rootFolderId } = damConfig;
|
|
16
|
+
const navigate = !pickerFolderId ? useAppNavigate() : null;
|
|
17
|
+
const tree = useMemo(() => {
|
|
18
|
+
const fullTree = get(folder, "tree", []);
|
|
19
|
+
if (pickerFolderId) {
|
|
20
|
+
const pickerIndex = findIndex(fullTree, (item) => get(item, "_id") === pickerFolderId);
|
|
21
|
+
const parentIndex = findIndex(fullTree, (item) => get(item, "_id") === parentFolderId);
|
|
22
|
+
if (pickerIndex !== -1) {
|
|
23
|
+
const end = parentIndex !== -1 ? parentIndex + 1 : get(fullTree, "length");
|
|
24
|
+
return slice(fullTree, pickerIndex, end);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return fullTree;
|
|
28
|
+
}, [folder, pickerFolderId, parentFolderId]);
|
|
29
|
+
const homePageInfo = useMemo(() => {
|
|
30
|
+
if (type === DriveModes.ARCHIVES) {
|
|
31
|
+
return {
|
|
32
|
+
url: DRIVE_MODES_SCREEN.replace(":type", DriveModes.TRASH),
|
|
33
|
+
name: "Archives",
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
else if (type === DriveModes.TRASH) {
|
|
37
|
+
return {
|
|
38
|
+
url: DRIVE_MODES_SCREEN.replace(":type", DriveModes.ARCHIVES),
|
|
39
|
+
name: "Trash",
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
else if (type === DriveModes.STARRED) {
|
|
43
|
+
return {
|
|
44
|
+
url: DRIVE_MODES_SCREEN.replace(":type", DriveModes.STARRED),
|
|
45
|
+
name: "Starred",
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
else if (type === DriveModes.SHARED) {
|
|
49
|
+
return {
|
|
50
|
+
url: DRIVE_MODES_SCREEN.replace(":type", DriveModes.SHARED),
|
|
51
|
+
name: "Shared",
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}, [type]);
|
|
58
|
+
return (_jsxs(Breadcrumb, { className: "md-lib-font-semibold md-lib-text-[22px] md-lib-truncate", separator: _jsx(FaChevronRightIcon, { className: "md-lib-mt-2" }), children: [!pickerFolderId && homePageInfo && (_jsx(Breadcrumb.Item, { href: isEmpty(tree) ? undefined : get(homePageInfo, "url"), children: get(homePageInfo, "name", "N/A") })), map(tree, (item, index) => {
|
|
59
|
+
const treeId = get(item, "_id");
|
|
60
|
+
const name = get(item, "name", "N/A");
|
|
61
|
+
const isLast = treeId === get(last(tree), "_id");
|
|
62
|
+
const handleClick = () => {
|
|
63
|
+
if (pickerFolderId && setParentFolderId && !isLast) {
|
|
64
|
+
setParentFolderId(treeId);
|
|
65
|
+
}
|
|
66
|
+
if (!pickerFolderId && !isLast && navigate) {
|
|
67
|
+
if (treeId === rootFolderId) {
|
|
68
|
+
navigate(MY_DRIVE_SCREEN);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
navigate(SUBFOLDERS_SCREEN.replace(":folderId", treeId));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const currentItemRender = (_jsx(Breadcrumb.Item, { onClick: handleClick, className: "md-lib-h-auto md-lib-cursor-pointer", children: _jsx(Tooltip, { title: name, children: _jsx("p", { className: "md-lib-max-w-28 md-lib-truncate md-lib-font-semibold md-lib-text-[22px]", children: name }) }) }, treeId));
|
|
76
|
+
if (globalSearch) {
|
|
77
|
+
if (isLast || index == 0) {
|
|
78
|
+
return currentItemRender;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
return currentItemRender;
|
|
83
|
+
}
|
|
84
|
+
})] }));
|
|
85
|
+
}
|
|
86
|
+
export default BreadCrumbList;
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
11
|
+
import { Form, Modal, Button, Upload, Select, Input, Radio, Typography, Tooltip, } from "antd";
|
|
12
|
+
import { useEffect, useMemo, useState } from "react";
|
|
13
|
+
import { UploadOutlined, InfoCircleOutlined } from "@ant-design/icons";
|
|
14
|
+
import { useDamConfig } from "../hocs/DamConfigContext";
|
|
15
|
+
import { createApiClient } from "../hocs/configureAxios";
|
|
16
|
+
import { BULK_UPLOAD_URL, FETCH_ASSETS_URL, FILE_UPLOAD_URL, GENERATE_THUMBNAILS_URL, SAMPLE_FILE_DOWNLOAD_URL, } from "../utilities/constants/apiUrls";
|
|
17
|
+
import { showNotification } from "../common/notifications";
|
|
18
|
+
import { EMAIL_NOT_VALID, ENTITY_REQUIRED, SOMETHING_WENT_WRONG, } from "../utilities/constants/messages";
|
|
19
|
+
import { NotificationStatus } from "../utilities/constants/interface";
|
|
20
|
+
import { filter, get } from "lodash";
|
|
21
|
+
import { humanFileSize } from "../hocs/helpers";
|
|
22
|
+
import { invalidateData, QueryKeys } from "../utilities/constants/queryKeys";
|
|
23
|
+
import { useQueryClient } from "react-query";
|
|
24
|
+
import { validateEmail } from "../utilities/helpers/validators";
|
|
25
|
+
const BulkUploadModal = ({ toggleUpload, userEmail, folderId, thumbnailsOnly, }) => {
|
|
26
|
+
const damConfig = useDamConfig();
|
|
27
|
+
const queryClient = useQueryClient();
|
|
28
|
+
const { brand, styles } = damConfig;
|
|
29
|
+
const brandId = get(brand, "_id");
|
|
30
|
+
const api = useMemo(() => createApiClient(damConfig), [damConfig]);
|
|
31
|
+
const [metaFile, setMetaFile] = useState(null);
|
|
32
|
+
const [assetTypeId, setAssetTypeId] = useState(null);
|
|
33
|
+
const [assetTypes, setAssetTypes] = useState([]);
|
|
34
|
+
const [fileError, setFileError] = useState("");
|
|
35
|
+
const [assetsSourceType, setAssetsSourceType] = useState("zip");
|
|
36
|
+
const [assetFileError, setAssetFileError] = useState("");
|
|
37
|
+
const [assetFile, setAssetFile] = useState(null);
|
|
38
|
+
const [sampleFileLoading, setSampleFileLoading] = useState(false);
|
|
39
|
+
const assetTypeOptions = assetTypes === null || assetTypes === void 0 ? void 0 : assetTypes.map((type) => {
|
|
40
|
+
return { label: type === null || type === void 0 ? void 0 : type.name, value: type === null || type === void 0 ? void 0 : type._id };
|
|
41
|
+
});
|
|
42
|
+
const [loading, setLoading] = useState(false);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
onFetchAssetTemplates();
|
|
45
|
+
}, []);
|
|
46
|
+
const onFetchAssetTemplates = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
47
|
+
try {
|
|
48
|
+
const response = yield api.get(`${FETCH_ASSETS_URL.replace(":brandId", get(brand, "_id"))}`);
|
|
49
|
+
setAssetTypes(get(response, "data.data", []));
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
showNotification(get(error, "message", SOMETHING_WENT_WRONG), NotificationStatus.ERROR);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const onFinish = (values) => {
|
|
56
|
+
if (!fileError && !assetFileError) {
|
|
57
|
+
if (assetsSourceType == "zip") {
|
|
58
|
+
getBulkUploadFilePresignedUrl(values);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
bulkUpload(values);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
const getBulkUploadFilePresignedUrl = (values) => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
+
setLoading(true);
|
|
67
|
+
const response = yield api.post(FILE_UPLOAD_URL, {
|
|
68
|
+
brandId,
|
|
69
|
+
folderId: folderId,
|
|
70
|
+
files: [
|
|
71
|
+
{
|
|
72
|
+
name: assetFile.name,
|
|
73
|
+
size: assetFile.size,
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
});
|
|
77
|
+
const filePath = get(response, "data.0.filePath");
|
|
78
|
+
const url = get(response, "data.0.url");
|
|
79
|
+
// console.log(response);
|
|
80
|
+
// console.log(filePath);
|
|
81
|
+
fetch(url, {
|
|
82
|
+
method: "PUT",
|
|
83
|
+
body: assetFile,
|
|
84
|
+
})
|
|
85
|
+
.then((response) => {
|
|
86
|
+
bulkUpload(values, filePath);
|
|
87
|
+
})
|
|
88
|
+
.catch((err) => {
|
|
89
|
+
console.log(err);
|
|
90
|
+
setLoading(false);
|
|
91
|
+
showNotification(get(err, "message", SOMETHING_WENT_WRONG), NotificationStatus.ERROR);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
const bulkUpload = (values_1, ...args_1) => __awaiter(void 0, [values_1, ...args_1], void 0, function* (values, key = null) {
|
|
95
|
+
var _a, _b;
|
|
96
|
+
// console.log(key);
|
|
97
|
+
setLoading(true);
|
|
98
|
+
try {
|
|
99
|
+
let response;
|
|
100
|
+
if (thumbnailsOnly) {
|
|
101
|
+
const payload = {
|
|
102
|
+
email: get(values, "email"),
|
|
103
|
+
sourceType: assetsSourceType,
|
|
104
|
+
};
|
|
105
|
+
if (assetsSourceType === "zip" && key) {
|
|
106
|
+
payload["zipFileKey"] = key;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
payload["zipFileUrl"] = get(values, "zip_file_url", "");
|
|
110
|
+
}
|
|
111
|
+
response = yield api.post(GENERATE_THUMBNAILS_URL, payload);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
const formData = new FormData();
|
|
115
|
+
formData.append("assetId", values === null || values === void 0 ? void 0 : values.asset_type_id);
|
|
116
|
+
formData.append("rejectInvalidMetaFile", "true");
|
|
117
|
+
formData.append("zipFileUrl", values === null || values === void 0 ? void 0 : values.zip_file_url);
|
|
118
|
+
formData.append("file", metaFile);
|
|
119
|
+
formData.append("folderId", folderId);
|
|
120
|
+
formData.append("email", values === null || values === void 0 ? void 0 : values.email);
|
|
121
|
+
formData.append("sourceType", assetsSourceType);
|
|
122
|
+
if (key) {
|
|
123
|
+
formData.append("zipFileKey", key);
|
|
124
|
+
}
|
|
125
|
+
response = yield api.post(BULK_UPLOAD_URL, formData);
|
|
126
|
+
}
|
|
127
|
+
// console.log(response);
|
|
128
|
+
showNotification((_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : "Successfully uploaded files", NotificationStatus.SUCCESS);
|
|
129
|
+
toggleUpload();
|
|
130
|
+
invalidateData(queryClient, QueryKeys.FOLDERS, folderId);
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
console.log(error);
|
|
134
|
+
showNotification(get(error, "message", SOMETHING_WENT_WRONG), NotificationStatus.ERROR);
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
setLoading(false);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
const handleDownloadSampleFile = (assetId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
141
|
+
setSampleFileLoading(true);
|
|
142
|
+
try {
|
|
143
|
+
const response = yield api.post(SAMPLE_FILE_DOWNLOAD_URL.replace(":assetId", assetId), {});
|
|
144
|
+
if (get(response, "data.url"))
|
|
145
|
+
window.open(get(response, "data.url", "_blank"));
|
|
146
|
+
setSampleFileLoading(false);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
setSampleFileLoading(false);
|
|
150
|
+
showNotification(get(error, "message", SOMETHING_WENT_WRONG));
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
return (_jsx(Modal, { open: true, onCancel: toggleUpload, title: thumbnailsOnly ? "Generate Thumbnails" : "Bulk upload", footer: null, maskClosable: false, okText: thumbnailsOnly ? "Generate" : "Save", children: _jsxs(Form, { layout: "vertical", onFinish: onFinish, initialValues: {
|
|
154
|
+
assets_source_type: assetsSourceType,
|
|
155
|
+
email: userEmail,
|
|
156
|
+
}, children: [!thumbnailsOnly && (_jsxs(_Fragment, { children: [_jsx(Form.Item, { label: _jsxs("div", { className: "bulk-upload-info", children: [_jsx(Typography.Text, { children: "Asset Type" }), " ", _jsx(Tooltip, { title: "Select from dropdown below, or refer to the Asset Templates to see what asset types currently exist.", children: _jsx(InfoCircleOutlined, {}) })] }), name: "asset_type_id", rules: [
|
|
157
|
+
{
|
|
158
|
+
required: true,
|
|
159
|
+
message: "Asset type is required",
|
|
160
|
+
},
|
|
161
|
+
], children: _jsx(Select, { options: assetTypeOptions, placeholder: "Select Asset Type", onChange: (e) => {
|
|
162
|
+
setAssetTypeId(e);
|
|
163
|
+
// setDownloadSampleFileError(null);
|
|
164
|
+
}, optionFilterProp: "label", showSearch: true }) }), assetTypeId && (_jsx("div", { children: _jsx("a", { onClick: sampleFileLoading
|
|
165
|
+
? () => { }
|
|
166
|
+
: () => handleDownloadSampleFile(assetTypeId), className: "md-lib-font-semibold md-lib-text-primaryColor md-lib-flex md-lib-justify-end", children: sampleFileLoading
|
|
167
|
+
? "Downloading..."
|
|
168
|
+
: "Download Sample File" }) })), _jsx(Form.Item, { label: "Meta File", name: "meta_file", rules: [
|
|
169
|
+
{
|
|
170
|
+
required: true,
|
|
171
|
+
message: "Meta File is required",
|
|
172
|
+
},
|
|
173
|
+
], extra: "Maximum allowed file size is 5MB", children: _jsx(Upload, { beforeUpload: (file) => {
|
|
174
|
+
var _a;
|
|
175
|
+
const [name, extension] = (_a = file.name) === null || _a === void 0 ? void 0 : _a.split(".");
|
|
176
|
+
if (extension !== "csv" &&
|
|
177
|
+
extension !== "xlsx" &&
|
|
178
|
+
extension !== "xls") {
|
|
179
|
+
setFileError("Invalid file format");
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
const fileSize = humanFileSize(file === null || file === void 0 ? void 0 : file.size);
|
|
183
|
+
if ((fileSize === null || fileSize === void 0 ? void 0 : fileSize.sizeType) !== "GB" &&
|
|
184
|
+
(fileSize === null || fileSize === void 0 ? void 0 : fileSize.sizeType) !== "TB") {
|
|
185
|
+
if ((fileSize === null || fileSize === void 0 ? void 0 : fileSize.sizeType) == "MB") {
|
|
186
|
+
if ((fileSize === null || fileSize === void 0 ? void 0 : fileSize.size) < 5) {
|
|
187
|
+
setMetaFile(file);
|
|
188
|
+
setFileError("");
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
setFileError("File size should be less than 5MB");
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
setMetaFile(file);
|
|
197
|
+
setFileError("");
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
setFileError("File size should be less than 5MB");
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return false;
|
|
206
|
+
}, disabled: !assetTypeId, onRemove: () => {
|
|
207
|
+
setMetaFile(null);
|
|
208
|
+
setFileError("Meta File is required");
|
|
209
|
+
}, accept: ".csv,.xlsx,.xls", maxCount: 1, children: _jsx(Button, { icon: _jsx(UploadOutlined, {}), disabled: !assetTypeId, children: "Upload" }) }) }), fileError && (_jsx(Typography.Text, { style: { color: "red" }, children: fileError }))] })), _jsx(Form.Item, { label: "Upload your DAM Files (must be zipped)", name: "assets_source_type", children: _jsxs(Radio.Group, { onChange: (e) => setAssetsSourceType(e.target.value), value: assetsSourceType, disabled: thumbnailsOnly ? false : !assetTypeId, children: [_jsx(Radio, { value: "zip", children: "Zip file" }), _jsx(Radio, { value: "zipUrl", children: "Zip file url" })] }) }), assetsSourceType == "zip" ? (_jsxs(_Fragment, { children: [_jsx(Form.Item, { label: "Assets zip file", name: "assets_zip_file", rules: [
|
|
210
|
+
{
|
|
211
|
+
required: true,
|
|
212
|
+
message: "Asset zip file is required",
|
|
213
|
+
},
|
|
214
|
+
], extra: "Maximum allowed file size is 5GB", children: _jsx(Upload, { beforeUpload: (file) => {
|
|
215
|
+
var _a;
|
|
216
|
+
const [name, extension] = (_a = file.name) === null || _a === void 0 ? void 0 : _a.split(".");
|
|
217
|
+
if (extension !== "zip") {
|
|
218
|
+
setAssetFileError("Invalid file format");
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
const fileSize = humanFileSize(file === null || file === void 0 ? void 0 : file.size);
|
|
222
|
+
if ((fileSize === null || fileSize === void 0 ? void 0 : fileSize.sizeType) !== "TB") {
|
|
223
|
+
if ((fileSize === null || fileSize === void 0 ? void 0 : fileSize.sizeType) == "GB") {
|
|
224
|
+
if ((fileSize === null || fileSize === void 0 ? void 0 : fileSize.size) < 5) {
|
|
225
|
+
setAssetFile(file);
|
|
226
|
+
setAssetFileError("");
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
setAssetFileError("File size should be less than 5GB");
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
setAssetFile(file);
|
|
235
|
+
setAssetFileError("");
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
setAssetFileError("File size should be less than 5GB");
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return false;
|
|
244
|
+
}, disabled: thumbnailsOnly ? false : !assetTypeId, onRemove: () => {
|
|
245
|
+
setAssetFile(null);
|
|
246
|
+
setAssetFileError("Zip File is required");
|
|
247
|
+
}, accept: ".zip", maxCount: 1, children: _jsx(Button, { icon: _jsx(UploadOutlined, {}), style: { width: "100%" }, children: "Upload" }) }) }), assetFileError && (_jsx(Typography.Text, { style: { color: "red" }, children: assetFileError }))] })) : (_jsx(Form.Item, { label: "Assets zip file url", name: "zip_file_url", rules: [
|
|
248
|
+
{
|
|
249
|
+
required: true,
|
|
250
|
+
message: "Zip file url is required",
|
|
251
|
+
},
|
|
252
|
+
], children: _jsx(Input, { placeholder: "Zip file url", disabled: thumbnailsOnly ? false : !assetTypeId }) })), thumbnailsOnly ? (_jsx(Form.Item, { name: "email", label: "Emails", rules: [
|
|
253
|
+
{
|
|
254
|
+
required: true,
|
|
255
|
+
message: "",
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
validator: (_, value) => {
|
|
259
|
+
if (!value || value.length === 0) {
|
|
260
|
+
return Promise.reject(ENTITY_REQUIRED.replace(":entity", "Emails").replace("is", "are"));
|
|
261
|
+
}
|
|
262
|
+
const invalids = filter(value, (v) => !get(validateEmail(v), "valid"));
|
|
263
|
+
if (invalids.length > 0) {
|
|
264
|
+
return Promise.reject(EMAIL_NOT_VALID);
|
|
265
|
+
}
|
|
266
|
+
return Promise.resolve();
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
], children: _jsx(Select, { mode: "tags", className: `share-link-dropdown md-lib-w-full`, placeholder: "Press enter to add email", tokenSeparators: [","], optionFilterProp: "children", suffixIcon: null, open: false }) })) : (_jsx(Form.Item, { label: "Email (you will receive an upload confirmation receipt)", name: "email", rules: [
|
|
270
|
+
{
|
|
271
|
+
required: true,
|
|
272
|
+
message: "Email is required",
|
|
273
|
+
},
|
|
274
|
+
], children: _jsx(Input, { placeholder: "Email", disabled: !assetTypeId }) })), _jsx(Form.Item, { children: _jsx(Button, { block: true, type: "primary", htmlType: "submit", style: {
|
|
275
|
+
marginBottom: "10px",
|
|
276
|
+
backgroundColor: styles === null || styles === void 0 ? void 0 : styles.primaryColor,
|
|
277
|
+
}, loading: loading, disabled: thumbnailsOnly ? false : !assetTypeId, children: "Submit" }) })] }) }));
|
|
278
|
+
};
|
|
279
|
+
export default BulkUploadModal;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SetStateAction } from "react";
|
|
2
|
+
import { FileEntity, ImagePickerEntity } from "../utilities/constants/interface";
|
|
3
|
+
declare function DriveContainer({ parentFolderId, setSelectedFile, setParentFolderId, pickerFolderId, selectedPickerFile, imagePicker, globalSearch, setGlobalSearch, }: {
|
|
4
|
+
parentFolderId?: string;
|
|
5
|
+
setSelectedFile?: (file: FileEntity, localFile?: boolean) => void;
|
|
6
|
+
setParentFolderId?: (id: string) => void;
|
|
7
|
+
pickerFolderId?: string;
|
|
8
|
+
selectedPickerFile?: FileEntity;
|
|
9
|
+
imagePicker?: ImagePickerEntity | {};
|
|
10
|
+
globalSearch?: string;
|
|
11
|
+
setGlobalSearch?: React.Dispatch<SetStateAction<string>>;
|
|
12
|
+
}): JSX.Element;
|
|
13
|
+
export default DriveContainer;
|