@apia/uploader-controller 4.0.46 → 4.0.50
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/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/directories/utils.ts","../src/directories/nodes/DocumentNode.ts","../src/directories/nodes/DirectoryPickerFolderNode.ts","../src/directories/DirectoriesPicker.ts","../src/UploaderModalController.ts","../src/util.ts","../src/UploaderApi.ts","../src/directories/nodes/FilePickerFolderNode.ts","../src/directories/FilePicker.ts"],"sourcesContent":["import type { UploaderApi } from '../UploaderApi';\r\n\r\nexport const DirectoryPickerActions = {\r\n ajaxUrl: (api: UploaderApi) => api.context.URL_REQUEST_AJAX,\r\n loadFolderStructure: 'loadFolderStructure',\r\n loadFilesForFolder: 'loadFilesForFolder',\r\n};\r\n\r\nexport const FilePickerActions = {\r\n ajaxUrl: 'apia.modals.FoldersAction.run',\r\n loadFileSystemStructureTree: 'loadFileSystemStructureTree',\r\n loadFilesForFolder: 'loadFilesForFolder',\r\n loadFolderStructure: 'loadFolderStructure',\r\n};\r\n\r\nexport function makeId(str: string) {\r\n return str.replaceAll(/\\W/g, '_');\r\n}\r\n","import { MobXTreeNode } from '@apia/tree2-controller';\r\nimport { DirectoriesPicker } from '../DirectoriesPicker';\r\nimport { uniqueId } from 'lodash-es';\r\nimport { TCreateTreeNode } from '../types';\r\nimport { DirectoryPickerFolderNode } from './DirectoryPickerFolderNode';\r\n\r\nexport class DocumentNode extends MobXTreeNode {\r\n constructor(\r\n parent: DirectoryPickerFolderNode | DirectoriesPicker,\r\n { parentId, id, ...props }: TCreateTreeNode,\r\n ) {\r\n const renderers = (parent.tree as DirectoriesPicker).api.modalConfig\r\n .renderers!;\r\n\r\n super(id ?? uniqueId('filepickertree'), parent, {\r\n icon: renderers.FileIconRenderer,\r\n isLeaf: true,\r\n\r\n ...props,\r\n });\r\n }\r\n}\r\n","import { MobXTreeNode } from '@apia/tree2-controller';\r\nimport { DirectoriesPicker } from '../DirectoriesPicker';\r\nimport { uniqueId } from 'lodash-es';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { ApiaApi } from '@apia/api2';\r\nimport { TCreateTreeNode, TDirectoriesPickerResponse } from '../types';\r\nimport { arrayOrArray, getLabel } from '@apia/util';\r\nimport { DirectoryPickerActions, makeId } from '../utils';\r\n\r\nexport class DirectoryPickerFolderNode extends MobXTreeNode {\r\n protected loadMoreDocsNode: MobXTreeNode | null = null;\r\n protected removeLoadMoreDocsNode() {\r\n this.loadMoreDocsNode?.remove();\r\n this.loadMoreDocsNode = null;\r\n }\r\n isLoadingMore = false;\r\n\r\n constructor(\r\n parent: DirectoryPickerFolderNode | DirectoriesPicker,\r\n { parentId, id, ...props }: TCreateTreeNode,\r\n ) {\r\n const renderers = (parent.tree as DirectoriesPicker).api.props.modalConfig\r\n .renderers!;\r\n\r\n super(id ?? uniqueId('filepickertree'), parent, {\r\n asyncNode: true,\r\n icon:\r\n props.nodeProps?.canWrite === false\r\n ? renderers.LockedFolderIconRenderer\r\n : renderers.FolderIconRenderer,\r\n isSelectable: props.nodeProps?.canWrite !== false,\r\n\r\n ...props,\r\n });\r\n\r\n makeObservable(this, {\r\n isLoadingMore: observable,\r\n });\r\n }\r\n\r\n getTree() {\r\n return this.tree as DirectoriesPicker;\r\n }\r\n\r\n public async loadMore(focus = true) {\r\n const res = await ApiaApi.post<TDirectoriesPickerResponse>(\r\n this.getTree().api.context,\r\n {\r\n ajaxUrl: DirectoryPickerActions.ajaxUrl(this.getTree().api),\r\n action: DirectoryPickerActions.loadFolderStructure,\r\n preventAsXmlParameter: true,\r\n isAjax: true,\r\n },\r\n {\r\n postData: {\r\n txtFld: this.state.nodeProps.id,\r\n loadFolders: true,\r\n until: this.id,\r\n },\r\n postDataTreatement: 'stringify',\r\n postDataStringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n if (res?.data) {\r\n this.removeLoadMoreDocsNode();\r\n const lastNode = this.getChildren()[this.getChildren().length - 1];\r\n\r\n arrayOrArray(res.data.folder).forEach((folder) => {\r\n if (!this.state.children.has(folder.id)) {\r\n this.getTree().createFolder({\r\n id: makeId(folder.id),\r\n label: folder.name,\r\n nodeProps: folder,\r\n parentId: this.id,\r\n });\r\n }\r\n });\r\n arrayOrArray(res.data.documents?.document).forEach((document) => {\r\n if (!this.state.children.has(document.id)) {\r\n this.getTree().createDocument({\r\n id: makeId(document.id),\r\n label: document.name,\r\n nodeProps: document,\r\n parentId: this.id,\r\n });\r\n }\r\n });\r\n if ((res?.data.documents?.documentInfo?.moreDocs ?? 0) > 0) {\r\n this.loadMoreDocsNode = this.getTree().createFolder({\r\n asyncNode: false,\r\n icon: undefined,\r\n isLeaf: true,\r\n label: getLabel('lblShwMoreEls').text,\r\n labelRenderer: this.getTree().renderers!.LoadMoreRenderer,\r\n onClick: async () => {\r\n if (this.loadMoreDocsNode) {\r\n this.loadMoreDocsNode.state.nodeProps.isLoadingMore = true;\r\n }\r\n await this.loadMore();\r\n },\r\n parentId: this.id,\r\n });\r\n if (focus) {\r\n this.tree.focusNode(this.loadMoreDocsNode);\r\n }\r\n } else {\r\n if (focus) {\r\n this.tree.focusNode(lastNode.getFollowingSibling() ?? lastNode);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async refresh() {\r\n this.removeAllChildren();\r\n this.loadMoreDocsNode = null;\r\n const res = this.loadMore(false);\r\n this.tree.focusNode(this.getFirstChildren(true) ?? this);\r\n return res;\r\n }\r\n}\r\n","import { MobXTree, MobXTreeNode } from '@apia/tree2-controller';\r\nimport { TCreateTreeNode, TDirectoriesPickerResponse } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { DirectoryPickerActions, makeId } from './utils';\r\nimport { DocumentNode } from './nodes/DocumentNode';\r\nimport { DirectoryPickerFolderNode } from './nodes/DirectoryPickerFolderNode';\r\nimport type { UploaderApi } from '../UploaderApi';\r\nimport type { TModalConfig } from '../types';\r\nimport { ApiaApi, TApiaApiAxiosResponse } from '@apia/api2';\r\n\r\nexport class DirectoriesPicker extends MobXTree {\r\n isLoading = true;\r\n public renderers: TModalConfig['renderers'];\r\n\r\n constructor(public api: UploaderApi) {\r\n super({\r\n className: 'FilePickerTree',\r\n isMultiple: false,\r\n });\r\n this.state.disableSelection = false;\r\n\r\n setTimeout(() => {\r\n this.initialLoad();\r\n }, 0);\r\n\r\n this.renderers = api.props.modalConfig.renderers!;\r\n makeObservable(this, { isLoading: observable });\r\n }\r\n\r\n createDocument(nodeProps: TCreateTreeNode): DocumentNode {\r\n let parentNode: undefined | DirectoriesPicker | DirectoryPickerFolderNode =\r\n this.getNodeById(nodeProps.parentId) as DirectoryPickerFolderNode;\r\n\r\n if (!parentNode) {\r\n console.warn('Cannot find parent node with id = ', nodeProps.parentId);\r\n parentNode = this;\r\n }\r\n\r\n const newNode = new DocumentNode(this, nodeProps);\r\n parentNode.append(newNode);\r\n\r\n return newNode;\r\n }\r\n\r\n createFolder(nodeProps: TCreateTreeNode): DirectoryPickerFolderNode {\r\n let parentNode: undefined | DirectoriesPicker | DirectoryPickerFolderNode =\r\n this.getNodeById(nodeProps.parentId) as DirectoryPickerFolderNode;\r\n\r\n if (!parentNode) {\r\n console.warn('Cannot find parent node with id = ', nodeProps.parentId);\r\n parentNode = this;\r\n }\r\n\r\n const newNode = this.getNodeHandler(nodeProps) as DirectoryPickerFolderNode;\r\n parentNode.append(newNode);\r\n\r\n return newNode;\r\n }\r\n\r\n async initialLoad() {\r\n this.state.onLoadData = async (node) => {\r\n await (node as DirectoryPickerFolderNode).refresh();\r\n };\r\n\r\n const res = await ApiaApi.post<TDirectoriesPickerResponse>(\r\n this.api.context,\r\n this.getFolderStructureParams(),\r\n );\r\n\r\n if (res?.data) {\r\n const foldersArray = this.parseStructureResponse(res);\r\n\r\n let selected: string = '';\r\n\r\n foldersArray?.forEach((folder) => {\r\n const newNode = this.createFolder({\r\n asyncNode: true,\r\n id: makeId(folder.id),\r\n label: folder.name,\r\n nodeProps: folder,\r\n parentId: folder.parent || 'root',\r\n });\r\n\r\n if (folder.parent) {\r\n (newNode.parent as MobXTreeNode).expand();\r\n }\r\n\r\n if (folder.selectedFolder) {\r\n selected = makeId(folder.id);\r\n }\r\n\r\n if (\r\n String(this.api.props.modalConfig.defaultDirectory) ===\r\n String(newNode.id)\r\n ) {\r\n newNode.tree.setSelectedNodes(new Set([newNode]));\r\n }\r\n });\r\n\r\n if (selected) {\r\n this.setSelectedNodes(new Set([selected]));\r\n }\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n\r\n getFolderStructureParams() {\r\n return {\r\n ajaxUrl: DirectoryPickerActions.ajaxUrl(this.api),\r\n action: DirectoryPickerActions.loadFolderStructure,\r\n preventAsXmlParameter: true,\r\n isAjax: true,\r\n isXml: true,\r\n docId: this.api.state.versioningFile?.docId,\r\n };\r\n }\r\n getNodeHandler(nodeProps: TCreateTreeNode) {\r\n return new DirectoryPickerFolderNode(this, nodeProps);\r\n }\r\n\r\n parseStructureResponse(res: any) {\r\n const castRes = res as TApiaApiAxiosResponse<TDirectoriesPickerResponse>;\r\n if (castRes?.data?.folder) return arrayOrArray(castRes.data.folder);\r\n\r\n return null;\r\n }\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { UploaderApi } from './UploaderApi';\r\nimport {\r\n IPoolsPermissions,\r\n IUsersPermissions,\r\n TApiaDocumentDefinition,\r\n TModalConfig,\r\n TUploaderFileInfo,\r\n UploadContext,\r\n UploaderModalState,\r\n} from './types';\r\nimport { getLabel } from '@apia/util';\r\nimport { DirectoriesPicker } from './directories/DirectoriesPicker';\r\n\r\nfunction getFileExtension(fileName: string): string {\r\n const parts = fileName.split('.');\r\n return parts.length > 1 ? parts.pop()!.toLowerCase() : '';\r\n}\r\n\r\nconst getInitialState: (\r\n context: UploadContext,\r\n) => Readonly<UploaderModalState> = (context: UploadContext) =>\r\n Object.freeze({\r\n metadata: {\r\n metadataArray: [],\r\n freeMetadataArray: [],\r\n isFreeMetadata: false,\r\n },\r\n fromDirectoryFile: null,\r\n docFolder: undefined,\r\n docPath: undefined,\r\n docExpDate: undefined,\r\n description: '',\r\n isReadonly: false,\r\n permissions: {\r\n pools: [],\r\n users: context.ownerCanUpdate\r\n ? [\r\n {\r\n canUpdate: true,\r\n userId: context.currentUserLogin,\r\n userLogin: context.currentUserLogin,\r\n },\r\n ]\r\n : [],\r\n allowAllType: (context.everyoneCanUpdate !== false ? 'M' : '') as 'M',\r\n },\r\n fileReqError: false,\r\n });\r\n\r\nexport class UploaderModalController {\r\n public directories: DirectoriesPicker | null = null;\r\n public state: UploaderModalState;\r\n\r\n constructor(\r\n public api: UploaderApi,\r\n public modalConfig: TModalConfig,\r\n public conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n versionFile?: TUploaderFileInfo;\r\n },\r\n ) {\r\n makeObservable(this, {\r\n state: observable,\r\n });\r\n\r\n this.state = getInitialState(api.props.context);\r\n\r\n if (modalConfig.showDirectoriesStructure) {\r\n if (!api.props.modalConfig.renderers) {\r\n throw new Error('If showDirectories is set, renderers are required');\r\n }\r\n\r\n this.directories = new DirectoriesPicker(this.api);\r\n }\r\n }\r\n\r\n public get allMetadata() {\r\n return [\r\n ...this.state.metadata.metadataArray,\r\n ...this.state.metadata.freeMetadataArray,\r\n ];\r\n }\r\n\r\n public get allowAllType() {\r\n return this.state.permissions.allowAllType;\r\n }\r\n\r\n public get description() {\r\n return this.state.description;\r\n }\r\n\r\n public get docFolder() {\r\n return this.state.docFolder;\r\n }\r\n\r\n public get docExpDate() {\r\n return this.state.docExpDate;\r\n }\r\n\r\n public get docTypes() {\r\n return this.api.getDocTypes();\r\n }\r\n\r\n public get freeMetadata() {\r\n return this.state.metadata.freeMetadataArray;\r\n }\r\n\r\n public get exitingFiles() {\r\n return this.api.getExistingFiles();\r\n }\r\n\r\n public get inProgressFiles() {\r\n return this.api.getInProgressFiles();\r\n }\r\n\r\n public get hiddenFiles() {\r\n return this.api.getHiddenFiles();\r\n }\r\n\r\n public get progress() {\r\n return this.api.getProgress();\r\n }\r\n\r\n public get metadata() {\r\n return this.state.metadata.metadataArray;\r\n }\r\n\r\n public get selectedDocTypeId() {\r\n return this.api.getCurrentDocTypeId();\r\n }\r\n\r\n public get selectedDocType() {\r\n return this.api.getCurrentDocType();\r\n }\r\n\r\n public addMetadata() {\r\n this.state.metadata.freeMetadataArray.push({\r\n free: 'Y',\r\n id: String(Math.random()),\r\n name: '',\r\n required: 'Y',\r\n title: '',\r\n type: 'S',\r\n value: '',\r\n errorMessage: '',\r\n labelErrorMessage: '',\r\n });\r\n }\r\n\r\n public addFiles(files: File[]) {\r\n this.state.fileReqError = false;\r\n this.state.isReadonly = false;\r\n this.api.saveDroppedFiles(files, this.conf);\r\n }\r\n\r\n public addDirectoryFile(file: TApiaDocumentDefinition) {\r\n this.state.fileReqError = false;\r\n this.api.state.inProgressFiles = [];\r\n this.state.fromDirectoryFile = file;\r\n }\r\n public async changeDocType(docTypeId: string) {\r\n this.resetMetadata();\r\n this.api.setCurrentDocTypeId(docTypeId);\r\n this.onChangeExtension();\r\n this.api.reloadMetadata({ docTypeId });\r\n }\r\n\r\n public clearDirectoryFile() {\r\n this.state.fromDirectoryFile = null;\r\n this.state.isReadonly = false;\r\n }\r\n\r\n public clearFile(name: string) {\r\n this.api.clearFile(name);\r\n }\r\n\r\n public clearFiles() {\r\n this.api.clearFiles();\r\n }\r\n\r\n public clearState() {\r\n this.state = getInitialState(this.api.props.context);\r\n this.api.clearState();\r\n }\r\n\r\n public clearPartialState() {\r\n if (this.api.state.inProgressFiles.length === 0) {\r\n this.state = getInitialState(this.api.props.context);\r\n }\r\n }\r\n\r\n public onCloseModal() {\r\n this.clearState();\r\n }\r\n\r\n public async confirm() {\r\n let isValid = this.validate();\r\n if (isValid) isValid = await this.api.confirmDropModal(this.conf);\r\n return isValid;\r\n }\r\n\r\n public deleteMetadata(indices: number[]) {\r\n const deleteSet = new Set(indices);\r\n const offset = this.state.metadata.metadataArray.length;\r\n\r\n this.state.metadata.freeMetadataArray =\r\n this.state.metadata.freeMetadataArray.filter(\r\n (_, localIndex) =>\r\n // conservamos sólo los que NO estén en deleteSet\r\n !deleteSet.has(localIndex + offset),\r\n );\r\n }\r\n\r\n public deletePermission(item: IPoolsPermissions | IUsersPermissions) {\r\n if (item && 'userId' in item) {\r\n this.state.permissions.users = this.state.permissions.users.filter(\r\n (c) => c.userId !== item.userId,\r\n );\r\n } else {\r\n this.state.permissions.pools = this.state.permissions.pools.filter(\r\n (c) => c.poolId !== item.poolId,\r\n );\r\n }\r\n }\r\n\r\n protected onChangeExtension(): void {\r\n const rawDocExts = this.api.getCurrentDocType()?.docExts || '';\r\n let hideFileNames = '';\r\n const allowedExtensions = rawDocExts\r\n .split(';')\r\n .map((ext) => ext.trim())\r\n .filter((ext) => ext !== '');\r\n\r\n if (rawDocExts === '') {\r\n const allFiles = [...this.inProgressFiles, ...this.hiddenFiles];\r\n const dedupedFiles = Array.from(\r\n new Map(allFiles.map((file: File) => [file.name, file])).values(),\r\n );\r\n this.api.state.inProgressFiles = dedupedFiles;\r\n this.api.state.hiddenFiles = [];\r\n return;\r\n }\r\n\r\n const allowedInProgress: File[] = [];\r\n const toHide: File[] = [];\r\n this.inProgressFiles.forEach((file: File) => {\r\n const ext = getFileExtension(file.name);\r\n if (allowedExtensions.includes(ext)) {\r\n allowedInProgress.push(file);\r\n } else {\r\n toHide.push(file);\r\n hideFileNames += ` ${file.name} `;\r\n }\r\n });\r\n\r\n const allowedHidden: File[] = [];\r\n const stillHidden: File[] = [];\r\n this.api.state.hiddenFiles.forEach((file: File) => {\r\n const ext = getFileExtension(file.name);\r\n if (allowedExtensions.includes(ext)) {\r\n allowedHidden.push(file);\r\n } else {\r\n stillHidden.push(file);\r\n }\r\n });\r\n\r\n const combinedInProgress = [...allowedInProgress, ...allowedHidden];\r\n const dedupedInProgress = Array.from(\r\n new Map(\r\n combinedInProgress.map((file: File) => [file.name, file]),\r\n ).values(),\r\n );\r\n const combinedHidden = [...toHide, ...stillHidden];\r\n const dedupedHidden = Array.from(\r\n new Map(combinedHidden.map((file: File) => [file.name, file])).values(),\r\n );\r\n\r\n this.api.state.inProgressFiles = dedupedInProgress;\r\n this.api.state.hiddenFiles = dedupedHidden;\r\n if (hideFileNames)\r\n this.api.notify({\r\n title: getLabel('msgFileWrngExt').text,\r\n message: hideFileNames,\r\n type: 'warning',\r\n });\r\n }\r\n\r\n public setDescription(desc: string) {\r\n this.state.description = desc;\r\n }\r\n\r\n protected async resetMetadata() {\r\n this.state.metadata = {\r\n freeMetadataArray: [],\r\n metadataArray: [],\r\n isFreeMetadata: false,\r\n };\r\n }\r\n\r\n public validate(): boolean {\r\n let isValid = true;\r\n this.state.fileReqError = false;\r\n if (\r\n this.api.getInProgressFiles().length === 0 &&\r\n !this.state.fromDirectoryFile\r\n ) {\r\n this.state.fileReqError = true;\r\n isValid = false;\r\n }\r\n\r\n this.allMetadata.forEach((c) => {\r\n if (c.free === 'Y') {\r\n if (c.title.trim() === '') {\r\n c.labelErrorMessage = getLabel('msgReqField').text;\r\n isValid = false;\r\n }\r\n if (c.value.trim() === '') {\r\n if (!c.errorMessage) c.errorMessage = getLabel('msgReqField').text;\r\n isValid = false;\r\n }\r\n }\r\n });\r\n\r\n return isValid;\r\n }\r\n}\r\n","import { toBoolean } from '@apia/util';\r\nimport { UploadContext, TFileUploaded, TUploaderFileInfo } from './types';\r\n\r\nexport const parseFileDefinition = (\r\n context: UploadContext,\r\n fileDefinition: TFileUploaded | TUploaderFileInfo,\r\n isSignRequired: boolean,\r\n): TUploaderFileInfo => {\r\n const { lock, isLocked, lockedBy, userLocking, ...file } =\r\n fileDefinition as TFileUploaded;\r\n\r\n return {\r\n ...file,\r\n isLocked:\r\n isLocked === 'true' ||\r\n isLocked === true ||\r\n toBoolean(lock) ||\r\n file.locked === true,\r\n isLockedByMe: (lockedBy || userLocking) === context.currentUserLogin,\r\n isMarkedToSign: file.markedToSign || toBoolean(file.sign) || isSignRequired,\r\n isVirtual: file.virtualDoc ?? false,\r\n lockingUser: lockedBy || userLocking,\r\n };\r\n};\r\n","import {\r\n addBoundary,\r\n arrayOrArray,\r\n downloadUrl,\r\n EventEmitter,\r\n formatMessage,\r\n getLabel,\r\n NotificationDefinition,\r\n parseAsSize,\r\n TApiaFunction,\r\n TApiaLoad,\r\n} from '@apia/util';\r\nimport {\r\n IPoolsPermissions,\r\n IUsersPermissions,\r\n TAjaxUploadFileStatus,\r\n TAjaxUploadStart,\r\n TConfirmDropModal,\r\n TDocType,\r\n TDocumentMetadata,\r\n TFileUploaded,\r\n TProcessDroppedFiles,\r\n TSaveDroppedFilesConf,\r\n TModalConfig,\r\n TUploaderFileInfo,\r\n TUploaderLoadCurrentFunction,\r\n TUploaderLoadCurrentFunctionMessages,\r\n UploaderState,\r\n TDocumentInformation,\r\n TRequireOnlyOne,\r\n UploadContext,\r\n} from './types';\r\nimport { UploaderModalController } from './UploaderModalController';\r\nimport QueryString from 'qs';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { ApiaApi } from '@apia/api2';\r\nimport { parseFileDefinition } from './util';\r\n\r\nexport class UploaderApi extends EventEmitter<{ fileUploaded: null }> {\r\n maxFiles = Infinity;\r\n modalController: UploaderModalController | null = null;\r\n langs: Record<number, string> | undefined;\r\n currentConfiguration: TUploaderLoadCurrentFunctionMessages | undefined;\r\n state: UploaderState = {\r\n progress: 0,\r\n allowedTypes: [],\r\n selectedDocTypeId: '1',\r\n versioningFile: null,\r\n inProgressFiles: [],\r\n files: {},\r\n selectedFiles: [],\r\n hiddenFiles: [],\r\n translatedFiles: new Map(),\r\n hasAllDocTypes: false,\r\n };\r\n get filesArray() {\r\n return Object.values(this.state.files);\r\n }\r\n\r\n get id() {\r\n return this.props.id;\r\n }\r\n\r\n get modalConfig() {\r\n return this.props.modalConfig;\r\n }\r\n\r\n constructor(\r\n public props: {\r\n context: UploadContext;\r\n id: string;\r\n modalConfig: TModalConfig;\r\n },\r\n ) {\r\n super();\r\n makeObservable(this, {\r\n state: observable,\r\n });\r\n this.langs = this.props.context.docLangs;\r\n }\r\n\r\n get context() {\r\n return this.props.context;\r\n }\r\n\r\n async init() {\r\n await this.ajaxUploadStart();\r\n await this.reloadMetadata({\r\n docTypeId: this.state.selectedDocTypeId,\r\n });\r\n await this.loadCurrentDocuments();\r\n }\r\n\r\n protected buildModalController(conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n versionFile?: TUploaderFileInfo;\r\n }) {\r\n return new UploaderModalController(this, this.props.modalConfig, conf);\r\n }\r\n\r\n async onStartUpload(files?: File[]) {\r\n if (this.props.modalConfig.oneClickUpload) {\r\n await this.saveDroppedFiles(files ?? []);\r\n } else {\r\n if (files) {\r\n const result = await this.saveDroppedFiles(files ?? []);\r\n if (!result) return;\r\n }\r\n this.modalController = this.buildModalController();\r\n this.context.openModal();\r\n }\r\n }\r\n\r\n async onTranslateUpload(\r\n conf: {\r\n langId: number;\r\n translatingFile: TUploaderFileInfo;\r\n },\r\n files?: File[],\r\n ) {\r\n if (this.props.modalConfig.oneClickUpload) {\r\n await this.saveDroppedFiles(files ?? [], conf);\r\n } else {\r\n await this.init();\r\n\r\n let mustOpen = true;\r\n\r\n if (files) {\r\n const res = await this.saveDroppedFiles(files ?? [], conf);\r\n if (!res) {\r\n mustOpen = false;\r\n }\r\n }\r\n\r\n if (mustOpen) {\r\n this.modalController = this.buildModalController(conf);\r\n this.context.openModal();\r\n }\r\n }\r\n }\r\n\r\n async onVersionUpload(\r\n file: TUploaderFileInfo,\r\n conf: {\r\n newFiles?: File[];\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n } = { newFiles: [] },\r\n ) {\r\n this.version(file, conf);\r\n }\r\n\r\n async autoLock(): Promise<boolean> {\r\n return new Promise<boolean>((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n\r\n public notify(notification: NotificationDefinition) {\r\n this.props.context.notify(notification);\r\n }\r\n\r\n protected getAjaxUrl(): string {\r\n return this.props.context.URL_REQUEST_AJAX;\r\n }\r\n\r\n public getDocTypes() {\r\n return this.state.allowedTypes;\r\n }\r\n\r\n public getCurrentDocTypeId() {\r\n return this.state.selectedDocTypeId;\r\n }\r\n\r\n public getCurrentDocType() {\r\n return this.state.allowedTypes.find(\r\n (c) => c.id === this.state.selectedDocTypeId,\r\n );\r\n }\r\n\r\n public getInProgressFiles() {\r\n return this.state.inProgressFiles;\r\n }\r\n\r\n public getHiddenFiles() {\r\n return this.state.hiddenFiles;\r\n }\r\n\r\n public getExistingFiles() {\r\n return this.state.files;\r\n }\r\n\r\n public getProgress() {\r\n return this.state.progress;\r\n }\r\n\r\n public getHasAllDocTypes() {\r\n return this.state.hasAllDocTypes;\r\n }\r\n\r\n async getDocumentInfo(\r\n {\r\n docId: apiId,\r\n downloadDocId: docId,\r\n }: TRequireOnlyOne<{ docId: string; downloadDocId: string }>,\r\n newElem?: boolean,\r\n ) {\r\n const id = apiId ? this.getDocument(apiId)!.docId : docId;\r\n const result = await ApiaApi.post<TDocumentInformation>(\r\n this.context,\r\n this.getDocumentInfoParameters({\r\n action: 'getDocumentInfo',\r\n isAjax: true,\r\n docId: id,\r\n newElem,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n );\r\n\r\n if (result?.data) {\r\n return result.data;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * This method searches for the provided id in several places:\r\n *\r\n * If it's found in the current files, returns it.\r\n * If not, it searches the provided docId in the translations map of each uploaded file.\r\n */\r\n getDocument(docId: string) {\r\n if (this.state.files[docId]) {\r\n return this.state.files[docId];\r\n } else {\r\n for (const map of this.state.translatedFiles.values()) {\r\n for (const file of map.values()) {\r\n if (file.docId === docId) {\r\n return file;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected updateDocument(docId: string, newValue: TUploaderFileInfo) {\r\n if (this.state.files[docId]) {\r\n this.state.files[docId] = { ...this.getDocument(docId), ...newValue };\r\n } else {\r\n this.state.translatedFiles.forEach((innerMap) => {\r\n innerMap.forEach((doc, langKey) => {\r\n if (doc.docId === docId) {\r\n innerMap.set(langKey, { ...doc, ...newValue });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n protected deleteDocument(docId: string) {\r\n if (this.state.files[docId]) {\r\n delete this.state.files[docId];\r\n } else {\r\n this.state.translatedFiles.forEach((innerMap) => {\r\n innerMap.forEach((doc, langKey) => {\r\n if (doc.docId === docId) {\r\n innerMap.delete(langKey);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n public clearFile(name: string) {\r\n if (this.modalController) {\r\n this.modalController.state.isReadonly = false;\r\n }\r\n\r\n this.state.inProgressFiles = this.state.inProgressFiles.filter(\r\n (c) => c.name !== name,\r\n );\r\n }\r\n\r\n public clearFiles() {\r\n if (this.modalController) {\r\n this.modalController.state.isReadonly = false;\r\n }\r\n\r\n this.state.inProgressFiles = [];\r\n this.state.versioningFile = null;\r\n this.state.hiddenFiles = [];\r\n }\r\n\r\n public clearState() {\r\n if (this.modalController) {\r\n this.modalController.state.isReadonly = false;\r\n }\r\n\r\n this.state.selectedDocTypeId = this.getDocTypes().find(\r\n (c) => String(c.id) === '1',\r\n )\r\n ? '1'\r\n : this.getDocTypes()[0]?.id;\r\n this.state.inProgressFiles = [];\r\n this.state.versioningFile = null;\r\n }\r\n\r\n async checkLockDocument(id: string, shouldNotifyUnlocked = true) {\r\n if (this.props.context.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n if (Number(id) < 0) return true;\r\n\r\n const file = this.getDocument(id)!;\r\n\r\n const result = await ApiaApi.post<{\r\n success: 'ok' | 'unlocked';\r\n usr: string;\r\n }>(\r\n this.context,\r\n this.getCheckLockDocumentParameters({\r\n action: 'checkLockDocument',\r\n docId: file.docId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n );\r\n\r\n const isLocked = result?.data?.success === 'ok';\r\n if (\r\n !isLocked &&\r\n result?.data?.usr &&\r\n result.data.usr !== this.props.context.currentUserLogin\r\n ) {\r\n this.notify({\r\n message: `${getLabel('msgDocLocOthUsr', {}, this.props.context).text.split('.')[0]}: ${\r\n result.data.usr\r\n }.`,\r\n type: 'warning',\r\n });\r\n return result.data.usr;\r\n }\r\n if (!isLocked && shouldNotifyUnlocked && !(await this.autoLock()))\r\n this.notify({\r\n message: getLabel('msgDocMusBeLocForUpd', {}, this.props.context).text,\r\n type: 'warning',\r\n });\r\n\r\n return isLocked;\r\n }\r\n\r\n public setCurrentDocTypeId(docTypeId: string) {\r\n this.state.selectedDocTypeId = docTypeId;\r\n }\r\n\r\n public async ajaxUploadStart(newFiles: File[] = []) {\r\n if (this.props.context.IN_MONITOR) {\r\n return;\r\n }\r\n const versioningFile = this.state.versioningFile;\r\n const res = await ApiaApi.post<TAjaxUploadStart>(\r\n this.context,\r\n this.getAjaxUploadStartParameters({\r\n action: 'ajaxUploadStart',\r\n isAjax: true,\r\n docId: versioningFile?.docId,\r\n docTypeId:\r\n newFiles.length === 1 ? versioningFile?.docTypeId || '1' : '1',\r\n newDoc: !versioningFile,\r\n useDocTypePermitted: false,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n );\r\n if (res?.data) {\r\n const docTypes = arrayOrArray(res?.data?.function?.docTypes?.docType);\r\n const hasGeneric = !!docTypes.find((c) => String(c.id) === '1');\r\n\r\n this.state.allowedTypes = docTypes;\r\n this.state.selectedDocTypeId = hasGeneric ? '1' : docTypes[0].id;\r\n\r\n if (newFiles.length > 0) {\r\n await this.saveDroppedFiles(newFiles);\r\n }\r\n return res?.data?.function.name === 'fncDocumentLoadInformation'\r\n ? true\r\n : false;\r\n } else {\r\n throw new Error('No files data');\r\n }\r\n }\r\n\r\n public async reloadMetadata(\r\n props?: Partial<{ docId: string; docTypeId: number | string }>,\r\n additionalProps?: Record<string, unknown>,\r\n ) {\r\n if (!this.modalController) return;\r\n const res = await ApiaApi.post<{\r\n metadata: TDocumentMetadata | TDocumentMetadata[];\r\n }>(\r\n this.context,\r\n this.getReloadMetadataParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n action: 'reloadMetadata',\r\n isAjax: true,\r\n docId: props?.docId,\r\n docTypeId: props?.docTypeId,\r\n metadata: this.getConfirmDropModalMetadataString({\r\n metadata: this.modalController?.allMetadata,\r\n }),\r\n ...additionalProps,\r\n }),\r\n );\r\n\r\n if (res?.data && props?.docTypeId) {\r\n const isFreeMetadata =\r\n this.state.allowedTypes.find(\r\n (current) => current.id === props.docTypeId,\r\n )?.free ?? false;\r\n\r\n this.modalController!.state.metadata.freeMetadataArray = [];\r\n this.modalController!.state.metadata.metadataArray = [];\r\n\r\n arrayOrArray(res.data.metadata).forEach((c) => {\r\n if (c.free === 'Y') {\r\n this.modalController!.state.metadata.freeMetadataArray.push(c);\r\n } else {\r\n this.modalController!.state.metadata.metadataArray.push(c);\r\n }\r\n });\r\n this.modalController!.state.metadata.isFreeMetadata = isFreeMetadata;\r\n }\r\n }\r\n\r\n public async saveDroppedFiles(\r\n unprocessedFiles: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): Promise<boolean> {\r\n if (this.props.context.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n const {\r\n langId,\r\n strictMode: isConfStrictMode = false,\r\n translatingFile,\r\n } = conf ?? {};\r\n const isStrictMode =\r\n isConfStrictMode ||\r\n !!this.state.versioningFile ||\r\n !!this.modalController?.state.fromDirectoryFile;\r\n\r\n const docType = this.getCurrentDocTypeId();\r\n\r\n if (!isStrictMode && !docType) {\r\n this.notify({\r\n message: `${getLabel('msgDropFileDel', {}, this.props.context).text}: ${unprocessedFiles\r\n .map((current) => current.name)\r\n .join(', ')}.`,\r\n type: 'warning',\r\n });\r\n return false;\r\n }\r\n const allowedFiles = this.filterAlreadyUploadedFiles(\r\n this.filterByFilesAmountLimit(\r\n this.filterAcceptedFiles(\r\n this.filterExistingFiles(\r\n this.filterVersioningFiles(unprocessedFiles, conf),\r\n conf,\r\n ),\r\n true,\r\n docType as string,\r\n ),\r\n ),\r\n conf,\r\n );\r\n if (allowedFiles.length > 0) {\r\n const formData = new FormData();\r\n allowedFiles.forEach((file) =>\r\n formData.append('fileRepository', file, file.name),\r\n );\r\n\r\n await ApiaApi.post(\r\n this.context,\r\n this.getSaveDroppedFilesParameters({\r\n action: 'saveDroppedFiles',\r\n docId: this.state.versioningFile?.docId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n frmOut: !this.modalController,\r\n docTypeId: this.state.selectedDocTypeId,\r\n langId,\r\n }),\r\n {\r\n postData: formData,\r\n axiosConfig: {\r\n onUploadProgress: (ev) =>\r\n (this.state.progress =\r\n (ev.loaded * 100) / ((ev.total ?? ev.loaded) * 2)),\r\n },\r\n },\r\n );\r\n const ajaxUploadFileStatusParameters =\r\n this.getAjaxUploadFileStatusParameters({\r\n action: 'ajaxUploadFileStatus',\r\n ajaxUrl: this.getAjaxUrl(),\r\n delayForDrop: true,\r\n isAjax: true,\r\n });\r\n\r\n let tries = 0;\r\n const checkUploadResult = async () => {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise(async (resolve) => {\r\n tries += 1;\r\n if (tries === 10) {\r\n this.notify({\r\n message:\r\n 'Error while checking for uploadFileStatus, too many tries',\r\n type: 'error',\r\n });\r\n resolve(false);\r\n return;\r\n }\r\n const response = await ApiaApi.post<TAjaxUploadFileStatus>(\r\n this.context,\r\n ajaxUploadFileStatusParameters,\r\n );\r\n if (response && response.data) {\r\n const hasMessages =\r\n arrayOrArray<any>(\r\n response.data?.sysMessages?.message ??\r\n response.data?.sysExceptions?.exception ??\r\n response.data?.exceptions?.exception ??\r\n response.data.function.messages?.message,\r\n ).length > 0 || !!response.data.function.dropLastMessage;\r\n\r\n const uploadMessage = arrayOrArray(\r\n response.data.function.messages?.message,\r\n ).find((current) => current.name === 'message');\r\n if (uploadMessage)\r\n this.notify({ message: uploadMessage.label, type: 'warning' });\r\n\r\n const method = response.data?.function.name;\r\n this.state.progress = 44;\r\n if (hasMessages) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n if (method === 'fncProceedDocumentProcessing') {\r\n resolve(true);\r\n return;\r\n }\r\n if (tries === 10) {\r\n resolve(method === 'fncProceedDocumentProcessing');\r\n }\r\n setTimeout(() => {\r\n checkUploadResult()\r\n .then(resolve)\r\n .catch(() => resolve(false));\r\n }, 100);\r\n } else {\r\n resolve(false);\r\n }\r\n });\r\n };\r\n const hasUploadedCorrectly = await checkUploadResult();\r\n\r\n this.state.progress = 66;\r\n\r\n if (hasUploadedCorrectly) {\r\n const shown = (this.state.inProgressFiles ?? []).map(\r\n (file) => file.name,\r\n );\r\n const postData = QueryString.stringify(\r\n this.getProcessDroppedFilesPostdata({\r\n useDocTypePermitted: true,\r\n dropped: allowedFiles.map((file) => file.name).concat(shown),\r\n shown,\r\n }),\r\n { arrayFormat: 'repeat' },\r\n );\r\n\r\n const secondResult = await ApiaApi.post<TProcessDroppedFiles>(\r\n this.context,\r\n this.getProcessDroppedFilesParameters({\r\n action: 'processDroppedFiles',\r\n docId: this.state.versioningFile?.docId,\r\n frmOut: !this.modalController,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n {\r\n postData: postData.toString(),\r\n },\r\n );\r\n\r\n this.state.progress = 83;\r\n\r\n if (secondResult?.data?.function?.principal?.docInfo) {\r\n const acceptedByServerFiles = arrayOrArray(\r\n secondResult.data.function?.principal?.docInfo,\r\n );\r\n\r\n this.state.inProgressFiles = [\r\n ...(this.state.inProgressFiles ?? []),\r\n ...acceptedByServerFiles\r\n .map((current) =>\r\n [...this.state.inProgressFiles, ...unprocessedFiles].find(\r\n (search) => search.name === current.docInfoName,\r\n ),\r\n )\r\n .filter((current): current is File => !!current),\r\n ];\r\n this.state.progress = 100;\r\n\r\n if (this.modalController)\r\n this.modalController.state.fromDirectoryFile = null;\r\n\r\n this.notify({\r\n type: 'success',\r\n message: getLabel(\r\n 'lblFileUploadedSuccessfully',\r\n {},\r\n this.props.context,\r\n ).text,\r\n });\r\n if (this.props.modalConfig.oneClickUpload) {\r\n if (langId && translatingFile)\r\n void this.confirmDropModal({ langId, translatingFile });\r\n else void this.confirmDropModal();\r\n }\r\n }\r\n }\r\n this.state.progress = 100;\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n async checkWebDavLock(docId: string) {\r\n if (this.props.context.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n if (Number.parseInt(docId) < 0) {\r\n return true;\r\n }\r\n\r\n return new Promise((resolve) => {\r\n let tries = 10;\r\n const checkLockAction = async () => {\r\n const isLocked = await ApiaApi.post<{ locked: boolean }>(\r\n this.context,\r\n this.getCheckWebDavLockParameters({\r\n action: 'isWebDavDocumentLocked',\r\n docId,\r\n ajaxUrl: this.props.context.URL_REQUEST_AJAX,\r\n }),\r\n );\r\n if (\r\n isLocked?.data?.locked === true ||\r\n isLocked?.data?.locked === undefined\r\n ) {\r\n if (--tries > 0) {\r\n setTimeout(() => void checkLockAction(), 1000);\r\n } else {\r\n this.notify({\r\n message: getLabel('msgFailSyncDoc', {}, this.props.context).text,\r\n });\r\n resolve(false);\r\n }\r\n } else {\r\n resolve(true);\r\n }\r\n };\r\n void checkLockAction();\r\n });\r\n }\r\n\r\n async checkSignature(file: TUploaderFileInfo) {\r\n let res = null;\r\n if (Number(file.docId) >= 0)\r\n res = await ApiaApi.get<{ markedToSign: boolean }>(\r\n this.context,\r\n this.getCheckSignatureParameters({\r\n action: 'viewDocSigns',\r\n docId: file.docId,\r\n lock: false,\r\n isAjax: true,\r\n react: true,\r\n }),\r\n );\r\n return res;\r\n }\r\n\r\n async editDocument(id: string) {\r\n if (this.props.context.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const result = await ApiaApi.post<{ folderId: string }>(\r\n this.context,\r\n this.getEditDocumentParameters({\r\n action: 'updateWebDavDocument',\r\n docId: file.docId,\r\n isAjax: true,\r\n }),\r\n );\r\n if (result?.data?.folderId) {\r\n const sDocumentUrl = `${this.props.context.WEBDAV_SERVER}${\r\n result?.data?.folderId\r\n }/${file.docId}/${file.name || file.docName || ''}`;\r\n\r\n const ProtocolInstallMessage = () => {\r\n this.notify({\r\n type: 'warning',\r\n message: getLabel(\r\n 'msgNoDocEdiProto',\r\n {\r\n text: {\r\n TOK1: `<a href=\"${this.props.context.WEBDAV_INSTALLER_URL}\" download>`,\r\n TOK2: `</a>`,\r\n },\r\n },\r\n this.props.context,\r\n ).text,\r\n title: getLabel('lblEdit', {}, this.props.context).text,\r\n });\r\n };\r\n\r\n this.props.context.ITHit.WebDAV.Client.DavConstants.ProtocolTimeoutMs = 10000;\r\n\r\n await (\r\n this.props.context.ITHit as any\r\n ).WebDAV.Client.DocManager.DavProtocolEditDocument(\r\n sDocumentUrl,\r\n this.props.context.WEBDAV_SERVER,\r\n ProtocolInstallMessage,\r\n null,\r\n 'Current',\r\n 'ApiaWebDavCookie', // Cookie(s) to copy.\r\n '', // URL to navigate to if any cookie from the list is not found.\r\n 'Edit',\r\n );\r\n }\r\n }\r\n }\r\n\r\n async downloadVersion(fileId: string, version?: string): Promise<void> {\r\n const file = this.getDocument(fileId);\r\n if (!file) return;\r\n\r\n if (\r\n Number.parseInt(fileId) < 0 ||\r\n this.props.context.IN_MONITOR ||\r\n (await this.checkWebDavLock(file.docId))\r\n )\r\n await downloadUrl(\r\n ApiaApi.makeUrl(this.context, {\r\n action: 'downloadDocument',\r\n docId: file.downloadDocId,\r\n version,\r\n }),\r\n );\r\n }\r\n\r\n async downloadDocument(id: string, version?: string) {\r\n const file = this.getDocument(id)!;\r\n if (\r\n Number.parseInt(id) < 0 ||\r\n this.props.context.IN_MONITOR ||\r\n (await this.checkWebDavLock(file.docId))\r\n ) {\r\n await downloadUrl(\r\n ApiaApi.makeUrl(this.context, {\r\n action: 'downloadDocument',\r\n docId: file.downloadDocId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n version,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n async ajaxDeleteDocument(id: string, langId?: number) {\r\n const file = this.getDocument(id)!;\r\n const isLocked = await this.checkLockDocument(file.docId);\r\n if (isLocked === true) {\r\n const result = await ApiaApi.post(\r\n this.context,\r\n this.getDeleteDocumentParameters({\r\n action: 'ajaxRemoveDocument',\r\n docId: file.docId,\r\n isAjax: true,\r\n ajaxUrl: this.getAjaxUrl(),\r\n langId,\r\n }),\r\n );\r\n\r\n if (this.evaluateDeleteDocumentResult(result?.data))\r\n this.deleteDocument(id);\r\n }\r\n }\r\n\r\n async version(\r\n file: TUploaderFileInfo,\r\n conf: {\r\n newFiles?: File[];\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n } = { newFiles: [] },\r\n ) {\r\n const checkLock = await this.checkLockDocument(file.docId, true);\r\n const isLocked = await this.checkWebDavLock(file.docId);\r\n\r\n // Si no está bloqueado correctamente, salir (misma lógica que antes)\r\n if (!(checkLock === true && isLocked)) return;\r\n\r\n // Guardamos el file en el state (como se hacía originalmente)\r\n this.state.versioningFile = file;\r\n\r\n const openVersionModal = () => {\r\n if (!this.props.modalConfig.oneClickUpload) {\r\n this.modalController = this.buildModalController({\r\n versionFile: file,\r\n });\r\n this.context.openModal();\r\n }\r\n };\r\n\r\n // Si no vienen newFiles, abrir el modal ahora (igual que el código original)\r\n if (!conf.newFiles || conf.newFiles.length === 0) {\r\n openVersionModal();\r\n }\r\n\r\n await this.ajaxUploadStart();\r\n\r\n if (file.docTypeId) this.state.selectedDocTypeId = file.docTypeId;\r\n\r\n await this.versionFileInfo(file);\r\n\r\n const hasNewFiles = !!(conf.newFiles && conf.newFiles.length > 0);\r\n\r\n if (hasNewFiles) {\r\n const res = await this.saveDroppedFiles(conf.newFiles!, {\r\n langId: conf.langId,\r\n translatingFile: conf.translatingFile,\r\n shouldReset: false,\r\n strictMode: true,\r\n });\r\n\r\n // Si el guardado devuelve éxito, abrir el modal ahora (si aplica).\r\n if (res) {\r\n openVersionModal();\r\n }\r\n } else {\r\n await this.reloadMetadata({\r\n docId: file.docId,\r\n docTypeId: file.docTypeId,\r\n });\r\n }\r\n }\r\n\r\n async versionFileInfo(file: TUploaderFileInfo) {\r\n const documentInfo = await this.getDocumentInfo({ docId: file.docId });\r\n if (documentInfo?.function) {\r\n const {\r\n data: { general },\r\n metadatas,\r\n } = documentInfo.function;\r\n\r\n const isFreeMetadata =\r\n this.state.allowedTypes.find((current) => current.id === file.docTypeId)\r\n ?.free ?? false;\r\n if (this.modalController) {\r\n this.modalController!.state = {\r\n description: general.docDesc,\r\n docFolder:\r\n general.docFolder === '' ? undefined : Number(general.docFolder),\r\n docPath: general.docFolderPath,\r\n permissions: {\r\n allowAllType: general.docAllPoolPerm,\r\n users: arrayOrArray(\r\n documentInfo.function.data.permissions?.user,\r\n ).map((current) => {\r\n const returnObject: IUsersPermissions = {\r\n canUpdate: current.permType === 'M',\r\n userId: current.id,\r\n userLogin: current.name,\r\n };\r\n return returnObject;\r\n }),\r\n pools: arrayOrArray(\r\n documentInfo.function.data.permissions?.pool,\r\n ).map((current) => {\r\n const returnObject: IPoolsPermissions = {\r\n canUpdate: current.permType === 'M',\r\n poolId: current.id,\r\n poolName: current.name,\r\n };\r\n return returnObject;\r\n }),\r\n },\r\n docExpDate: general.docExpDate,\r\n fileReqError: false,\r\n fromDirectoryFile: null,\r\n metadata: {\r\n metadataArray: arrayOrArray(metadatas?.metadata),\r\n freeMetadataArray: [],\r\n isFreeMetadata: isFreeMetadata,\r\n },\r\n };\r\n }\r\n }\r\n }\r\n\r\n public async pickFileById(id: string) {\r\n const documentInfo = await this.getDocumentInfo(\r\n { downloadDocId: id },\r\n true,\r\n );\r\n if (documentInfo) {\r\n const document = documentInfo.function.data.general;\r\n const { permissions } = documentInfo.function.data;\r\n\r\n if (this.modalController) {\r\n this.setCurrentDocTypeId(document.docTypeId);\r\n this.modalController.addDirectoryFile(document);\r\n this.modalController.state.description = document.docDesc;\r\n this.modalController.state.docExpDate = document.docExpDate;\r\n this.modalController.state.permissions = {\r\n pools: arrayOrArray(permissions?.pool).map((c) => {\r\n return {\r\n poolId: c.id,\r\n poolName: c.name,\r\n canUpdate: c.permType === 'M',\r\n };\r\n }),\r\n users: [\r\n ...arrayOrArray(permissions?.user).map((c) => {\r\n return {\r\n userId: c.id,\r\n userLogin: c.name,\r\n canUpdate: c.permType === 'M',\r\n };\r\n }),\r\n ],\r\n allowAllType: document.docAllPoolPerm as '',\r\n };\r\n this.modalController.changeDocType(document.docTypeId);\r\n this.modalController.state.isReadonly =\r\n !documentInfo.function.currentUsrPems.usrCanModify;\r\n }\r\n\r\n void this.reloadMetadata(\r\n { docId: document.docId, docTypeId: document.docTypeId },\r\n {\r\n docReuse: true,\r\n },\r\n );\r\n }\r\n }\r\n\r\n async markFileToSign(id: string, langId?: string) {\r\n if (this.props.context.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n this.state.files[id];\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const marked = await ApiaApi.post<{ markedToSign: boolean }>(\r\n this.context,\r\n this.getMarkFileToSignParameters({\r\n action: 'markDocTosign',\r\n docId: file.docId,\r\n isAjax: true,\r\n ajaxUrl: this.getAjaxUrl(),\r\n langId,\r\n }),\r\n );\r\n\r\n if (marked?.data?.markedToSign !== undefined) {\r\n if (this.state.files[id]) {\r\n this.state.files[id].markedToSign = marked.data.markedToSign;\r\n } else {\r\n this.state.translatedFiles.forEach((innerMap) => {\r\n innerMap.forEach((doc, langKey) => {\r\n if (doc.docId === id) {\r\n innerMap.set(langKey, {\r\n ...doc,\r\n markedToSign: marked?.data?.markedToSign ?? false,\r\n });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Por el momento realiza la descarga de todos los archivos\r\n * que estén subidos.\r\n */\r\n downloadMultipleDocuments() {\r\n const files = this.filesArray;\r\n if (files.length === 0) return;\r\n const docIds = this.state.selectedFiles;\r\n\r\n const selectedFiles = files.filter((current) =>\r\n docIds.find((search) => search === current.docId),\r\n );\r\n const ids = (selectedFiles.length > 0 ? selectedFiles : files)\r\n .map((current) => current.downloadDocId)\r\n .join('-');\r\n\r\n void downloadUrl(\r\n ApiaApi.makeUrl(\r\n this.context,\r\n this.getDownloadMultipleDocumentsParameters({\r\n action: 'multipleDownload',\r\n docId: ids,\r\n }),\r\n ),\r\n 'documents.zip',\r\n );\r\n }\r\n\r\n async confirmDropModal(conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n }) {\r\n if (this.props.context.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n const { langId, translatingFile } = conf ?? {};\r\n\r\n const cmbDocType = this.state.selectedDocTypeId;\r\n const fromDirectoryFile = this.modalController?.state.fromDirectoryFile;\r\n const docDesc = this.modalController?.description ?? '';\r\n const docAllowAllType = this.props.modalConfig.oneClickUpload\r\n ? 'M'\r\n : (this.modalController?.allowAllType ?? '');\r\n const docFolder = this.modalController?.docFolder;\r\n const docExpDate = this.modalController?.docExpDate;\r\n const metadata = this.modalController?.metadata ?? [];\r\n const freeMetadata = this.modalController?.freeMetadata ?? [];\r\n\r\n const poolsPermissions =\r\n this.modalController?.state.permissions.pools ?? [];\r\n\r\n const usersPermissions =\r\n this.modalController?.state.permissions.users ?? [];\r\n\r\n let postData = QueryString.stringify(\r\n this.getConfirmDropModalPostdata({\r\n cmbDocType,\r\n docDesc,\r\n docAllowAllType,\r\n dropped: this.state.inProgressFiles.map((file) => file.name),\r\n txtLangId: langId,\r\n txtLangGroup: translatingFile?.docLangGroup,\r\n docFolder: docFolder,\r\n }),\r\n { arrayFormat: 'repeat' },\r\n );\r\n\r\n postData = `${postData}${\r\n postData.length > 0 ? '&' : ''\r\n }${this.getConfirmDropModalPermissionsString({\r\n poolsPermissions,\r\n usersPermissions,\r\n })}&txtFreeMetadata=${this.getConfirmDropModalAdditionalMetadataString(\r\n freeMetadata,\r\n )}&txtMetadata=${this.getConfirmDropModalMetadataString({\r\n metadata: Object.values(metadata || {}),\r\n })}&docExpDate=${docExpDate ?? ''}`;\r\n\r\n const result = await ApiaApi.post<TConfirmDropModal>(\r\n this.context,\r\n this.getConfirmDropModalParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n docId: fromDirectoryFile\r\n ? fromDirectoryFile.docId\r\n : this.state.versioningFile?.docId,\r\n action: fromDirectoryFile\r\n ? 'associateExistingFile'\r\n : 'confirmDropModal',\r\n fromForm: true,\r\n ...(fromDirectoryFile\r\n ? {\r\n docId: fromDirectoryFile.docId,\r\n fromReuse: true,\r\n uploadDocument: false,\r\n }\r\n : null),\r\n }),\r\n {\r\n postData: postData.toString(),\r\n },\r\n );\r\n\r\n if (result?.data?.function) {\r\n const currentFiles = { ...this.state.files };\r\n const versioningFile = this.state.versioningFile;\r\n\r\n if (versioningFile && versioningFile.name) {\r\n delete currentFiles[versioningFile.name];\r\n }\r\n const newFiles: Record<string, TUploaderFileInfo> = arrayOrArray(\r\n result.data.function.general,\r\n )\r\n .map((current) =>\r\n this.parseFileDefinition({\r\n ...current,\r\n canWrite: true,\r\n canRead: true,\r\n canEdit: true,\r\n }),\r\n )\r\n .filter((current) => !currentFiles[current.docId])\r\n .reduce((acc, current) => ({ ...acc, [current.docId]: current }), {});\r\n\r\n if (langId && translatingFile) {\r\n const firstFile = Object.values(newFiles)[0];\r\n this.setTranslationFile(firstFile, translatingFile.docId, langId);\r\n } else {\r\n this.state.files = { ...currentFiles, ...newFiles };\r\n }\r\n this.clearFiles();\r\n this.emit('fileUploaded', null);\r\n\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected getLoadCurrentDocumentsParameters(\r\n params: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return params;\r\n }\r\n\r\n async loadCurrentDocuments() {\r\n const result = await ApiaApi.post<\r\n TApiaLoad<TApiaFunction<TUploaderLoadCurrentFunction, false>>\r\n >(\r\n this.context,\r\n this.getLoadCurrentDocumentsParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n action: 'ajaxLoadCurrent',\r\n isAjax: true,\r\n readOnly: this.props.context.readonly,\r\n allowLock: true,\r\n allowSign: true,\r\n allowMultiple: true,\r\n }),\r\n {},\r\n );\r\n\r\n if (result && result.data) {\r\n const currentConfiguration: TUploaderLoadCurrentFunctionMessages =\r\n arrayOrArray(result.data.function.messages.message).reduce(\r\n (prev, { name, label }) => ({ ...prev, [name]: Boolean(label) }),\r\n {} as TUploaderLoadCurrentFunctionMessages,\r\n );\r\n\r\n const currentFiles: TUploaderFileInfo[] = result.data.function.general\r\n ? arrayOrArray(result.data.function.general).map(\r\n this.parseFileDefinition,\r\n )\r\n : [];\r\n\r\n this.currentConfiguration = currentConfiguration;\r\n const nonTranslationFiles: TUploaderFileInfo[] = [];\r\n const translationFiles: TUploaderFileInfo[] = [];\r\n currentFiles.forEach((current) => {\r\n if (current.docLang === undefined) nonTranslationFiles.push(current);\r\n else translationFiles.push(current);\r\n });\r\n\r\n nonTranslationFiles.forEach((c) => {\r\n this.state.files[c.docId] = c;\r\n });\r\n translationFiles.forEach((current) => {\r\n const originalFile = nonTranslationFiles.find(\r\n (search) => search.docLangGroup === current.docLangGroup,\r\n );\r\n if (originalFile && current.docLang !== undefined) {\r\n this.setTranslationFile(\r\n current,\r\n originalFile.docId,\r\n Number(current.docLang),\r\n );\r\n } else\r\n console.warn(\r\n `The following file is translated but has no orignal file`,\r\n current,\r\n nonTranslationFiles,\r\n );\r\n });\r\n }\r\n }\r\n\r\n async lockDocument(id: string) {\r\n if (this.props.context.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n if (file.markedToSign) {\r\n this.notify({\r\n message: getLabel('msgCantActFileMarkSign', {}, this.props.context)\r\n .text,\r\n type: 'warning',\r\n });\r\n return;\r\n }\r\n if (!file.isLocked || !file.isLockedByMe) {\r\n const isLocked = await this.checkLockDocument(file.docId, false);\r\n this.updateDocument(\r\n id,\r\n typeof isLocked === 'string'\r\n ? this.parseFileDefinition({\r\n ...file,\r\n userLocking: isLocked,\r\n lock: true,\r\n isLocked: true,\r\n lockedBy: isLocked,\r\n })\r\n : { ...file, isLocked },\r\n );\r\n }\r\n\r\n const result = await ApiaApi.post<\r\n TApiaFunction<\r\n {\r\n data: {\r\n general: {\r\n docId: string;\r\n locked: boolean;\r\n prefix: string;\r\n userLocking: string;\r\n };\r\n };\r\n },\r\n false\r\n >\r\n >(\r\n this.context,\r\n this.getLockDocumentParameters({\r\n action: 'lockDocument',\r\n ajaxUrl: this.getAjaxUrl(),\r\n docId: file.docId,\r\n lock: file.isLocked || file.locked,\r\n isAjax: true,\r\n }),\r\n );\r\n\r\n if (result?.data) {\r\n const resultFile = result.data.function?.data?.general;\r\n if (resultFile)\r\n this.updateDocument(\r\n resultFile.docId,\r\n this.parseFileDefinition({\r\n ...file,\r\n ...resultFile,\r\n isLocked: resultFile.locked,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n protected evaluateDeleteDocumentResult(result: unknown) {\r\n return (\r\n (\r\n result as\r\n | undefined\r\n | TApiaLoad<\r\n TApiaFunction<\r\n {\r\n general: {\r\n docId: string;\r\n prefix: string;\r\n };\r\n },\r\n false\r\n >\r\n >\r\n )?.function?.name === 'fncDocumentRemove'\r\n );\r\n }\r\n\r\n public setTranslationFile(\r\n file: TUploaderFileInfo,\r\n docId: string,\r\n langId: number,\r\n ) {\r\n if (!this.state.translatedFiles.has(docId)) {\r\n this.state.translatedFiles.set(docId, new Map());\r\n }\r\n this.state.translatedFiles.get(docId)?.set(langId, file);\r\n }\r\n\r\n protected getCheckSignatureParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getAjaxUploadFileStatusParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getAjaxUploadStartParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getConfirmDropModalParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getCheckLockDocumentParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getCheckWebDavLockParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getConfirmDropModalPostdata(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getConfirmDropModalMetadataString = ({\r\n metadata,\r\n }: {\r\n metadata: TDocumentMetadata[];\r\n }) => {\r\n return (\r\n metadata\r\n ?.filter?.((current) => !!current.value)\r\n .map((current) => `${current.id}~${current.type}~${current.value}`)\r\n .join(';') ?? []\r\n );\r\n };\r\n\r\n protected getConfirmDropModalPermissionsString = ({\r\n poolsPermissions,\r\n usersPermissions,\r\n }: {\r\n poolsPermissions: IPoolsPermissions[];\r\n usersPermissions: IUsersPermissions[];\r\n }) => {\r\n let returnString = '';\r\n\r\n poolsPermissions.forEach(\r\n (current) =>\r\n (returnString = `${returnString}${\r\n returnString.length > 0 ? '&' : ''\r\n }docPoolId=${current.poolId}&docPoolName=${\r\n current.poolName\r\n }&docPermType${current.poolId}=${String(current.canUpdate)}`),\r\n );\r\n\r\n usersPermissions.forEach(\r\n (current) =>\r\n (returnString = `${returnString}${\r\n returnString.length > 0 ? '&' : ''\r\n }docUserId=${current.userId}&docUsrLogin=${\r\n current.userLogin\r\n }&docPermType${current.userId}=${String(current.canUpdate)}`),\r\n );\r\n\r\n return returnString;\r\n };\r\n\r\n protected getConfirmDropModalAdditionalMetadataString = (\r\n additionalMetadata: TDocumentMetadata[] | [],\r\n ) => {\r\n return Object.values(additionalMetadata)\r\n .filter((current) => !!current?.value)\r\n .map((current) => `${current.title}~${current.value}`)\r\n .join(';');\r\n };\r\n\r\n protected getDeleteDocumentParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getClearTempFilesParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getDocumentInfoParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getDownloadMultipleDocumentsParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getEditDocumentParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getLockDocumentParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getMarkFileToSignParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getProcessDroppedFilesParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getProcessDroppedFilesPostdata(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getReloadMetadataParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getSaveDroppedFilesParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected filterAlreadyUploadedFiles(\r\n files: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): File[] {\r\n const versioningFile = this.state.versioningFile;\r\n if (versioningFile) return files;\r\n\r\n const uploadedFiles = Object.values(this.state.files).filter(\r\n (file) => Number(file.docId) > 0,\r\n );\r\n const existingFiles: File[] = [];\r\n const nonExistingFiles: File[] = [];\r\n if (conf?.langId) {\r\n const docId = conf.translatingFile?.docId ?? Infinity;\r\n const translationsMap = this.state.translatedFiles.get(String(docId));\r\n const alreadyUploadedToTranslationsFile = translationsMap\r\n ? Array.from(translationsMap.values()).find(\r\n (current) => (current.docName || current.name) === files[0]?.name,\r\n )\r\n : undefined;\r\n if (alreadyUploadedToTranslationsFile) existingFiles.push(files[0]);\r\n } else\r\n files.forEach((file) => {\r\n if (uploadedFiles.find((search) => search.docName === file.name)) {\r\n existingFiles.push(file);\r\n } else nonExistingFiles.push(file);\r\n });\r\n if (existingFiles.length > 0) {\r\n void this.notify({\r\n message: `${getLabel('msgDropFileRep', {}, this.props.context).text}: ${existingFiles\r\n .map((current) => current.name)\r\n .join(', ')}`,\r\n type: 'warning',\r\n });\r\n return nonExistingFiles;\r\n }\r\n return files;\r\n }\r\n\r\n protected filterByFilesAmountLimit(files: File[]): File[] {\r\n return files.slice(\r\n 0,\r\n addBoundary(this.maxFiles - (this.state.inProgressFiles?.length ?? 0), 0),\r\n );\r\n }\r\n\r\n protected filterAcceptedFiles(\r\n files: File[],\r\n shouldNotify = true,\r\n docTypeId?: string | TDocType,\r\n ): File[] {\r\n const docTypes =\r\n docTypeId !== undefined\r\n ? this.state.allowedTypes.filter((c) => {\r\n return typeof docTypeId === 'string'\r\n ? c.id === docTypeId\r\n : c.id === docTypeId.id;\r\n })\r\n : this.state.allowedTypes;\r\n\r\n if (!docTypes.find((c) => c.docExts === '')) {\r\n const notAllowedFilesBecauseOfExtension: File[] = [];\r\n const notAllowedFilesBecauseOfSize: File[] = [];\r\n let maxSize = Infinity;\r\n const allowedFiles = files.filter((currentFile) => {\r\n const extension = (currentFile.name.match(/\\.(\\w+)$/) ?? [])[1];\r\n\r\n let isAllowed = true;\r\n if (\r\n !docTypes.find((currentDocType) => {\r\n if (\r\n !currentDocType.docExts\r\n .split(';')\r\n .map((current) => current.toLowerCase())\r\n .includes(extension.toLowerCase())\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n })\r\n ) {\r\n isAllowed = false;\r\n notAllowedFilesBecauseOfExtension.push(currentFile);\r\n }\r\n if (\r\n isAllowed &&\r\n !docTypes.find((currentDocType: any) => {\r\n if (Number(currentDocType.maxSize) < currentFile.size) {\r\n maxSize = Number(currentDocType.maxSize);\r\n return false;\r\n }\r\n return true;\r\n })\r\n ) {\r\n notAllowedFilesBecauseOfSize.push(currentFile);\r\n isAllowed = false;\r\n }\r\n\r\n if (!isAllowed) return false;\r\n\r\n return true;\r\n });\r\n\r\n if (shouldNotify) {\r\n let errorMessage = '';\r\n\r\n if (notAllowedFilesBecauseOfExtension.length > 0) {\r\n const filesNames = notAllowedFilesBecauseOfExtension.reduce(\r\n (accumulated, current) => {\r\n if (accumulated.length === 0) return current.name;\r\n return `${accumulated}, ${current.name}`;\r\n },\r\n '',\r\n );\r\n\r\n errorMessage = `<strong>${getLabel('msgFileWrngExt', {}, this.props.context).text}</strong><br />${filesNames}`;\r\n }\r\n\r\n if (notAllowedFilesBecauseOfSize.length > 0) {\r\n const filesNames = notAllowedFilesBecauseOfSize.reduce(\r\n (accumulated, current) => {\r\n if (accumulated.length === 0) return current.name;\r\n return `${accumulated}, ${current.name}`;\r\n },\r\n '',\r\n );\r\n\r\n if (errorMessage.length > 0)\r\n errorMessage = `${errorMessage} <br /><br />`;\r\n errorMessage = `${errorMessage}${formatMessage(\r\n getLabel('msgFileTooBig', {}, this.props.context).text,\r\n {\r\n TOK1: `<br />${filesNames}`,\r\n TOK2: `${parseAsSize(maxSize)}`,\r\n },\r\n )}`;\r\n }\r\n\r\n if (errorMessage.length > 0)\r\n this.notify({\r\n message: errorMessage,\r\n type: 'warning',\r\n });\r\n }\r\n\r\n return allowedFiles;\r\n }\r\n return files;\r\n }\r\n\r\n protected filterExistingFiles(\r\n files: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): File[] {\r\n if (conf?.langId) return files;\r\n\r\n const currentFiles = this.state.inProgressFiles;\r\n const alreadyUploadedFiles = Object.values(this.state.files).filter(\r\n (current) => Number(current.docId) < 0,\r\n );\r\n let alreadyIncludedFileNames = '';\r\n const filteredFiles = files.filter((current) => {\r\n const isIncluded =\r\n currentFiles.findIndex((search) => search.name === current.name) !==\r\n -1 ||\r\n alreadyUploadedFiles.findIndex(\r\n (search) => search.docName === current.name,\r\n ) !== -1;\r\n\r\n if (isIncluded)\r\n alreadyIncludedFileNames = `${alreadyIncludedFileNames}${\r\n alreadyIncludedFileNames.length > 0 ? ', ' : ''\r\n }${current.name}`;\r\n\r\n return !isIncluded;\r\n });\r\n if (alreadyIncludedFileNames.length > 0)\r\n this.notify({\r\n message: `${getLabel('msgDropFileRep', {}, this.props.context).text}: ${alreadyIncludedFileNames}`,\r\n type: 'warning',\r\n });\r\n return filteredFiles;\r\n }\r\n\r\n protected filterVersioningFiles(\r\n files: File[],\r\n conf?: {\r\n langId?: number;\r\n strictMode?: boolean;\r\n translatingFile?: TUploaderFileInfo;\r\n shouldReset?: boolean;\r\n },\r\n ): File[] {\r\n conf;\r\n const versioningFile = this.state.versioningFile;\r\n if (versioningFile) {\r\n const newFiles = files.filter(\r\n (current) =>\r\n current.name === versioningFile.docName ||\r\n current.name === versioningFile.name,\r\n );\r\n if (newFiles.length === 0) {\r\n this.notify({\r\n type: 'warning',\r\n message: getLabel('msgDocDiffFilename', {}, this.props.context).text,\r\n });\r\n }\r\n return newFiles;\r\n }\r\n\r\n return files;\r\n }\r\n\r\n public parseFileDefinition = (file: TFileUploaded): TUploaderFileInfo => {\r\n return {\r\n ...parseFileDefinition(this.props.context, file, false),\r\n canEdit: file.canEdit || file.canWrite,\r\n canRead: file.canRead,\r\n };\r\n };\r\n\r\n public getLoadFileSystemStructureTree(): Record<string, unknown> {\r\n return {\r\n useDocTypePermitted: true,\r\n };\r\n }\r\n\r\n public getLoadFilesForFolderParameters(): Record<string, unknown> {\r\n return {\r\n useDocTypePermitted: true,\r\n };\r\n }\r\n}\r\n","import { ApiaApi } from '@apia/api2';\r\nimport { DirectoryPickerFolderNode } from './DirectoryPickerFolderNode';\r\nimport { TCreateTreeNode, TFilesPickerResponse } from '../types';\r\nimport { FilePickerActions, makeId } from '../utils';\r\nimport { arrayOrArray, getLabel } from '@apia/util';\r\nimport { DirectoriesPicker } from '../DirectoriesPicker';\r\n\r\nexport class FilePickerFolderNode extends DirectoryPickerFolderNode {\r\n constructor(\r\n parent: DirectoryPickerFolderNode | DirectoriesPicker,\r\n props: TCreateTreeNode,\r\n private params: Record<string, unknown> = {},\r\n ) {\r\n super(parent, props);\r\n this.state.isSelectable = false;\r\n }\r\n\r\n public async loadMore(focus = true): Promise<void> {\r\n const res = await ApiaApi.post<TFilesPickerResponse>(\r\n this.getTree().api.context,\r\n {\r\n ajaxUrl: FilePickerActions.ajaxUrl,\r\n action: FilePickerActions.loadFilesForFolder,\r\n preventAsXmlParameter: true,\r\n isAjax: true,\r\n },\r\n {\r\n postData: {\r\n txtFld: this.state.nodeProps.id,\r\n loadFolders: true,\r\n txtCantDoc: this.getChildren().length,\r\n offset: this.getChildren().length,\r\n docTypePermittedObjId: this.params.docTypePermittedObjId,\r\n docTypePermittedObjType: this.params.docTypePermittedObjType,\r\n useDocTypePermitted: this.params.useDocTypePermitted,\r\n docTypeForcedId: this.params.docTypeForcedId,\r\n ...this.params,\r\n },\r\n postDataTreatement: 'stringify',\r\n postDataStringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n if (res?.data) {\r\n const lastNode = this.getChildren()[this.getChildren().length - 1];\r\n\r\n arrayOrArray(res.data.folders?.folder).forEach((folder) => {\r\n if (!this.state.children.has(makeId(folder.id))) {\r\n this.getTree().createFolder({\r\n id: makeId(folder.id),\r\n label: folder.name,\r\n nodeProps: folder,\r\n parentId: this.id,\r\n });\r\n }\r\n });\r\n\r\n arrayOrArray(res.data.documents?.document).forEach((document) => {\r\n if (!this.state.children.has(makeId(document.id))) {\r\n this.getTree().createDocument({\r\n id: makeId(document.id),\r\n label: document.name,\r\n nodeProps: document,\r\n parentId: this.id,\r\n });\r\n }\r\n });\r\n if ((res?.data.documents?.documentInfo?.moreDocs ?? 0) > 0) {\r\n this.removeLoadMoreDocsNode();\r\n this.loadMoreDocsNode = this.getTree().createFolder({\r\n asyncNode: false,\r\n icon: undefined,\r\n isLeaf: true,\r\n label: getLabel('lblShwMoreEls').text,\r\n labelRenderer: this.getTree().renderers!.LoadMoreRenderer,\r\n onClick: async () => {\r\n if (this.loadMoreDocsNode) {\r\n this.loadMoreDocsNode.state.nodeProps.isLoadingMore = true;\r\n }\r\n await this.loadMore();\r\n },\r\n parentId: this.id,\r\n });\r\n if (focus) {\r\n this.tree.focusNode(this.loadMoreDocsNode);\r\n }\r\n } else {\r\n this.removeLoadMoreDocsNode();\r\n if (focus) {\r\n this.tree.focusNode(lastNode.getFollowingSibling() ?? lastNode);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { DirectoriesPicker } from './DirectoriesPicker';\r\nimport { TCreateTreeNode, TFilesPickerResponse } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { DirectoryPickerFolderNode } from './nodes/DirectoryPickerFolderNode';\r\nimport type { UploaderApi } from '../UploaderApi';\r\nimport { TApiaApiAxiosResponse } from '@apia/api2';\r\nimport { FilePickerFolderNode } from './nodes';\r\nimport { FilePickerActions } from './utils';\r\n\r\nexport class FilePicker extends DirectoriesPicker {\r\n constructor(api: UploaderApi) {\r\n super(api);\r\n }\r\n\r\n getNodeHandler(nodeProps: TCreateTreeNode): DirectoryPickerFolderNode {\r\n return new FilePickerFolderNode(\r\n this,\r\n nodeProps,\r\n this.api.getLoadFilesForFolderParameters(),\r\n );\r\n }\r\n\r\n getFolderStructureParams(): any {\r\n return {\r\n ajaxUrl: FilePickerActions.ajaxUrl,\r\n action: FilePickerActions.loadFileSystemStructureTree,\r\n preventAsXmlParameter: true,\r\n isAjax: true,\r\n isXml: true,\r\n txtFld: this.api.modalConfig.rootFolder,\r\n };\r\n }\r\n\r\n parseStructureResponse(res: any) {\r\n const castRes = res as TApiaApiAxiosResponse<TFilesPickerResponse>;\r\n if (castRes.data?.folders.folder)\r\n return arrayOrArray(castRes.data?.folders.folder);\r\n return null;\r\n }\r\n}\r\n"],"names":["__publicField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/directories/utils.ts","../src/directories/nodes/DocumentNode.ts","../src/directories/nodes/DirectoryPickerFolderNode.ts","../src/directories/DirectoriesPicker.ts","../src/UploaderModalController.ts","../src/util.ts","../src/UploaderApi.ts","../src/directories/nodes/FilePickerFolderNode.ts","../src/directories/FilePicker.ts"],"sourcesContent":["import type { UploaderApi } from '../UploaderApi';\r\n\r\nexport const DirectoryPickerActions = {\r\n ajaxUrl: (api: UploaderApi) => api.context.URL_REQUEST_AJAX,\r\n loadFolderStructure: 'loadFolderStructure',\r\n loadFilesForFolder: 'loadFilesForFolder',\r\n};\r\n\r\nexport const FilePickerActions = {\r\n ajaxUrl: 'apia.modals.FoldersAction.run',\r\n loadFileSystemStructureTree: 'loadFileSystemStructureTree',\r\n loadFilesForFolder: 'loadFilesForFolder',\r\n loadFolderStructure: 'loadFolderStructure',\r\n};\r\n\r\nexport function makeId(str: string) {\r\n return str.replaceAll(/\\W/g, '_');\r\n}\r\n","import { MobXTreeNode } from '@apia/tree2-controller';\r\nimport { DirectoriesPicker } from '../DirectoriesPicker';\r\nimport { uniqueId } from 'lodash-es';\r\nimport { TCreateTreeNode } from '../types';\r\nimport { DirectoryPickerFolderNode } from './DirectoryPickerFolderNode';\r\n\r\nexport class DocumentNode extends MobXTreeNode {\r\n constructor(\r\n parent: DirectoryPickerFolderNode | DirectoriesPicker,\r\n { parentId, id, ...props }: TCreateTreeNode,\r\n ) {\r\n const renderers = (parent.tree as DirectoriesPicker).api.modalConfig\r\n .renderers!;\r\n\r\n super(id ?? uniqueId('filepickertree'), parent, {\r\n icon: renderers.FileIconRenderer,\r\n isLeaf: true,\r\n\r\n ...props,\r\n });\r\n }\r\n}\r\n","import { MobXTreeNode } from '@apia/tree2-controller';\r\nimport { DirectoriesPicker } from '../DirectoriesPicker';\r\nimport { uniqueId } from 'lodash-es';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { ApiaApi } from '@apia/api2';\r\nimport { TCreateTreeNode, TDirectoriesPickerResponse } from '../types';\r\nimport { arrayOrArray, getLabel } from '@apia/util';\r\nimport { DirectoryPickerActions, makeId } from '../utils';\r\n\r\nexport class DirectoryPickerFolderNode extends MobXTreeNode {\r\n protected loadMoreDocsNode: MobXTreeNode | null = null;\r\n protected removeLoadMoreDocsNode() {\r\n this.loadMoreDocsNode?.remove();\r\n this.loadMoreDocsNode = null;\r\n }\r\n isLoadingMore = false;\r\n\r\n constructor(\r\n parent: DirectoryPickerFolderNode | DirectoriesPicker,\r\n { parentId, id, ...props }: TCreateTreeNode,\r\n ) {\r\n const renderers = (parent.tree as DirectoriesPicker).api.props.modalConfig\r\n .renderers!;\r\n\r\n super(id ?? uniqueId('filepickertree'), parent, {\r\n asyncNode: true,\r\n icon:\r\n props.nodeProps?.canWrite === false\r\n ? renderers.LockedFolderIconRenderer\r\n : renderers.FolderIconRenderer,\r\n isSelectable: props.nodeProps?.canWrite !== false,\r\n\r\n ...props,\r\n });\r\n\r\n makeObservable(this, {\r\n isLoadingMore: observable,\r\n });\r\n }\r\n\r\n getTree() {\r\n return this.tree as DirectoriesPicker;\r\n }\r\n\r\n public async loadMore(focus = true) {\r\n const res = await ApiaApi.post<TDirectoriesPickerResponse>(\r\n this.getTree().api.context,\r\n {\r\n ajaxUrl: DirectoryPickerActions.ajaxUrl(this.getTree().api),\r\n action: DirectoryPickerActions.loadFolderStructure,\r\n preventAsXmlParameter: true,\r\n isAjax: true,\r\n },\r\n {\r\n postData: {\r\n txtFld: this.state.nodeProps.id,\r\n loadFolders: true,\r\n until: this.id,\r\n },\r\n postDataTreatement: 'stringify',\r\n postDataStringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n if (res?.data) {\r\n this.removeLoadMoreDocsNode();\r\n const lastNode = this.getChildren()[this.getChildren().length - 1];\r\n\r\n arrayOrArray(res.data.folder).forEach((folder) => {\r\n if (!this.state.children.has(folder.id)) {\r\n this.getTree().createFolder({\r\n id: makeId(folder.id),\r\n label: folder.name,\r\n nodeProps: folder,\r\n parentId: this.id,\r\n });\r\n }\r\n });\r\n arrayOrArray(res.data.documents?.document).forEach((document) => {\r\n if (!this.state.children.has(document.id)) {\r\n this.getTree().createDocument({\r\n id: makeId(document.id),\r\n label: document.name,\r\n nodeProps: document,\r\n parentId: this.id,\r\n });\r\n }\r\n });\r\n if ((res?.data.documents?.documentInfo?.moreDocs ?? 0) > 0) {\r\n this.loadMoreDocsNode = this.getTree().createFolder({\r\n asyncNode: false,\r\n icon: undefined,\r\n isLeaf: true,\r\n label: getLabel('lblShwMoreEls').text,\r\n labelRenderer: this.getTree().renderers!.LoadMoreRenderer,\r\n onClick: async () => {\r\n if (this.loadMoreDocsNode) {\r\n this.loadMoreDocsNode.state.nodeProps.isLoadingMore = true;\r\n }\r\n await this.loadMore();\r\n },\r\n parentId: this.id,\r\n });\r\n if (focus) {\r\n this.tree.focusNode(this.loadMoreDocsNode);\r\n }\r\n } else {\r\n if (focus) {\r\n this.tree.focusNode(lastNode.getFollowingSibling() ?? lastNode);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async refresh() {\r\n this.removeAllChildren();\r\n this.loadMoreDocsNode = null;\r\n const res = this.loadMore(false);\r\n this.tree.focusNode(this.getFirstChildren(true) ?? this);\r\n return res;\r\n }\r\n}\r\n","import { MobXTree, MobXTreeNode } from '@apia/tree2-controller';\r\nimport { TCreateTreeNode, TDirectoriesPickerResponse } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { DirectoryPickerActions, makeId } from './utils';\r\nimport { DocumentNode } from './nodes/DocumentNode';\r\nimport { DirectoryPickerFolderNode } from './nodes/DirectoryPickerFolderNode';\r\nimport type { UploaderApi } from '../UploaderApi';\r\nimport type { TModalConfig } from '../types';\r\nimport { ApiaApi, TApiaApiAxiosResponse } from '@apia/api2';\r\n\r\nexport class DirectoriesPicker extends MobXTree {\r\n isLoading = true;\r\n public renderers: TModalConfig['renderers'];\r\n\r\n constructor(public api: UploaderApi) {\r\n super({\r\n className: 'FilePickerTree',\r\n isMultiple: false,\r\n });\r\n this.state.disableSelection = false;\r\n\r\n setTimeout(() => {\r\n this.initialLoad();\r\n }, 0);\r\n\r\n this.renderers = api.props.modalConfig.renderers!;\r\n makeObservable(this, { isLoading: observable });\r\n }\r\n\r\n createDocument(nodeProps: TCreateTreeNode): DocumentNode {\r\n let parentNode: undefined | DirectoriesPicker | DirectoryPickerFolderNode =\r\n this.getNodeById(nodeProps.parentId) as DirectoryPickerFolderNode;\r\n\r\n if (!parentNode) {\r\n console.warn('Cannot find parent node with id = ', nodeProps.parentId);\r\n parentNode = this;\r\n }\r\n\r\n const newNode = new DocumentNode(this, nodeProps);\r\n parentNode.append(newNode);\r\n\r\n return newNode;\r\n }\r\n\r\n createFolder(nodeProps: TCreateTreeNode): DirectoryPickerFolderNode {\r\n let parentNode: undefined | DirectoriesPicker | DirectoryPickerFolderNode =\r\n this.getNodeById(nodeProps.parentId) as DirectoryPickerFolderNode;\r\n\r\n if (!parentNode) {\r\n console.warn('Cannot find parent node with id = ', nodeProps.parentId);\r\n parentNode = this;\r\n }\r\n\r\n const newNode = this.getNodeHandler(nodeProps) as DirectoryPickerFolderNode;\r\n parentNode.append(newNode);\r\n\r\n return newNode;\r\n }\r\n\r\n async initialLoad() {\r\n this.state.onLoadData = async (node) => {\r\n await (node as DirectoryPickerFolderNode).refresh();\r\n };\r\n\r\n const res = await ApiaApi.post<TDirectoriesPickerResponse>(\r\n this.api.context,\r\n this.getFolderStructureParams(),\r\n );\r\n\r\n if (res?.data) {\r\n const foldersArray = this.parseStructureResponse(res);\r\n\r\n let selected: string = '';\r\n\r\n foldersArray?.forEach((folder) => {\r\n const newNode = this.createFolder({\r\n asyncNode: true,\r\n id: makeId(folder.id),\r\n label: folder.name,\r\n nodeProps: folder,\r\n parentId: folder.parent || 'root',\r\n });\r\n\r\n if (folder.parent) {\r\n (newNode.parent as MobXTreeNode).expand();\r\n }\r\n\r\n if (folder.selectedFolder) {\r\n selected = makeId(folder.id);\r\n }\r\n\r\n if (\r\n String(this.api.props.modalConfig.defaultDirectory) ===\r\n String(newNode.id)\r\n ) {\r\n newNode.tree.setSelectedNodes(new Set([newNode]));\r\n }\r\n });\r\n\r\n if (selected) {\r\n this.setSelectedNodes(new Set([selected]));\r\n }\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n\r\n getFolderStructureParams() {\r\n return {\r\n ajaxUrl: DirectoryPickerActions.ajaxUrl(this.api),\r\n action: DirectoryPickerActions.loadFolderStructure,\r\n preventAsXmlParameter: true,\r\n isAjax: true,\r\n isXml: true,\r\n docId: this.api.state.versioningFile?.docId,\r\n };\r\n }\r\n getNodeHandler(nodeProps: TCreateTreeNode) {\r\n return new DirectoryPickerFolderNode(this, nodeProps);\r\n }\r\n\r\n parseStructureResponse(res: any) {\r\n const castRes = res as TApiaApiAxiosResponse<TDirectoriesPickerResponse>;\r\n if (castRes?.data?.folder) return arrayOrArray(castRes.data.folder);\r\n\r\n return null;\r\n }\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { UploaderApi } from './UploaderApi';\r\nimport {\r\n IPoolsPermissions,\r\n IUsersPermissions,\r\n TApiaDocumentDefinition,\r\n TModalConfig,\r\n TUploaderFileInfo,\r\n UploadContext,\r\n UploaderModalState,\r\n} from './types';\r\nimport { getLabel } from '@apia/util';\r\nimport { DirectoriesPicker } from './directories/DirectoriesPicker';\r\n\r\nfunction getFileExtension(fileName: string): string {\r\n const parts = fileName.split('.');\r\n return parts.length > 1 ? parts.pop()!.toLowerCase() : '';\r\n}\r\n\r\nconst getInitialState: (\r\n context: UploadContext,\r\n) => Readonly<UploaderModalState> = (context: UploadContext) =>\r\n Object.freeze({\r\n metadata: {\r\n metadataArray: [],\r\n freeMetadataArray: [],\r\n isFreeMetadata: false,\r\n },\r\n fromDirectoryFile: null,\r\n docFolder: undefined,\r\n docPath: undefined,\r\n docExpDate: undefined,\r\n description: '',\r\n isReadonly: false,\r\n permissions: {\r\n pools: [],\r\n users: context.ownerCanUpdate\r\n ? [\r\n {\r\n canUpdate: true,\r\n userId: context.currentUserLogin,\r\n userLogin: context.currentUserLogin,\r\n },\r\n ]\r\n : [],\r\n allowAllType: (context.everyoneCanUpdate !== false ? 'M' : '') as 'M',\r\n },\r\n fileReqError: false,\r\n });\r\n\r\nexport class UploaderModalController {\r\n public directories: DirectoriesPicker | null = null;\r\n public state: UploaderModalState;\r\n\r\n constructor(\r\n public api: UploaderApi,\r\n public modalConfig: TModalConfig,\r\n public conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n versionFile?: TUploaderFileInfo;\r\n },\r\n ) {\r\n makeObservable(this, {\r\n state: observable,\r\n });\r\n\r\n this.state = getInitialState(api.props.context);\r\n\r\n if (modalConfig.showDirectoriesStructure) {\r\n if (!api.props.modalConfig.renderers) {\r\n throw new Error('If showDirectories is set, renderers are required');\r\n }\r\n\r\n this.directories = new DirectoriesPicker(this.api);\r\n }\r\n }\r\n\r\n public get allMetadata() {\r\n return [\r\n ...this.state.metadata.metadataArray,\r\n ...this.state.metadata.freeMetadataArray,\r\n ];\r\n }\r\n\r\n public get allowAllType() {\r\n return this.state.permissions.allowAllType;\r\n }\r\n\r\n public get description() {\r\n return this.state.description;\r\n }\r\n\r\n public get docFolder() {\r\n return this.state.docFolder;\r\n }\r\n\r\n public get docExpDate() {\r\n return this.state.docExpDate;\r\n }\r\n\r\n public get docTypes() {\r\n return this.api.getDocTypes();\r\n }\r\n\r\n public get freeMetadata() {\r\n return this.state.metadata.freeMetadataArray;\r\n }\r\n\r\n public get exitingFiles() {\r\n return this.api.getExistingFiles();\r\n }\r\n\r\n public get inProgressFiles() {\r\n return this.api.getInProgressFiles();\r\n }\r\n\r\n public get hiddenFiles() {\r\n return this.api.getHiddenFiles();\r\n }\r\n\r\n public get progress() {\r\n return this.api.getProgress();\r\n }\r\n\r\n public get metadata() {\r\n return this.state.metadata.metadataArray;\r\n }\r\n\r\n public get selectedDocTypeId() {\r\n return this.api.getCurrentDocTypeId();\r\n }\r\n\r\n public get selectedDocType() {\r\n return this.api.getCurrentDocType();\r\n }\r\n\r\n public addMetadata() {\r\n this.state.metadata.freeMetadataArray.push({\r\n free: 'Y',\r\n id: String(Math.random()),\r\n name: '',\r\n required: 'Y',\r\n title: '',\r\n type: 'S',\r\n value: '',\r\n errorMessage: '',\r\n labelErrorMessage: '',\r\n });\r\n }\r\n\r\n public addFiles(files: File[]) {\r\n this.state.fileReqError = false;\r\n this.state.isReadonly = false;\r\n this.api.saveDroppedFiles(files, this.conf);\r\n }\r\n\r\n public addDirectoryFile(file: TApiaDocumentDefinition) {\r\n this.state.fileReqError = false;\r\n this.api.state.inProgressFiles = [];\r\n this.state.fromDirectoryFile = file;\r\n }\r\n public async changeDocType(docTypeId: string) {\r\n this.resetMetadata();\r\n this.api.setCurrentDocTypeId(docTypeId);\r\n this.onChangeExtension();\r\n this.api.reloadMetadata({ docTypeId });\r\n }\r\n\r\n public clearDirectoryFile() {\r\n this.state.fromDirectoryFile = null;\r\n this.state.isReadonly = false;\r\n }\r\n\r\n public clearFile(name: string) {\r\n this.api.clearFile(name);\r\n }\r\n\r\n public clearFiles() {\r\n this.api.clearFiles();\r\n }\r\n\r\n public clearState() {\r\n this.state = getInitialState(this.api.props.context);\r\n this.api.clearState();\r\n }\r\n\r\n public clearPartialState() {\r\n if (this.api.state.inProgressFiles.length === 0) {\r\n this.state = getInitialState(this.api.props.context);\r\n }\r\n }\r\n\r\n public onCloseModal() {\r\n this.clearState();\r\n }\r\n\r\n public async confirm() {\r\n let isValid = this.validate();\r\n if (isValid) isValid = await this.api.confirmDropModal(this.conf);\r\n return isValid;\r\n }\r\n\r\n public deleteMetadata(indices: number[]) {\r\n const deleteSet = new Set(indices);\r\n const offset = this.state.metadata.metadataArray.length;\r\n\r\n this.state.metadata.freeMetadataArray =\r\n this.state.metadata.freeMetadataArray.filter(\r\n (_, localIndex) =>\r\n // conservamos sólo los que NO estén en deleteSet\r\n !deleteSet.has(localIndex + offset),\r\n );\r\n }\r\n\r\n public deletePermission(item: IPoolsPermissions | IUsersPermissions) {\r\n if (item && 'userId' in item) {\r\n this.state.permissions.users = this.state.permissions.users.filter(\r\n (c) => c.userId !== item.userId,\r\n );\r\n } else {\r\n this.state.permissions.pools = this.state.permissions.pools.filter(\r\n (c) => c.poolId !== item.poolId,\r\n );\r\n }\r\n }\r\n\r\n protected onChangeExtension(): void {\r\n const rawDocExts = this.api.getCurrentDocType()?.docExts || '';\r\n let hideFileNames = '';\r\n const allowedExtensions = rawDocExts\r\n .split(';')\r\n .map((ext) => ext.trim())\r\n .filter((ext) => ext !== '');\r\n\r\n if (rawDocExts === '') {\r\n const allFiles = [...this.inProgressFiles, ...this.hiddenFiles];\r\n const dedupedFiles = Array.from(\r\n new Map(allFiles.map((file: File) => [file.name, file])).values(),\r\n );\r\n this.api.state.inProgressFiles = dedupedFiles;\r\n this.api.state.hiddenFiles = [];\r\n return;\r\n }\r\n\r\n const allowedInProgress: File[] = [];\r\n const toHide: File[] = [];\r\n this.inProgressFiles.forEach((file: File) => {\r\n const ext = getFileExtension(file.name);\r\n if (allowedExtensions.includes(ext)) {\r\n allowedInProgress.push(file);\r\n } else {\r\n toHide.push(file);\r\n hideFileNames += ` ${file.name} `;\r\n }\r\n });\r\n\r\n const allowedHidden: File[] = [];\r\n const stillHidden: File[] = [];\r\n this.api.state.hiddenFiles.forEach((file: File) => {\r\n const ext = getFileExtension(file.name);\r\n if (allowedExtensions.includes(ext)) {\r\n allowedHidden.push(file);\r\n } else {\r\n stillHidden.push(file);\r\n }\r\n });\r\n\r\n const combinedInProgress = [...allowedInProgress, ...allowedHidden];\r\n const dedupedInProgress = Array.from(\r\n new Map(\r\n combinedInProgress.map((file: File) => [file.name, file]),\r\n ).values(),\r\n );\r\n const combinedHidden = [...toHide, ...stillHidden];\r\n const dedupedHidden = Array.from(\r\n new Map(combinedHidden.map((file: File) => [file.name, file])).values(),\r\n );\r\n\r\n this.api.state.inProgressFiles = dedupedInProgress;\r\n this.api.state.hiddenFiles = dedupedHidden;\r\n if (hideFileNames)\r\n this.api.notify({\r\n title: getLabel('msgFileWrngExt').text,\r\n message: hideFileNames,\r\n type: 'warning',\r\n });\r\n }\r\n\r\n public setDescription(desc: string) {\r\n this.state.description = desc;\r\n }\r\n\r\n protected async resetMetadata() {\r\n this.state.metadata = {\r\n freeMetadataArray: [],\r\n metadataArray: [],\r\n isFreeMetadata: false,\r\n };\r\n }\r\n\r\n public validate(): boolean {\r\n let isValid = true;\r\n this.state.fileReqError = false;\r\n if (\r\n this.api.getInProgressFiles().length === 0 &&\r\n !this.state.fromDirectoryFile\r\n ) {\r\n this.state.fileReqError = true;\r\n isValid = false;\r\n }\r\n\r\n this.allMetadata.forEach((c) => {\r\n if (c.free === 'Y') {\r\n if (c.title.trim() === '') {\r\n c.labelErrorMessage = getLabel('msgReqField').text;\r\n isValid = false;\r\n }\r\n if (c.value.trim() === '') {\r\n if (!c.errorMessage) c.errorMessage = getLabel('msgReqField').text;\r\n isValid = false;\r\n }\r\n }\r\n });\r\n\r\n return isValid;\r\n }\r\n}\r\n","import { toBoolean } from '@apia/util';\nimport { UploadContext, TFileUploaded, TUploaderFileInfo } from './types';\n\nexport const parseFileDefinition = (\n context: UploadContext,\n fileDefinition: TFileUploaded | TUploaderFileInfo,\n isSignRequired: boolean,\n): TUploaderFileInfo => {\n const { lock, isLocked, lockedBy, userLocking, ...file } =\n fileDefinition as TFileUploaded;\n\n return {\n ...file,\n isLocked:\n isLocked === 'true' ||\n isLocked === true ||\n toBoolean(lock) ||\n file.locked === true,\n isLockedByMe: (lockedBy || userLocking) === context.currentUserLogin,\n isMarkedToSign: file.markedToSign || toBoolean(file.sign) || isSignRequired,\n isVirtual: file.virtualDoc ?? false,\n lockingUser: lockedBy || userLocking,\n };\n};\n","import {\r\n addBoundary,\r\n arrayOrArray,\r\n downloadUrl,\r\n EventEmitter,\r\n formatMessage,\r\n getLabel,\r\n NotificationDefinition,\r\n parseAsSize,\r\n TApiaFunction,\r\n TApiaLoad,\r\n} from '@apia/util';\r\nimport {\r\n IPoolsPermissions,\r\n IUsersPermissions,\r\n TAjaxUploadFileStatus,\r\n TAjaxUploadStart,\r\n TConfirmDropModal,\r\n TDocType,\r\n TDocumentMetadata,\r\n TFileUploaded,\r\n TProcessDroppedFiles,\r\n TSaveDroppedFilesConf,\r\n TModalConfig,\r\n TUploaderFileInfo,\r\n TUploaderLoadCurrentFunction,\r\n TUploaderLoadCurrentFunctionMessages,\r\n UploaderState,\r\n TDocumentInformation,\r\n TRequireOnlyOne,\r\n UploadContext,\r\n} from './types';\r\nimport { UploaderModalController } from './UploaderModalController';\r\nimport QueryString from 'qs';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { ApiaApi } from '@apia/api2';\r\nimport { parseFileDefinition } from './util';\r\n\r\nexport class UploaderApi extends EventEmitter<{ fileUploaded: null }> {\r\n maxFiles = Infinity;\r\n modalController: UploaderModalController | null = null;\r\n langs: Record<number, string> | undefined;\r\n currentConfiguration: TUploaderLoadCurrentFunctionMessages | undefined;\r\n state: UploaderState = {\r\n progress: 0,\r\n allowedTypes: [],\r\n selectedDocTypeId: '1',\r\n versioningFile: null,\r\n inProgressFiles: [],\r\n files: {},\r\n selectedFiles: [],\r\n hiddenFiles: [],\r\n translatedFiles: new Map(),\r\n hasAllDocTypes: false,\r\n };\r\n get filesArray() {\r\n return Object.values(this.state.files);\r\n }\r\n\r\n get id() {\r\n return this.props.id;\r\n }\r\n\r\n get modalConfig() {\r\n return this.props.modalConfig;\r\n }\r\n\r\n constructor(\r\n public props: {\r\n context: UploadContext;\r\n id: string;\r\n modalConfig: TModalConfig;\r\n },\r\n ) {\r\n super();\r\n makeObservable(this, {\r\n state: observable,\r\n });\r\n this.langs = this.props.context.docLangs;\r\n }\r\n\r\n get context() {\r\n return this.props.context;\r\n }\r\n\r\n async init() {\r\n await this.ajaxUploadStart();\r\n await this.reloadMetadata({\r\n docTypeId: this.state.selectedDocTypeId,\r\n });\r\n await this.loadCurrentDocuments();\r\n }\r\n\r\n protected buildModalController(conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n versionFile?: TUploaderFileInfo;\r\n }) {\r\n return new UploaderModalController(this, this.props.modalConfig, conf);\r\n }\r\n\r\n async onStartUpload(files?: File[]) {\r\n if (this.props.modalConfig.oneClickUpload) {\r\n await this.saveDroppedFiles(files ?? []);\r\n } else {\r\n if (files) {\r\n const result = await this.saveDroppedFiles(files ?? []);\r\n if (!result) return;\r\n }\r\n this.modalController = this.buildModalController();\r\n this.context.openModal();\r\n }\r\n }\r\n\r\n async onTranslateUpload(\r\n conf: {\r\n langId: number;\r\n translatingFile: TUploaderFileInfo;\r\n },\r\n files?: File[],\r\n ) {\r\n if (this.props.modalConfig.oneClickUpload) {\r\n await this.saveDroppedFiles(files ?? [], conf);\r\n } else {\r\n await this.init();\r\n\r\n let mustOpen = true;\r\n\r\n if (files) {\r\n const res = await this.saveDroppedFiles(files ?? [], conf);\r\n if (!res) {\r\n mustOpen = false;\r\n }\r\n }\r\n\r\n if (mustOpen) {\r\n this.modalController = this.buildModalController(conf);\r\n this.context.openModal();\r\n }\r\n }\r\n }\r\n\r\n async onVersionUpload(\r\n file: TUploaderFileInfo,\r\n conf: {\r\n newFiles?: File[];\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n } = { newFiles: [] },\r\n ) {\r\n this.version(file, conf);\r\n }\r\n\r\n async autoLock(): Promise<boolean> {\r\n return new Promise<boolean>((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n\r\n public notify(notification: NotificationDefinition) {\r\n this.props.context.notify(notification);\r\n }\r\n\r\n protected getAjaxUrl(): string {\r\n return this.props.context.URL_REQUEST_AJAX;\r\n }\r\n\r\n public getDocTypes() {\r\n return this.state.allowedTypes;\r\n }\r\n\r\n public getCurrentDocTypeId() {\r\n return this.state.selectedDocTypeId;\r\n }\r\n\r\n public getCurrentDocType() {\r\n return this.state.allowedTypes.find(\r\n (c) => c.id === this.state.selectedDocTypeId,\r\n );\r\n }\r\n\r\n public getInProgressFiles() {\r\n return this.state.inProgressFiles;\r\n }\r\n\r\n public getHiddenFiles() {\r\n return this.state.hiddenFiles;\r\n }\r\n\r\n public getExistingFiles() {\r\n return this.state.files;\r\n }\r\n\r\n public getProgress() {\r\n return this.state.progress;\r\n }\r\n\r\n public getHasAllDocTypes() {\r\n return this.state.hasAllDocTypes;\r\n }\r\n\r\n async getDocumentInfo(\r\n {\r\n docId: apiId,\r\n downloadDocId: docId,\r\n }: TRequireOnlyOne<{ docId: string; downloadDocId: string }>,\r\n newElem?: boolean,\r\n ) {\r\n const id = apiId ? this.getDocument(apiId)!.docId : docId;\r\n const result = await ApiaApi.post<TDocumentInformation>(\r\n this.context,\r\n this.getDocumentInfoParameters({\r\n action: 'getDocumentInfo',\r\n isAjax: true,\r\n docId: id,\r\n newElem,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n );\r\n\r\n if (result?.data) {\r\n return result.data;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * This method searches for the provided id in several places:\r\n *\r\n * If it's found in the current files, returns it.\r\n * If not, it searches the provided docId in the translations map of each uploaded file.\r\n */\r\n getDocument(docId: string) {\r\n if (this.state.files[docId]) {\r\n return this.state.files[docId];\r\n } else {\r\n for (const map of this.state.translatedFiles.values()) {\r\n for (const file of map.values()) {\r\n if (file.docId === docId) {\r\n return file;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected updateDocument(docId: string, newValue: TUploaderFileInfo) {\r\n if (this.state.files[docId]) {\r\n this.state.files[docId] = { ...this.getDocument(docId), ...newValue };\r\n } else {\r\n this.state.translatedFiles.forEach((innerMap) => {\r\n innerMap.forEach((doc, langKey) => {\r\n if (doc.docId === docId) {\r\n innerMap.set(langKey, { ...doc, ...newValue });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n protected deleteDocument(docId: string) {\r\n if (this.state.files[docId]) {\r\n delete this.state.files[docId];\r\n } else {\r\n this.state.translatedFiles.forEach((innerMap) => {\r\n innerMap.forEach((doc, langKey) => {\r\n if (doc.docId === docId) {\r\n innerMap.delete(langKey);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n public clearFile(name: string) {\r\n if (this.modalController) {\r\n this.modalController.state.isReadonly = false;\r\n }\r\n\r\n this.state.inProgressFiles = this.state.inProgressFiles.filter(\r\n (c) => c.name !== name,\r\n );\r\n }\r\n\r\n public clearFiles() {\r\n if (this.modalController) {\r\n this.modalController.state.isReadonly = false;\r\n }\r\n\r\n this.state.inProgressFiles = [];\r\n this.state.versioningFile = null;\r\n this.state.hiddenFiles = [];\r\n }\r\n\r\n public clearState() {\r\n if (this.modalController) {\r\n this.modalController.state.isReadonly = false;\r\n }\r\n\r\n this.state.selectedDocTypeId = this.getDocTypes().find(\r\n (c) => String(c.id) === '1',\r\n )\r\n ? '1'\r\n : this.getDocTypes()[0]?.id;\r\n this.state.inProgressFiles = [];\r\n this.state.versioningFile = null;\r\n }\r\n\r\n async checkLockDocument(id: string, shouldNotifyUnlocked = true) {\r\n if (this.props.context.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n if (Number(id) < 0) return true;\r\n\r\n const file = this.getDocument(id)!;\r\n\r\n const result = await ApiaApi.post<{\r\n success: 'ok' | 'unlocked';\r\n usr: string;\r\n }>(\r\n this.context,\r\n this.getCheckLockDocumentParameters({\r\n action: 'checkLockDocument',\r\n docId: file.docId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n );\r\n\r\n const isLocked = result?.data?.success === 'ok';\r\n if (\r\n !isLocked &&\r\n result?.data?.usr &&\r\n result.data.usr !== this.props.context.currentUserLogin\r\n ) {\r\n this.notify({\r\n message: `${getLabel('msgDocLocOthUsr', {}, this.props.context).text.split('.')[0]}: ${\r\n result.data.usr\r\n }.`,\r\n type: 'warning',\r\n });\r\n return result.data.usr;\r\n }\r\n if (!isLocked && shouldNotifyUnlocked && !(await this.autoLock()))\r\n this.notify({\r\n message: getLabel('msgDocMusBeLocForUpd', {}, this.props.context).text,\r\n type: 'warning',\r\n });\r\n\r\n return isLocked;\r\n }\r\n\r\n public setCurrentDocTypeId(docTypeId: string) {\r\n this.state.selectedDocTypeId = docTypeId;\r\n }\r\n\r\n public async ajaxUploadStart(newFiles: File[] = []) {\r\n if (this.props.context.IN_MONITOR) {\r\n return;\r\n }\r\n const versioningFile = this.state.versioningFile;\r\n const res = await ApiaApi.post<TAjaxUploadStart>(\r\n this.context,\r\n this.getAjaxUploadStartParameters({\r\n action: 'ajaxUploadStart',\r\n isAjax: true,\r\n docId: versioningFile?.docId,\r\n docTypeId:\r\n newFiles.length === 1 ? versioningFile?.docTypeId || '1' : '1',\r\n newDoc: !versioningFile,\r\n useDocTypePermitted: false,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n );\r\n if (res?.data) {\r\n const docTypes = arrayOrArray(res?.data?.function?.docTypes?.docType);\r\n const hasGeneric = !!docTypes.find((c) => String(c.id) === '1');\r\n\r\n this.state.allowedTypes = docTypes;\r\n this.state.selectedDocTypeId = hasGeneric ? '1' : docTypes[0].id;\r\n\r\n if (newFiles.length > 0) {\r\n await this.saveDroppedFiles(newFiles);\r\n }\r\n return res?.data?.function.name === 'fncDocumentLoadInformation'\r\n ? true\r\n : false;\r\n } else {\r\n throw new Error('No files data');\r\n }\r\n }\r\n\r\n public async reloadMetadata(\r\n props?: Partial<{ docId: string; docTypeId: number | string }>,\r\n additionalProps?: Record<string, unknown>,\r\n ) {\r\n if (!this.modalController) return;\r\n const res = await ApiaApi.post<{\r\n metadata: TDocumentMetadata | TDocumentMetadata[];\r\n }>(\r\n this.context,\r\n this.getReloadMetadataParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n action: 'reloadMetadata',\r\n isAjax: true,\r\n docId: props?.docId,\r\n docTypeId: props?.docTypeId,\r\n metadata: this.getConfirmDropModalMetadataString({\r\n metadata: this.modalController?.allMetadata,\r\n }),\r\n ...additionalProps,\r\n }),\r\n );\r\n\r\n if (res?.data && props?.docTypeId) {\r\n const isFreeMetadata =\r\n this.state.allowedTypes.find(\r\n (current) => current.id === props.docTypeId,\r\n )?.free ?? false;\r\n\r\n this.modalController!.state.metadata.freeMetadataArray = [];\r\n this.modalController!.state.metadata.metadataArray = [];\r\n\r\n arrayOrArray(res.data.metadata).forEach((c) => {\r\n if (c.free === 'Y') {\r\n this.modalController!.state.metadata.freeMetadataArray.push(c);\r\n } else {\r\n this.modalController!.state.metadata.metadataArray.push(c);\r\n }\r\n });\r\n this.modalController!.state.metadata.isFreeMetadata = isFreeMetadata;\r\n }\r\n }\r\n\r\n public async saveDroppedFiles(\r\n unprocessedFiles: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): Promise<boolean> {\r\n if (this.props.context.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n const {\r\n langId,\r\n strictMode: isConfStrictMode = false,\r\n translatingFile,\r\n } = conf ?? {};\r\n const isStrictMode =\r\n isConfStrictMode ||\r\n !!this.state.versioningFile ||\r\n !!this.modalController?.state.fromDirectoryFile;\r\n\r\n const docType = this.getCurrentDocTypeId();\r\n\r\n if (!isStrictMode && !docType) {\r\n this.notify({\r\n message: `${getLabel('msgDropFileDel', {}, this.props.context).text}: ${unprocessedFiles\r\n .map((current) => current.name)\r\n .join(', ')}.`,\r\n type: 'warning',\r\n });\r\n return false;\r\n }\r\n const allowedFiles = this.filterAlreadyUploadedFiles(\r\n this.filterByFilesAmountLimit(\r\n this.filterAcceptedFiles(\r\n this.filterExistingFiles(\r\n this.filterVersioningFiles(unprocessedFiles, conf),\r\n conf,\r\n ),\r\n true,\r\n docType as string,\r\n ),\r\n ),\r\n conf,\r\n );\r\n if (allowedFiles.length > 0) {\r\n const formData = new FormData();\r\n allowedFiles.forEach((file) =>\r\n formData.append('fileRepository', file, file.name),\r\n );\r\n\r\n await ApiaApi.post(\r\n this.context,\r\n this.getSaveDroppedFilesParameters({\r\n action: 'saveDroppedFiles',\r\n docId: this.state.versioningFile?.docId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n frmOut: !this.modalController,\r\n docTypeId: this.state.selectedDocTypeId,\r\n langId,\r\n }),\r\n {\r\n postData: formData,\r\n axiosConfig: {\r\n onUploadProgress: (ev) =>\r\n (this.state.progress =\r\n (ev.loaded * 100) / ((ev.total ?? ev.loaded) * 2)),\r\n },\r\n },\r\n );\r\n const ajaxUploadFileStatusParameters =\r\n this.getAjaxUploadFileStatusParameters({\r\n action: 'ajaxUploadFileStatus',\r\n ajaxUrl: this.getAjaxUrl(),\r\n delayForDrop: true,\r\n isAjax: true,\r\n });\r\n\r\n let tries = 0;\r\n const checkUploadResult = async () => {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise(async (resolve) => {\r\n tries += 1;\r\n if (tries === 10) {\r\n this.notify({\r\n message:\r\n 'Error while checking for uploadFileStatus, too many tries',\r\n type: 'error',\r\n });\r\n resolve(false);\r\n return;\r\n }\r\n const response = await ApiaApi.post<TAjaxUploadFileStatus>(\r\n this.context,\r\n ajaxUploadFileStatusParameters,\r\n );\r\n if (response && response.data) {\r\n const hasMessages =\r\n arrayOrArray<any>(\r\n response.data?.sysMessages?.message ??\r\n response.data?.sysExceptions?.exception ??\r\n response.data?.exceptions?.exception ??\r\n response.data.function.messages?.message,\r\n ).length > 0 || !!response.data.function.dropLastMessage;\r\n\r\n const uploadMessage = arrayOrArray(\r\n response.data.function.messages?.message,\r\n ).find((current) => current.name === 'message');\r\n if (uploadMessage)\r\n this.notify({ message: uploadMessage.label, type: 'warning' });\r\n\r\n const method = response.data?.function.name;\r\n this.state.progress = 44;\r\n if (hasMessages) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n if (method === 'fncProceedDocumentProcessing') {\r\n resolve(true);\r\n return;\r\n }\r\n if (tries === 10) {\r\n resolve(method === 'fncProceedDocumentProcessing');\r\n }\r\n setTimeout(() => {\r\n checkUploadResult()\r\n .then(resolve)\r\n .catch(() => resolve(false));\r\n }, 100);\r\n } else {\r\n resolve(false);\r\n }\r\n });\r\n };\r\n const hasUploadedCorrectly = await checkUploadResult();\r\n\r\n this.state.progress = 66;\r\n\r\n if (hasUploadedCorrectly) {\r\n const shown = (this.state.inProgressFiles ?? []).map(\r\n (file) => file.name,\r\n );\r\n const postData = QueryString.stringify(\r\n this.getProcessDroppedFilesPostdata({\r\n useDocTypePermitted: true,\r\n dropped: allowedFiles.map((file) => file.name).concat(shown),\r\n shown,\r\n }),\r\n { arrayFormat: 'repeat' },\r\n );\r\n\r\n const secondResult = await ApiaApi.post<TProcessDroppedFiles>(\r\n this.context,\r\n this.getProcessDroppedFilesParameters({\r\n action: 'processDroppedFiles',\r\n docId: this.state.versioningFile?.docId,\r\n frmOut: !this.modalController,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n {\r\n postData: postData.toString(),\r\n },\r\n );\r\n\r\n this.state.progress = 83;\r\n\r\n if (secondResult?.data?.function?.principal?.docInfo) {\r\n const acceptedByServerFiles = arrayOrArray(\r\n secondResult.data.function?.principal?.docInfo,\r\n );\r\n\r\n this.state.inProgressFiles = [\r\n ...(this.state.inProgressFiles ?? []),\r\n ...acceptedByServerFiles\r\n .map((current) =>\r\n [...this.state.inProgressFiles, ...unprocessedFiles].find(\r\n (search) => search.name === current.docInfoName,\r\n ),\r\n )\r\n .filter((current): current is File => !!current),\r\n ];\r\n this.state.progress = 100;\r\n\r\n if (this.modalController)\r\n this.modalController.state.fromDirectoryFile = null;\r\n\r\n this.notify({\r\n type: 'success',\r\n message: getLabel(\r\n 'lblFileUploadedSuccessfully',\r\n {},\r\n this.props.context,\r\n ).text,\r\n });\r\n if (this.props.modalConfig.oneClickUpload) {\r\n if (langId && translatingFile)\r\n void this.confirmDropModal({ langId, translatingFile });\r\n else void this.confirmDropModal();\r\n }\r\n }\r\n }\r\n this.state.progress = 100;\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n async checkWebDavLock(docId: string) {\r\n if (this.props.context.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n if (Number.parseInt(docId) < 0) {\r\n return true;\r\n }\r\n\r\n return new Promise((resolve) => {\r\n let tries = 10;\r\n const checkLockAction = async () => {\r\n const isLocked = await ApiaApi.post<{ locked: boolean }>(\r\n this.context,\r\n this.getCheckWebDavLockParameters({\r\n action: 'isWebDavDocumentLocked',\r\n docId,\r\n ajaxUrl: this.props.context.URL_REQUEST_AJAX,\r\n }),\r\n );\r\n if (\r\n isLocked?.data?.locked === true ||\r\n isLocked?.data?.locked === undefined\r\n ) {\r\n if (--tries > 0) {\r\n setTimeout(() => void checkLockAction(), 1000);\r\n } else {\r\n this.notify({\r\n message: getLabel('msgFailSyncDoc', {}, this.props.context).text,\r\n });\r\n resolve(false);\r\n }\r\n } else {\r\n resolve(true);\r\n }\r\n };\r\n void checkLockAction();\r\n });\r\n }\r\n\r\n async checkSignature(file: TUploaderFileInfo) {\r\n let res = null;\r\n if (Number(file.docId) >= 0)\r\n res = await ApiaApi.get<{ markedToSign: boolean }>(\r\n this.context,\r\n this.getCheckSignatureParameters({\r\n action: 'viewDocSigns',\r\n docId: file.docId,\r\n lock: false,\r\n isAjax: true,\r\n react: true,\r\n }),\r\n );\r\n return res;\r\n }\r\n\r\n async editDocument(id: string) {\r\n if (this.props.context.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const result = await ApiaApi.post<{ folderId: string }>(\r\n this.context,\r\n this.getEditDocumentParameters({\r\n action: 'updateWebDavDocument',\r\n docId: file.docId,\r\n isAjax: true,\r\n }),\r\n );\r\n if (result?.data?.folderId) {\r\n const sDocumentUrl = `${this.props.context.WEBDAV_SERVER}${\r\n result?.data?.folderId\r\n }/${file.docId}/${file.name || file.docName || ''}`;\r\n\r\n const ProtocolInstallMessage = () => {\r\n this.notify({\r\n type: 'warning',\r\n message: getLabel(\r\n 'msgNoDocEdiProto',\r\n {\r\n text: {\r\n TOK1: `<a href=\"${this.props.context.WEBDAV_INSTALLER_URL}\" download>`,\r\n TOK2: `</a>`,\r\n },\r\n },\r\n this.props.context,\r\n ).text,\r\n title: getLabel('lblEdit', {}, this.props.context).text,\r\n });\r\n };\r\n\r\n this.props.context.ITHit.WebDAV.Client.DavConstants.ProtocolTimeoutMs = 10000;\r\n\r\n await (\r\n this.props.context.ITHit as any\r\n ).WebDAV.Client.DocManager.DavProtocolEditDocument(\r\n sDocumentUrl,\r\n this.props.context.WEBDAV_SERVER,\r\n ProtocolInstallMessage,\r\n null,\r\n 'Current',\r\n 'ApiaWebDavCookie', // Cookie(s) to copy.\r\n '', // URL to navigate to if any cookie from the list is not found.\r\n 'Edit',\r\n );\r\n }\r\n }\r\n }\r\n\r\n async downloadVersion(fileId: string, version?: string): Promise<void> {\r\n const file = this.getDocument(fileId);\r\n if (!file) return;\r\n\r\n if (\r\n Number.parseInt(fileId) < 0 ||\r\n this.props.context.IN_MONITOR ||\r\n (await this.checkWebDavLock(file.docId))\r\n )\r\n await downloadUrl(\r\n ApiaApi.makeUrl(this.context, {\r\n action: 'downloadDocument',\r\n docId: file.downloadDocId,\r\n version,\r\n }),\r\n );\r\n }\r\n\r\n async downloadDocument(id: string, version?: string) {\r\n const file = this.getDocument(id)!;\r\n if (\r\n Number.parseInt(id) < 0 ||\r\n this.props.context.IN_MONITOR ||\r\n (await this.checkWebDavLock(file.docId))\r\n ) {\r\n await downloadUrl(\r\n ApiaApi.makeUrl(this.context, {\r\n action: 'downloadDocument',\r\n docId: file.downloadDocId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n version,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n async ajaxDeleteDocument(id: string, langId?: number) {\r\n const file = this.getDocument(id)!;\r\n const isLocked = await this.checkLockDocument(file.docId);\r\n if (isLocked === true) {\r\n const result = await ApiaApi.post(\r\n this.context,\r\n this.getDeleteDocumentParameters({\r\n action: 'ajaxRemoveDocument',\r\n docId: file.docId,\r\n isAjax: true,\r\n ajaxUrl: this.getAjaxUrl(),\r\n langId,\r\n }),\r\n );\r\n\r\n if (this.evaluateDeleteDocumentResult(result?.data))\r\n this.deleteDocument(id);\r\n }\r\n }\r\n\r\n async version(\r\n file: TUploaderFileInfo,\r\n conf: {\r\n newFiles?: File[];\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n } = { newFiles: [] },\r\n ) {\r\n const checkLock = await this.checkLockDocument(file.docId, true);\r\n const isLocked = await this.checkWebDavLock(file.docId);\r\n\r\n // Si no está bloqueado correctamente, salir (misma lógica que antes)\r\n if (!(checkLock === true && isLocked)) return;\r\n\r\n // Guardamos el file en el state (como se hacía originalmente)\r\n this.state.versioningFile = file;\r\n\r\n const openVersionModal = () => {\r\n if (!this.props.modalConfig.oneClickUpload) {\r\n this.modalController = this.buildModalController({\r\n versionFile: file,\r\n });\r\n this.context.openModal();\r\n }\r\n };\r\n\r\n // Si no vienen newFiles, abrir el modal ahora (igual que el código original)\r\n if (!conf.newFiles || conf.newFiles.length === 0) {\r\n openVersionModal();\r\n }\r\n\r\n await this.ajaxUploadStart();\r\n\r\n if (file.docTypeId) this.state.selectedDocTypeId = file.docTypeId;\r\n\r\n await this.versionFileInfo(file);\r\n\r\n const hasNewFiles = !!(conf.newFiles && conf.newFiles.length > 0);\r\n\r\n if (hasNewFiles) {\r\n const res = await this.saveDroppedFiles(conf.newFiles!, {\r\n langId: conf.langId,\r\n translatingFile: conf.translatingFile,\r\n shouldReset: false,\r\n strictMode: true,\r\n });\r\n\r\n // Si el guardado devuelve éxito, abrir el modal ahora (si aplica).\r\n if (res) {\r\n openVersionModal();\r\n }\r\n } else {\r\n await this.reloadMetadata({\r\n docId: file.docId,\r\n docTypeId: file.docTypeId,\r\n });\r\n }\r\n }\r\n\r\n async versionFileInfo(file: TUploaderFileInfo) {\r\n const documentInfo = await this.getDocumentInfo({ docId: file.docId });\r\n if (documentInfo?.function) {\r\n const {\r\n data: { general },\r\n metadatas,\r\n } = documentInfo.function;\r\n\r\n const isFreeMetadata =\r\n this.state.allowedTypes.find((current) => current.id === file.docTypeId)\r\n ?.free ?? false;\r\n if (this.modalController) {\r\n this.modalController!.state = {\r\n description: general.docDesc,\r\n docFolder:\r\n general.docFolder === '' ? undefined : Number(general.docFolder),\r\n docPath: general.docFolderPath,\r\n permissions: {\r\n allowAllType: general.docAllPoolPerm,\r\n users: arrayOrArray(\r\n documentInfo.function.data.permissions?.user,\r\n ).map((current) => {\r\n const returnObject: IUsersPermissions = {\r\n canUpdate: current.permType === 'M',\r\n userId: current.id,\r\n userLogin: current.name,\r\n };\r\n return returnObject;\r\n }),\r\n pools: arrayOrArray(\r\n documentInfo.function.data.permissions?.pool,\r\n ).map((current) => {\r\n const returnObject: IPoolsPermissions = {\r\n canUpdate: current.permType === 'M',\r\n poolId: current.id,\r\n poolName: current.name,\r\n };\r\n return returnObject;\r\n }),\r\n },\r\n docExpDate: general.docExpDate,\r\n fileReqError: false,\r\n fromDirectoryFile: null,\r\n metadata: {\r\n metadataArray: arrayOrArray(metadatas?.metadata),\r\n freeMetadataArray: [],\r\n isFreeMetadata: isFreeMetadata,\r\n },\r\n };\r\n }\r\n }\r\n }\r\n\r\n public async pickFileById(id: string) {\r\n const documentInfo = await this.getDocumentInfo(\r\n { downloadDocId: id },\r\n true,\r\n );\r\n if (documentInfo) {\r\n const document = documentInfo.function.data.general;\r\n const { permissions } = documentInfo.function.data;\r\n\r\n if (this.modalController) {\r\n this.setCurrentDocTypeId(document.docTypeId);\r\n this.modalController.addDirectoryFile(document);\r\n this.modalController.state.description = document.docDesc;\r\n this.modalController.state.docExpDate = document.docExpDate;\r\n this.modalController.state.permissions = {\r\n pools: arrayOrArray(permissions?.pool).map((c) => {\r\n return {\r\n poolId: c.id,\r\n poolName: c.name,\r\n canUpdate: c.permType === 'M',\r\n };\r\n }),\r\n users: [\r\n ...arrayOrArray(permissions?.user).map((c) => {\r\n return {\r\n userId: c.id,\r\n userLogin: c.name,\r\n canUpdate: c.permType === 'M',\r\n };\r\n }),\r\n ],\r\n allowAllType: document.docAllPoolPerm as '',\r\n };\r\n this.modalController.changeDocType(document.docTypeId);\r\n this.modalController.state.isReadonly =\r\n !documentInfo.function.currentUsrPems.usrCanModify;\r\n }\r\n\r\n void this.reloadMetadata(\r\n { docId: document.docId, docTypeId: document.docTypeId },\r\n {\r\n docReuse: true,\r\n },\r\n );\r\n }\r\n }\r\n\r\n async markFileToSign(id: string, langId?: string) {\r\n if (this.props.context.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n this.state.files[id];\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const marked = await ApiaApi.post<{ markedToSign: boolean }>(\r\n this.context,\r\n this.getMarkFileToSignParameters({\r\n action: 'markDocTosign',\r\n docId: file.docId,\r\n isAjax: true,\r\n ajaxUrl: this.getAjaxUrl(),\r\n langId,\r\n }),\r\n );\r\n\r\n if (marked?.data?.markedToSign !== undefined) {\r\n if (this.state.files[id]) {\r\n this.state.files[id].markedToSign = marked.data.markedToSign;\r\n } else {\r\n this.state.translatedFiles.forEach((innerMap) => {\r\n innerMap.forEach((doc, langKey) => {\r\n if (doc.docId === id) {\r\n innerMap.set(langKey, {\r\n ...doc,\r\n markedToSign: marked?.data?.markedToSign ?? false,\r\n });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Por el momento realiza la descarga de todos los archivos\r\n * que estén subidos.\r\n */\r\n downloadMultipleDocuments() {\r\n const files = this.filesArray;\r\n if (files.length === 0) return;\r\n const docIds = this.state.selectedFiles;\r\n\r\n const selectedFiles = files.filter((current) =>\r\n docIds.find((search) => search === current.docId),\r\n );\r\n const ids = (selectedFiles.length > 0 ? selectedFiles : files)\r\n .map((current) => current.downloadDocId)\r\n .join('-');\r\n\r\n void downloadUrl(\r\n ApiaApi.makeUrl(\r\n this.context,\r\n this.getDownloadMultipleDocumentsParameters({\r\n action: 'multipleDownload',\r\n docId: ids,\r\n }),\r\n ),\r\n 'documents.zip',\r\n );\r\n }\r\n\r\n async confirmDropModal(conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n }) {\r\n if (this.props.context.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n const { langId, translatingFile } = conf ?? {};\r\n\r\n const cmbDocType = this.state.selectedDocTypeId;\r\n const fromDirectoryFile = this.modalController?.state.fromDirectoryFile;\r\n const docDesc = this.modalController?.description ?? '';\r\n const docAllowAllType = this.props.modalConfig.oneClickUpload\r\n ? 'M'\r\n : (this.modalController?.allowAllType ?? '');\r\n const docFolder = this.modalController?.docFolder;\r\n const docExpDate = this.modalController?.docExpDate;\r\n const metadata = this.modalController?.metadata ?? [];\r\n const freeMetadata = this.modalController?.freeMetadata ?? [];\r\n\r\n const poolsPermissions =\r\n this.modalController?.state.permissions.pools ?? [];\r\n\r\n const usersPermissions =\r\n this.modalController?.state.permissions.users ?? [];\r\n\r\n let postData = QueryString.stringify(\r\n this.getConfirmDropModalPostdata({\r\n cmbDocType,\r\n docDesc,\r\n docAllowAllType,\r\n dropped: this.state.inProgressFiles.map((file) => file.name),\r\n txtLangId: langId,\r\n txtLangGroup: translatingFile?.docLangGroup,\r\n docFolder: docFolder,\r\n }),\r\n { arrayFormat: 'repeat' },\r\n );\r\n\r\n postData = `${postData}${\r\n postData.length > 0 ? '&' : ''\r\n }${this.getConfirmDropModalPermissionsString({\r\n poolsPermissions,\r\n usersPermissions,\r\n })}&txtFreeMetadata=${this.getConfirmDropModalAdditionalMetadataString(\r\n freeMetadata,\r\n )}&txtMetadata=${this.getConfirmDropModalMetadataString({\r\n metadata: Object.values(metadata || {}),\r\n })}&docExpDate=${docExpDate ?? ''}`;\r\n\r\n const result = await ApiaApi.post<TConfirmDropModal>(\r\n this.context,\r\n this.getConfirmDropModalParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n docId: fromDirectoryFile\r\n ? fromDirectoryFile.docId\r\n : this.state.versioningFile?.docId,\r\n action: fromDirectoryFile\r\n ? 'associateExistingFile'\r\n : 'confirmDropModal',\r\n fromForm: true,\r\n ...(fromDirectoryFile\r\n ? {\r\n docId: fromDirectoryFile.docId,\r\n fromReuse: true,\r\n uploadDocument: false,\r\n }\r\n : null),\r\n }),\r\n {\r\n postData: postData.toString(),\r\n },\r\n );\r\n\r\n if (result?.data?.function) {\r\n const currentFiles = { ...this.state.files };\r\n const versioningFile = this.state.versioningFile;\r\n\r\n if (versioningFile && versioningFile.name) {\r\n delete currentFiles[versioningFile.name];\r\n }\r\n const newFiles: Record<string, TUploaderFileInfo> = arrayOrArray(\r\n result.data.function.general,\r\n )\r\n .map((current) =>\r\n this.parseFileDefinition({\r\n ...current,\r\n canWrite: true,\r\n canRead: true,\r\n canEdit: true,\r\n }),\r\n )\r\n .filter((current) => !currentFiles[current.docId])\r\n .reduce((acc, current) => ({ ...acc, [current.docId]: current }), {});\r\n\r\n if (langId && translatingFile) {\r\n const firstFile = Object.values(newFiles)[0];\r\n this.setTranslationFile(firstFile, translatingFile.docId, langId);\r\n } else {\r\n this.state.files = { ...currentFiles, ...newFiles };\r\n }\r\n this.clearFiles();\r\n this.emit('fileUploaded', null);\r\n\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected getLoadCurrentDocumentsParameters(\r\n params: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return params;\r\n }\r\n\r\n async loadCurrentDocuments() {\r\n const result = await ApiaApi.post<\r\n TApiaLoad<TApiaFunction<TUploaderLoadCurrentFunction, false>>\r\n >(\r\n this.context,\r\n this.getLoadCurrentDocumentsParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n action: 'ajaxLoadCurrent',\r\n isAjax: true,\r\n readOnly: this.props.context.readonly,\r\n allowLock: true,\r\n allowSign: true,\r\n allowMultiple: true,\r\n }),\r\n {},\r\n );\r\n\r\n if (result && result.data) {\r\n const currentConfiguration: TUploaderLoadCurrentFunctionMessages =\r\n arrayOrArray(result.data.function.messages.message).reduce(\r\n (prev, { name, label }) => ({ ...prev, [name]: Boolean(label) }),\r\n {} as TUploaderLoadCurrentFunctionMessages,\r\n );\r\n\r\n const currentFiles: TUploaderFileInfo[] = result.data.function.general\r\n ? arrayOrArray(result.data.function.general).map(\r\n this.parseFileDefinition,\r\n )\r\n : [];\r\n\r\n this.currentConfiguration = currentConfiguration;\r\n const nonTranslationFiles: TUploaderFileInfo[] = [];\r\n const translationFiles: TUploaderFileInfo[] = [];\r\n currentFiles.forEach((current) => {\r\n if (current.docLang === undefined) nonTranslationFiles.push(current);\r\n else translationFiles.push(current);\r\n });\r\n\r\n nonTranslationFiles.forEach((c) => {\r\n this.state.files[c.docId] = c;\r\n });\r\n translationFiles.forEach((current) => {\r\n const originalFile = nonTranslationFiles.find(\r\n (search) => search.docLangGroup === current.docLangGroup,\r\n );\r\n if (originalFile && current.docLang !== undefined) {\r\n this.setTranslationFile(\r\n current,\r\n originalFile.docId,\r\n Number(current.docLang),\r\n );\r\n } else\r\n console.warn(\r\n `The following file is translated but has no orignal file`,\r\n current,\r\n nonTranslationFiles,\r\n );\r\n });\r\n }\r\n }\r\n\r\n async lockDocument(id: string) {\r\n if (this.props.context.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n if (file.markedToSign) {\r\n this.notify({\r\n message: getLabel('msgCantActFileMarkSign', {}, this.props.context)\r\n .text,\r\n type: 'warning',\r\n });\r\n return;\r\n }\r\n if (!file.isLocked || !file.isLockedByMe) {\r\n const isLocked = await this.checkLockDocument(file.docId, false);\r\n this.updateDocument(\r\n id,\r\n typeof isLocked === 'string'\r\n ? this.parseFileDefinition({\r\n ...file,\r\n userLocking: isLocked,\r\n lock: true,\r\n isLocked: true,\r\n lockedBy: isLocked,\r\n })\r\n : { ...file, isLocked },\r\n );\r\n }\r\n\r\n const result = await ApiaApi.post<\r\n TApiaFunction<\r\n {\r\n data: {\r\n general: {\r\n docId: string;\r\n locked: boolean;\r\n prefix: string;\r\n userLocking: string;\r\n };\r\n };\r\n },\r\n false\r\n >\r\n >(\r\n this.context,\r\n this.getLockDocumentParameters({\r\n action: 'lockDocument',\r\n ajaxUrl: this.getAjaxUrl(),\r\n docId: file.docId,\r\n lock: file.isLocked || file.locked,\r\n isAjax: true,\r\n }),\r\n );\r\n\r\n if (result?.data) {\r\n const resultFile = result.data.function?.data?.general;\r\n if (resultFile)\r\n this.updateDocument(\r\n resultFile.docId,\r\n this.parseFileDefinition({\r\n ...file,\r\n ...resultFile,\r\n isLocked: resultFile.locked,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n protected evaluateDeleteDocumentResult(result: unknown) {\r\n return (\r\n (\r\n result as\r\n | undefined\r\n | TApiaLoad<\r\n TApiaFunction<\r\n {\r\n general: {\r\n docId: string;\r\n prefix: string;\r\n };\r\n },\r\n false\r\n >\r\n >\r\n )?.function?.name === 'fncDocumentRemove'\r\n );\r\n }\r\n\r\n public setTranslationFile(\r\n file: TUploaderFileInfo,\r\n docId: string,\r\n langId: number,\r\n ) {\r\n if (!this.state.translatedFiles.has(docId)) {\r\n this.state.translatedFiles.set(docId, new Map());\r\n }\r\n this.state.translatedFiles.get(docId)?.set(langId, file);\r\n }\r\n\r\n protected getCheckSignatureParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getAjaxUploadFileStatusParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getAjaxUploadStartParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getConfirmDropModalParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getCheckLockDocumentParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getCheckWebDavLockParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getConfirmDropModalPostdata(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getConfirmDropModalMetadataString = ({\r\n metadata,\r\n }: {\r\n metadata: TDocumentMetadata[];\r\n }) => {\r\n return (\r\n metadata\r\n ?.filter?.((current) => !!current.value)\r\n .map((current) => `${current.id}~${current.type}~${current.value}`)\r\n .join(';') ?? []\r\n );\r\n };\r\n\r\n protected getConfirmDropModalPermissionsString = ({\r\n poolsPermissions,\r\n usersPermissions,\r\n }: {\r\n poolsPermissions: IPoolsPermissions[];\r\n usersPermissions: IUsersPermissions[];\r\n }) => {\r\n let returnString = '';\r\n\r\n poolsPermissions.forEach(\r\n (current) =>\r\n (returnString = `${returnString}${\r\n returnString.length > 0 ? '&' : ''\r\n }docPoolId=${current.poolId}&docPoolName=${\r\n current.poolName\r\n }&docPermType${current.poolId}=${String(current.canUpdate)}`),\r\n );\r\n\r\n usersPermissions.forEach(\r\n (current) =>\r\n (returnString = `${returnString}${\r\n returnString.length > 0 ? '&' : ''\r\n }docUserId=${current.userId}&docUsrLogin=${\r\n current.userLogin\r\n }&docPermType${current.userId}=${String(current.canUpdate)}`),\r\n );\r\n\r\n return returnString;\r\n };\r\n\r\n protected getConfirmDropModalAdditionalMetadataString = (\r\n additionalMetadata: TDocumentMetadata[] | [],\r\n ) => {\r\n return Object.values(additionalMetadata)\r\n .filter((current) => !!current?.value)\r\n .map((current) => `${current.title}~${current.value}`)\r\n .join(';');\r\n };\r\n\r\n protected getDeleteDocumentParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getClearTempFilesParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getDocumentInfoParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getDownloadMultipleDocumentsParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getEditDocumentParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getLockDocumentParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getMarkFileToSignParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getProcessDroppedFilesParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getProcessDroppedFilesPostdata(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getReloadMetadataParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected getSaveDroppedFilesParameters(\r\n props: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return props;\r\n }\r\n\r\n protected filterAlreadyUploadedFiles(\r\n files: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): File[] {\r\n const versioningFile = this.state.versioningFile;\r\n if (versioningFile) return files;\r\n\r\n const uploadedFiles = Object.values(this.state.files).filter(\r\n (file) => Number(file.docId) > 0,\r\n );\r\n const existingFiles: File[] = [];\r\n const nonExistingFiles: File[] = [];\r\n if (conf?.langId) {\r\n const docId = conf.translatingFile?.docId ?? Infinity;\r\n const translationsMap = this.state.translatedFiles.get(String(docId));\r\n const alreadyUploadedToTranslationsFile = translationsMap\r\n ? Array.from(translationsMap.values()).find(\r\n (current) => (current.docName || current.name) === files[0]?.name,\r\n )\r\n : undefined;\r\n if (alreadyUploadedToTranslationsFile) existingFiles.push(files[0]);\r\n } else\r\n files.forEach((file) => {\r\n if (uploadedFiles.find((search) => search.docName === file.name)) {\r\n existingFiles.push(file);\r\n } else nonExistingFiles.push(file);\r\n });\r\n if (existingFiles.length > 0) {\r\n void this.notify({\r\n message: `${getLabel('msgDropFileRep', {}, this.props.context).text}: ${existingFiles\r\n .map((current) => current.name)\r\n .join(', ')}`,\r\n type: 'warning',\r\n });\r\n return nonExistingFiles;\r\n }\r\n return files;\r\n }\r\n\r\n protected filterByFilesAmountLimit(files: File[]): File[] {\r\n return files.slice(\r\n 0,\r\n addBoundary(this.maxFiles - (this.state.inProgressFiles?.length ?? 0), 0),\r\n );\r\n }\r\n\r\n protected filterAcceptedFiles(\r\n files: File[],\r\n shouldNotify = true,\r\n docTypeId?: string | TDocType,\r\n ): File[] {\r\n const docTypes =\r\n docTypeId !== undefined\r\n ? this.state.allowedTypes.filter((c) => {\r\n return typeof docTypeId === 'string'\r\n ? c.id === docTypeId\r\n : c.id === docTypeId.id;\r\n })\r\n : this.state.allowedTypes;\r\n\r\n if (!docTypes.find((c) => c.docExts === '')) {\r\n const notAllowedFilesBecauseOfExtension: File[] = [];\r\n const notAllowedFilesBecauseOfSize: File[] = [];\r\n let maxSize = Infinity;\r\n const allowedFiles = files.filter((currentFile) => {\r\n const extension = (currentFile.name.match(/\\.(\\w+)$/) ?? [])[1];\r\n\r\n let isAllowed = true;\r\n if (\r\n !docTypes.find((currentDocType) => {\r\n if (\r\n !currentDocType.docExts\r\n .split(';')\r\n .map((current) => current.toLowerCase())\r\n .includes(extension.toLowerCase())\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n })\r\n ) {\r\n isAllowed = false;\r\n notAllowedFilesBecauseOfExtension.push(currentFile);\r\n }\r\n if (\r\n isAllowed &&\r\n !docTypes.find((currentDocType: any) => {\r\n if (Number(currentDocType.maxSize) < currentFile.size) {\r\n maxSize = Number(currentDocType.maxSize);\r\n return false;\r\n }\r\n return true;\r\n })\r\n ) {\r\n notAllowedFilesBecauseOfSize.push(currentFile);\r\n isAllowed = false;\r\n }\r\n\r\n if (!isAllowed) return false;\r\n\r\n return true;\r\n });\r\n\r\n if (shouldNotify) {\r\n let errorMessage = '';\r\n\r\n if (notAllowedFilesBecauseOfExtension.length > 0) {\r\n const filesNames = notAllowedFilesBecauseOfExtension.reduce(\r\n (accumulated, current) => {\r\n if (accumulated.length === 0) return current.name;\r\n return `${accumulated}, ${current.name}`;\r\n },\r\n '',\r\n );\r\n\r\n errorMessage = `<strong>${getLabel('msgFileWrngExt', {}, this.props.context).text}</strong><br />${filesNames}`;\r\n }\r\n\r\n if (notAllowedFilesBecauseOfSize.length > 0) {\r\n const filesNames = notAllowedFilesBecauseOfSize.reduce(\r\n (accumulated, current) => {\r\n if (accumulated.length === 0) return current.name;\r\n return `${accumulated}, ${current.name}`;\r\n },\r\n '',\r\n );\r\n\r\n if (errorMessage.length > 0)\r\n errorMessage = `${errorMessage} <br /><br />`;\r\n errorMessage = `${errorMessage}${formatMessage(\r\n getLabel('msgFileTooBig', {}, this.props.context).text,\r\n {\r\n TOK1: `<br />${filesNames}`,\r\n TOK2: `${parseAsSize(maxSize)}`,\r\n },\r\n )}`;\r\n }\r\n\r\n if (errorMessage.length > 0)\r\n this.notify({\r\n message: errorMessage,\r\n type: 'warning',\r\n });\r\n }\r\n\r\n return allowedFiles;\r\n }\r\n return files;\r\n }\r\n\r\n protected filterExistingFiles(\r\n files: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): File[] {\r\n if (conf?.langId) return files;\r\n\r\n const currentFiles = this.state.inProgressFiles;\r\n const alreadyUploadedFiles = Object.values(this.state.files).filter(\r\n (current) => Number(current.docId) < 0,\r\n );\r\n let alreadyIncludedFileNames = '';\r\n const filteredFiles = files.filter((current) => {\r\n const isIncluded =\r\n currentFiles.findIndex((search) => search.name === current.name) !==\r\n -1 ||\r\n alreadyUploadedFiles.findIndex(\r\n (search) => search.docName === current.name,\r\n ) !== -1;\r\n\r\n if (isIncluded)\r\n alreadyIncludedFileNames = `${alreadyIncludedFileNames}${\r\n alreadyIncludedFileNames.length > 0 ? ', ' : ''\r\n }${current.name}`;\r\n\r\n return !isIncluded;\r\n });\r\n if (alreadyIncludedFileNames.length > 0)\r\n this.notify({\r\n message: `${getLabel('msgDropFileRep', {}, this.props.context).text}: ${alreadyIncludedFileNames}`,\r\n type: 'warning',\r\n });\r\n return filteredFiles;\r\n }\r\n\r\n protected filterVersioningFiles(\r\n files: File[],\r\n conf?: {\r\n langId?: number;\r\n strictMode?: boolean;\r\n translatingFile?: TUploaderFileInfo;\r\n shouldReset?: boolean;\r\n },\r\n ): File[] {\r\n conf;\r\n const versioningFile = this.state.versioningFile;\r\n if (versioningFile) {\r\n const newFiles = files.filter(\r\n (current) =>\r\n current.name === versioningFile.docName ||\r\n current.name === versioningFile.name,\r\n );\r\n if (newFiles.length === 0) {\r\n this.notify({\r\n type: 'warning',\r\n message: getLabel('msgDocDiffFilename', {}, this.props.context).text,\r\n });\r\n }\r\n return newFiles;\r\n }\r\n\r\n return files;\r\n }\r\n\r\n public parseFileDefinition = (file: TFileUploaded): TUploaderFileInfo => {\r\n return {\r\n ...parseFileDefinition(this.props.context, file, false),\r\n canEdit: file.canEdit || file.canWrite,\r\n canRead: file.canRead,\r\n };\r\n };\r\n\r\n public getLoadFileSystemStructureTree(): Record<string, unknown> {\r\n return {\r\n useDocTypePermitted: true,\r\n };\r\n }\r\n\r\n public getLoadFilesForFolderParameters(): Record<string, unknown> {\r\n return {\r\n useDocTypePermitted: true,\r\n };\r\n }\r\n}\r\n","import { ApiaApi } from '@apia/api2';\r\nimport { DirectoryPickerFolderNode } from './DirectoryPickerFolderNode';\r\nimport { TCreateTreeNode, TFilesPickerResponse } from '../types';\r\nimport { FilePickerActions, makeId } from '../utils';\r\nimport { arrayOrArray, getLabel } from '@apia/util';\r\nimport { DirectoriesPicker } from '../DirectoriesPicker';\r\n\r\nexport class FilePickerFolderNode extends DirectoryPickerFolderNode {\r\n constructor(\r\n parent: DirectoryPickerFolderNode | DirectoriesPicker,\r\n props: TCreateTreeNode,\r\n private params: Record<string, unknown> = {},\r\n ) {\r\n super(parent, props);\r\n this.state.isSelectable = false;\r\n }\r\n\r\n public async loadMore(focus = true): Promise<void> {\r\n const res = await ApiaApi.post<TFilesPickerResponse>(\r\n this.getTree().api.context,\r\n {\r\n ajaxUrl: FilePickerActions.ajaxUrl,\r\n action: FilePickerActions.loadFilesForFolder,\r\n preventAsXmlParameter: true,\r\n isAjax: true,\r\n },\r\n {\r\n postData: {\r\n txtFld: this.state.nodeProps.id,\r\n loadFolders: true,\r\n txtCantDoc: this.getChildren().length,\r\n offset: this.getChildren().length,\r\n docTypePermittedObjId: this.params.docTypePermittedObjId,\r\n docTypePermittedObjType: this.params.docTypePermittedObjType,\r\n useDocTypePermitted: this.params.useDocTypePermitted,\r\n docTypeForcedId: this.params.docTypeForcedId,\r\n ...this.params,\r\n },\r\n postDataTreatement: 'stringify',\r\n postDataStringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n if (res?.data) {\r\n const lastNode = this.getChildren()[this.getChildren().length - 1];\r\n\r\n arrayOrArray(res.data.folders?.folder).forEach((folder) => {\r\n if (!this.state.children.has(makeId(folder.id))) {\r\n this.getTree().createFolder({\r\n id: makeId(folder.id),\r\n label: folder.name,\r\n nodeProps: folder,\r\n parentId: this.id,\r\n });\r\n }\r\n });\r\n\r\n arrayOrArray(res.data.documents?.document).forEach((document) => {\r\n if (!this.state.children.has(makeId(document.id))) {\r\n this.getTree().createDocument({\r\n id: makeId(document.id),\r\n label: document.name,\r\n nodeProps: document,\r\n parentId: this.id,\r\n });\r\n }\r\n });\r\n if ((res?.data.documents?.documentInfo?.moreDocs ?? 0) > 0) {\r\n this.removeLoadMoreDocsNode();\r\n this.loadMoreDocsNode = this.getTree().createFolder({\r\n asyncNode: false,\r\n icon: undefined,\r\n isLeaf: true,\r\n label: getLabel('lblShwMoreEls').text,\r\n labelRenderer: this.getTree().renderers!.LoadMoreRenderer,\r\n onClick: async () => {\r\n if (this.loadMoreDocsNode) {\r\n this.loadMoreDocsNode.state.nodeProps.isLoadingMore = true;\r\n }\r\n await this.loadMore();\r\n },\r\n parentId: this.id,\r\n });\r\n if (focus) {\r\n this.tree.focusNode(this.loadMoreDocsNode);\r\n }\r\n } else {\r\n this.removeLoadMoreDocsNode();\r\n if (focus) {\r\n this.tree.focusNode(lastNode.getFollowingSibling() ?? lastNode);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { DirectoriesPicker } from './DirectoriesPicker';\r\nimport { TCreateTreeNode, TFilesPickerResponse } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { DirectoryPickerFolderNode } from './nodes/DirectoryPickerFolderNode';\r\nimport type { UploaderApi } from '../UploaderApi';\r\nimport { TApiaApiAxiosResponse } from '@apia/api2';\r\nimport { FilePickerFolderNode } from './nodes';\r\nimport { FilePickerActions } from './utils';\r\n\r\nexport class FilePicker extends DirectoriesPicker {\r\n constructor(api: UploaderApi) {\r\n super(api);\r\n }\r\n\r\n getNodeHandler(nodeProps: TCreateTreeNode): DirectoryPickerFolderNode {\r\n return new FilePickerFolderNode(\r\n this,\r\n nodeProps,\r\n this.api.getLoadFilesForFolderParameters(),\r\n );\r\n }\r\n\r\n getFolderStructureParams(): any {\r\n return {\r\n ajaxUrl: FilePickerActions.ajaxUrl,\r\n action: FilePickerActions.loadFileSystemStructureTree,\r\n preventAsXmlParameter: true,\r\n isAjax: true,\r\n isXml: true,\r\n txtFld: this.api.modalConfig.rootFolder,\r\n };\r\n }\r\n\r\n parseStructureResponse(res: any) {\r\n const castRes = res as TApiaApiAxiosResponse<TFilesPickerResponse>;\r\n if (castRes.data?.folders.folder)\r\n return arrayOrArray(castRes.data?.folders.folder);\r\n return null;\r\n }\r\n}\r\n"],"names":["__publicField"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apia/uploader-controller",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.50",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"author": "Alexis Leite <alexisleite@live.com>",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"registry": "https://registry.npmjs.org/"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@apia/api2": "^4.0.
|
|
28
|
-
"@apia/tree2-controller": "^4.0.
|
|
29
|
-
"@apia/util": "^4.0.
|
|
27
|
+
"@apia/api2": "^4.0.50",
|
|
28
|
+
"@apia/tree2-controller": "^4.0.50",
|
|
29
|
+
"@apia/util": "^4.0.50"
|
|
30
30
|
},
|
|
31
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "9d08b163f939d98211398165f1a926e82664f420"
|
|
32
32
|
}
|