@overmap-ai/core 1.0.50-fix-error-messaging.0 → 1.0.51-add-submitted-at-to-form-revisions.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/overmap-core.js +117 -31
- package/dist/overmap-core.js.map +1 -1
- package/dist/overmap-core.umd.cjs +117 -31
- package/dist/overmap-core.umd.cjs.map +1 -1
- package/dist/sdk/services/AttachmentService.d.ts +6 -5
- package/dist/store/slices/componentSlice.d.ts +1 -0
- package/dist/store/slices/componentTypeSlice.d.ts +1 -0
- package/dist/store/slices/documentSlice.d.ts +35 -2
- package/dist/store/slices/issueSlice.d.ts +1 -0
- package/dist/typings/models/attachments.d.ts +4 -0
- package/dist/typings/models/forms.d.ts +2 -1
- package/package.json +152 -152
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @overmap-ai/core
|
|
2
|
-
|
|
3
|
-
The `core` package contains core functionality for the Overmap platform. It is a peer dependency of all other overmap
|
|
4
|
-
packages.
|
|
1
|
+
# @overmap-ai/core
|
|
2
|
+
|
|
3
|
+
The `core` package contains core functionality for the Overmap platform. It is a peer dependency of all other overmap
|
|
4
|
+
packages.
|
package/dist/overmap-core.js
CHANGED
|
@@ -1561,6 +1561,7 @@ const selectHiddenCategoryCount = (state) => {
|
|
|
1561
1561
|
};
|
|
1562
1562
|
const categoryReducer = categorySlice.reducer;
|
|
1563
1563
|
function setAttachments(state, action) {
|
|
1564
|
+
state.attachments = {};
|
|
1564
1565
|
for (const attachment of action.payload) {
|
|
1565
1566
|
state.attachments[attachment.offline_id] = attachment;
|
|
1566
1567
|
}
|
|
@@ -1715,6 +1716,9 @@ const selectAllComponentAttachments = createSelector(
|
|
|
1715
1716
|
[selectComponentAttachmentMapping],
|
|
1716
1717
|
(mapping) => Object.values(mapping)
|
|
1717
1718
|
);
|
|
1719
|
+
const selectComponentAttachment = (attachmentId) => (state) => {
|
|
1720
|
+
return state.componentReducer.attachments[attachmentId];
|
|
1721
|
+
};
|
|
1718
1722
|
const selectAttachmentsOfComponent = restructureCreateSelectorWithArgs(
|
|
1719
1723
|
createSelector(
|
|
1720
1724
|
[selectAllComponentAttachments, (_state, componentId) => componentId],
|
|
@@ -2004,6 +2008,9 @@ const selectAllComponentTypeAttachments = createSelector(
|
|
|
2004
2008
|
[selectComponentTypeAttachmentMapping],
|
|
2005
2009
|
(mapping) => Object.values(mapping)
|
|
2006
2010
|
);
|
|
2011
|
+
const selectComponentTypeAttachment = (attachmentId) => (state) => {
|
|
2012
|
+
return state.componentTypeReducer.attachments[attachmentId];
|
|
2013
|
+
};
|
|
2007
2014
|
const selectAttachmentsOfComponentType = restructureCreateSelectorWithArgs(
|
|
2008
2015
|
createSelector(
|
|
2009
2016
|
[selectAllComponentTypeAttachments, (_state, componentTypeId) => componentTypeId],
|
|
@@ -2398,6 +2405,9 @@ const selectAttachmentsOfIssue = restructureCreateSelectorWithArgs(
|
|
|
2398
2405
|
}
|
|
2399
2406
|
)
|
|
2400
2407
|
);
|
|
2408
|
+
const selectIssueAttachment = (attachmentId) => (root) => {
|
|
2409
|
+
return root.issueReducer.attachments[attachmentId];
|
|
2410
|
+
};
|
|
2401
2411
|
const selectAttachmentsOfIssueByType = restructureCreateSelectorWithArgs(
|
|
2402
2412
|
createSelector(
|
|
2403
2413
|
[selectIssueAttachments, (_state, issueId) => issueId],
|
|
@@ -3852,7 +3862,8 @@ const selectSortedEmailDomains = (state) => Object.values(state.emailDomainsRedu
|
|
|
3852
3862
|
);
|
|
3853
3863
|
const emailDomainsReducer = emailDomainsSlice.reducer;
|
|
3854
3864
|
const initialState$1 = {
|
|
3855
|
-
documents: {}
|
|
3865
|
+
documents: {},
|
|
3866
|
+
attachments: {}
|
|
3856
3867
|
};
|
|
3857
3868
|
const documentSlice = createSlice({
|
|
3858
3869
|
name: "documents",
|
|
@@ -3989,10 +4000,28 @@ const documentSlice = createSlice({
|
|
|
3989
4000
|
}
|
|
3990
4001
|
delete state.documents[documentId];
|
|
3991
4002
|
}
|
|
3992
|
-
}
|
|
4003
|
+
},
|
|
4004
|
+
setDocumentAttachments: setAttachments,
|
|
4005
|
+
addDocumentAttachment: addAttachment,
|
|
4006
|
+
addDocumentAttachments: addAttachments,
|
|
4007
|
+
updateDocumentAttachment: updateAttachment,
|
|
4008
|
+
removeDocumentAttachment: removeAttachment,
|
|
4009
|
+
removeDocumentAttachments: removeAttachments
|
|
3993
4010
|
}
|
|
3994
4011
|
});
|
|
3995
|
-
const {
|
|
4012
|
+
const {
|
|
4013
|
+
setDocuments,
|
|
4014
|
+
addDocuments,
|
|
4015
|
+
updateDocuments,
|
|
4016
|
+
moveDocument,
|
|
4017
|
+
removeDocuments,
|
|
4018
|
+
setDocumentAttachments,
|
|
4019
|
+
addDocumentAttachment,
|
|
4020
|
+
addDocumentAttachments,
|
|
4021
|
+
updateDocumentAttachment,
|
|
4022
|
+
removeDocumentAttachment,
|
|
4023
|
+
removeDocumentAttachments
|
|
4024
|
+
} = documentSlice.actions;
|
|
3996
4025
|
const selectDocumentsMapping = (state) => state.documentsReducer.documents;
|
|
3997
4026
|
const selectDocuments = createSelector(
|
|
3998
4027
|
[selectDocumentsMapping],
|
|
@@ -4022,6 +4051,39 @@ const selectRootDocuments = createSelector(
|
|
|
4022
4051
|
[selectDocuments],
|
|
4023
4052
|
(documents) => documents.filter((document2) => !document2.parent_document)
|
|
4024
4053
|
);
|
|
4054
|
+
const selectDocumentAttachmentMapping = (state) => state.documentsReducer.attachments;
|
|
4055
|
+
const selectAllDocumentAttachments = createSelector(
|
|
4056
|
+
[selectDocumentAttachmentMapping],
|
|
4057
|
+
(mapping) => Object.values(mapping)
|
|
4058
|
+
);
|
|
4059
|
+
const selectDocumentAttachment = (attachmentId) => (state) => {
|
|
4060
|
+
return state.documentsReducer.attachments[attachmentId];
|
|
4061
|
+
};
|
|
4062
|
+
const selectAttachmentsOfDocument = restructureCreateSelectorWithArgs(
|
|
4063
|
+
createSelector(
|
|
4064
|
+
[selectAllDocumentAttachments, (_state, documentId) => documentId],
|
|
4065
|
+
(attachments, documentId) => {
|
|
4066
|
+
return attachments.filter(({ document: document2 }) => documentId === document2);
|
|
4067
|
+
}
|
|
4068
|
+
)
|
|
4069
|
+
);
|
|
4070
|
+
const selectAttachmentsOfDocumentByType = restructureCreateSelectorWithArgs(
|
|
4071
|
+
createSelector(
|
|
4072
|
+
[selectAllDocumentAttachments, (_state, documentId) => documentId],
|
|
4073
|
+
(attachments, documentId) => {
|
|
4074
|
+
const attachmentsOfProject = attachments.filter(({ document: document2 }) => documentId === document2);
|
|
4075
|
+
const fileAttachments = attachmentsOfProject.filter(
|
|
4076
|
+
// this null check here is necessary, there are cases where file_type is null or undefined
|
|
4077
|
+
({ file_type }) => !file_type || !file_type.startsWith("image/")
|
|
4078
|
+
);
|
|
4079
|
+
const imageAttachments = attachmentsOfProject.filter(
|
|
4080
|
+
// this null check here is necessary, there are cases where file_type is null or undefined
|
|
4081
|
+
({ file_type }) => file_type && file_type.startsWith("image/")
|
|
4082
|
+
);
|
|
4083
|
+
return { fileAttachments, imageAttachments };
|
|
4084
|
+
}
|
|
4085
|
+
)
|
|
4086
|
+
);
|
|
4025
4087
|
const documentsReducer = documentSlice.reducer;
|
|
4026
4088
|
const initialState = {
|
|
4027
4089
|
version: 0
|
|
@@ -4602,7 +4664,8 @@ class AttachmentService extends BaseApiService {
|
|
|
4602
4664
|
issue_attachments: Object.values(state.issueReducer.attachments),
|
|
4603
4665
|
component_attachments: Object.values(state.componentReducer.attachments),
|
|
4604
4666
|
component_type_attachments: Object.values(state.componentTypeReducer.attachments),
|
|
4605
|
-
project_attachments: Object.values(state.projectReducer.attachments)
|
|
4667
|
+
project_attachments: Object.values(state.projectReducer.attachments),
|
|
4668
|
+
document_attachments: Object.values(state.documentsReducer.attachments)
|
|
4606
4669
|
};
|
|
4607
4670
|
return [allAttachments, promise];
|
|
4608
4671
|
}
|
|
@@ -4706,8 +4769,8 @@ class AttachmentService extends BaseApiService {
|
|
|
4706
4769
|
});
|
|
4707
4770
|
return [offlineAttachment, promise];
|
|
4708
4771
|
}
|
|
4709
|
-
async
|
|
4710
|
-
const { description: description2,
|
|
4772
|
+
async addDocumentAttachment(attachmentPayload) {
|
|
4773
|
+
const { description: description2, document: document2, file_sha1, offline_id } = attachmentPayload;
|
|
4711
4774
|
if (!attachmentPayload.file.objectURL) {
|
|
4712
4775
|
throw new Error("Expected attachmentPayload.file.objectURL to be defined.");
|
|
4713
4776
|
}
|
|
@@ -4720,24 +4783,24 @@ class AttachmentService extends BaseApiService {
|
|
|
4720
4783
|
created_by: this.client.store.getState().userReducer.currentUser.id
|
|
4721
4784
|
};
|
|
4722
4785
|
await this.client.files.addCache(attachmentPayload.file, file_sha1);
|
|
4723
|
-
this.client.store.dispatch(
|
|
4786
|
+
this.client.store.dispatch(addDocumentAttachment(offlineAttachment));
|
|
4724
4787
|
const [fileProps] = await this.client.files.uploadFileToS3(file_sha1);
|
|
4725
4788
|
const promise = this.enqueueRequest({
|
|
4726
4789
|
description: "Create attachment",
|
|
4727
4790
|
method: HttpMethod.POST,
|
|
4728
|
-
url: `/
|
|
4729
|
-
blocks: [offline_id,
|
|
4791
|
+
url: `/documents/${document2}/attach/`,
|
|
4792
|
+
blocks: [offline_id, document2],
|
|
4730
4793
|
blockers: [file_sha1],
|
|
4731
4794
|
payload: {
|
|
4732
4795
|
offline_id,
|
|
4733
|
-
|
|
4796
|
+
document: document2,
|
|
4734
4797
|
description: description2 ?? "",
|
|
4735
4798
|
submitted_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
4736
4799
|
...fileProps
|
|
4737
4800
|
}
|
|
4738
4801
|
});
|
|
4739
4802
|
promise.catch((error2) => {
|
|
4740
|
-
this.client.store.dispatch(
|
|
4803
|
+
this.client.store.dispatch(removeDocumentAttachment(offlineAttachment.offline_id));
|
|
4741
4804
|
throw error2;
|
|
4742
4805
|
});
|
|
4743
4806
|
return [offlineAttachment, promise];
|
|
@@ -4808,7 +4871,7 @@ class AttachmentService extends BaseApiService {
|
|
|
4808
4871
|
return photoAttachmentPromise(file);
|
|
4809
4872
|
});
|
|
4810
4873
|
}
|
|
4811
|
-
|
|
4874
|
+
attachFilesToDocument(filesToSubmit, documentId) {
|
|
4812
4875
|
return filesToSubmit.map((file) => {
|
|
4813
4876
|
if (!(file instanceof File)) {
|
|
4814
4877
|
throw new Error("Expected a File instance.");
|
|
@@ -4819,12 +4882,12 @@ class AttachmentService extends BaseApiService {
|
|
|
4819
4882
|
file: file2,
|
|
4820
4883
|
file_name: file2.name,
|
|
4821
4884
|
file_type: file2.type,
|
|
4822
|
-
|
|
4885
|
+
document: documentId,
|
|
4823
4886
|
file_sha1: hash,
|
|
4824
4887
|
submitted_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
4825
4888
|
created_by: this.client.store.getState().userReducer.currentUser.id
|
|
4826
4889
|
});
|
|
4827
|
-
return this.
|
|
4890
|
+
return this.addDocumentAttachment(attachment);
|
|
4828
4891
|
};
|
|
4829
4892
|
return photoAttachmentPromise(file);
|
|
4830
4893
|
});
|
|
@@ -5004,9 +5067,9 @@ class AttachmentService extends BaseApiService {
|
|
|
5004
5067
|
const promise = performRequest2();
|
|
5005
5068
|
return [offlineAttachment, promise];
|
|
5006
5069
|
}
|
|
5007
|
-
async
|
|
5070
|
+
async replaceDocumentAttachmentFile(attachmentId, newFile) {
|
|
5008
5071
|
const { store } = this.client;
|
|
5009
|
-
const attachment = store.getState().
|
|
5072
|
+
const attachment = store.getState().documentsReducer.attachments[attachmentId];
|
|
5010
5073
|
if (!attachment)
|
|
5011
5074
|
throw new Error(`Attachment ${attachmentId} not found`);
|
|
5012
5075
|
let oldFile = void 0;
|
|
@@ -5020,7 +5083,7 @@ class AttachmentService extends BaseApiService {
|
|
|
5020
5083
|
throw new Error(`newFile["objectURL"] is unexpectedly ${newFile.objectURL}`);
|
|
5021
5084
|
}
|
|
5022
5085
|
store.dispatch(
|
|
5023
|
-
|
|
5086
|
+
updateDocumentAttachment({
|
|
5024
5087
|
...attachment,
|
|
5025
5088
|
file_sha1: newSha1,
|
|
5026
5089
|
file: URL.createObjectURL(newFile)
|
|
@@ -5028,13 +5091,13 @@ class AttachmentService extends BaseApiService {
|
|
|
5028
5091
|
);
|
|
5029
5092
|
await this.client.files.addCache(newFile, newSha1);
|
|
5030
5093
|
const [fileProps] = await this.client.files.uploadFileToS3(newSha1).catch((e) => {
|
|
5031
|
-
store.dispatch(
|
|
5094
|
+
store.dispatch(updateDocumentAttachment(attachment));
|
|
5032
5095
|
throw e;
|
|
5033
5096
|
});
|
|
5034
5097
|
const promise2 = this.enqueueRequest({
|
|
5035
5098
|
description: "Edit attachment",
|
|
5036
5099
|
method: HttpMethod.PATCH,
|
|
5037
|
-
url: `/attachments/
|
|
5100
|
+
url: `/attachments/documents/${attachment.offline_id}/`,
|
|
5038
5101
|
isResponseBlob: false,
|
|
5039
5102
|
payload: fileProps,
|
|
5040
5103
|
blockers: [attachmentId, newSha1],
|
|
@@ -5047,7 +5110,7 @@ class AttachmentService extends BaseApiService {
|
|
|
5047
5110
|
} catch (e) {
|
|
5048
5111
|
if (oldFile) {
|
|
5049
5112
|
store.dispatch(
|
|
5050
|
-
|
|
5113
|
+
updateDocumentAttachment({
|
|
5051
5114
|
...attachment,
|
|
5052
5115
|
file_sha1: attachment.file_sha1,
|
|
5053
5116
|
file: URL.createObjectURL(oldFile)
|
|
@@ -5117,20 +5180,20 @@ class AttachmentService extends BaseApiService {
|
|
|
5117
5180
|
blocks: [componentTypeAttachmentId]
|
|
5118
5181
|
});
|
|
5119
5182
|
}
|
|
5120
|
-
|
|
5183
|
+
deleteDocumentAttachment(documentAttachmentId) {
|
|
5121
5184
|
const { store } = this.client;
|
|
5122
|
-
const attachment =
|
|
5185
|
+
const attachment = store.getState().documentsReducer.attachments[documentAttachmentId];
|
|
5123
5186
|
if (!attachment) {
|
|
5124
|
-
throw new Error(`Attachment ${
|
|
5187
|
+
throw new Error(`Attachment ${documentAttachmentId} not found`);
|
|
5125
5188
|
}
|
|
5126
|
-
store.dispatch(
|
|
5189
|
+
store.dispatch(removeDocumentAttachment(documentAttachmentId));
|
|
5127
5190
|
void this.client.files.removeCache(attachment.file_sha1);
|
|
5128
5191
|
return this.enqueueRequest({
|
|
5129
|
-
description: "Delete attachment",
|
|
5192
|
+
description: "Delete document attachment",
|
|
5130
5193
|
method: HttpMethod.DELETE,
|
|
5131
|
-
url: `/attachments/
|
|
5132
|
-
blockers: [
|
|
5133
|
-
blocks: [
|
|
5194
|
+
url: `/attachments/documents/${documentAttachmentId}/`,
|
|
5195
|
+
blockers: [documentAttachmentId],
|
|
5196
|
+
blocks: [documentAttachmentId]
|
|
5134
5197
|
});
|
|
5135
5198
|
}
|
|
5136
5199
|
}
|
|
@@ -6367,11 +6430,18 @@ class MainService extends BaseApiService {
|
|
|
6367
6430
|
if (currentProjectId) {
|
|
6368
6431
|
const [_offlineAttachments, promise] = this.client.attachments.fetchAll(currentProjectId);
|
|
6369
6432
|
void promise.then((result) => {
|
|
6370
|
-
const {
|
|
6433
|
+
const {
|
|
6434
|
+
issue_attachments,
|
|
6435
|
+
component_type_attachments,
|
|
6436
|
+
component_attachments,
|
|
6437
|
+
project_attachments,
|
|
6438
|
+
document_attachments
|
|
6439
|
+
} = result;
|
|
6371
6440
|
store.dispatch(setIssueAttachments(issue_attachments));
|
|
6372
6441
|
store.dispatch(setComponentAttachments(component_attachments));
|
|
6373
6442
|
store.dispatch(setComponentTypeAttachments(component_type_attachments));
|
|
6374
6443
|
store.dispatch(setProjectAttachments(project_attachments));
|
|
6444
|
+
store.dispatch(setDocumentAttachments(document_attachments));
|
|
6375
6445
|
});
|
|
6376
6446
|
void this.client.documents.refreshStore();
|
|
6377
6447
|
void this.client.issueUpdates.refreshStore();
|
|
@@ -6770,7 +6840,8 @@ class UserFormService extends BaseApiService {
|
|
|
6770
6840
|
...payloadWithoutImage,
|
|
6771
6841
|
created_by: currentUser.id,
|
|
6772
6842
|
form: retForm.offline_id,
|
|
6773
|
-
revision: 0
|
|
6843
|
+
revision: 0,
|
|
6844
|
+
submitted_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
6774
6845
|
};
|
|
6775
6846
|
const { store } = this.client;
|
|
6776
6847
|
store.dispatch(addUserForm(retForm));
|
|
@@ -6833,7 +6904,8 @@ class UserFormService extends BaseApiService {
|
|
|
6833
6904
|
...payloadWithoutImage,
|
|
6834
6905
|
created_by: currentUserId,
|
|
6835
6906
|
revision: "Pending",
|
|
6836
|
-
form: formId2
|
|
6907
|
+
form: formId2,
|
|
6908
|
+
submitted_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
6837
6909
|
};
|
|
6838
6910
|
store.dispatch(addUserFormRevision(fullRevision));
|
|
6839
6911
|
const promise = this.enqueueRequest({
|
|
@@ -15631,6 +15703,8 @@ export {
|
|
|
15631
15703
|
addComponentTypeAttachment,
|
|
15632
15704
|
addComponentTypeAttachments,
|
|
15633
15705
|
addComponentsInBatches,
|
|
15706
|
+
addDocumentAttachment,
|
|
15707
|
+
addDocumentAttachments,
|
|
15634
15708
|
addDocuments,
|
|
15635
15709
|
addEmailDomain,
|
|
15636
15710
|
addFavouriteProjectId,
|
|
@@ -15794,6 +15868,8 @@ export {
|
|
|
15794
15868
|
removeComponentAttachments,
|
|
15795
15869
|
removeComponentTypeAttachment,
|
|
15796
15870
|
removeComponentTypeAttachments,
|
|
15871
|
+
removeDocumentAttachment,
|
|
15872
|
+
removeDocumentAttachments,
|
|
15797
15873
|
removeDocuments,
|
|
15798
15874
|
removeEmailDomain,
|
|
15799
15875
|
removeFavouriteProjectId,
|
|
@@ -15841,6 +15917,7 @@ export {
|
|
|
15841
15917
|
selectAllAttachments,
|
|
15842
15918
|
selectAllComponentAttachments,
|
|
15843
15919
|
selectAllComponentTypeAttachments,
|
|
15920
|
+
selectAllDocumentAttachments,
|
|
15844
15921
|
selectAllProjectAttachments,
|
|
15845
15922
|
selectAncestorIdsOfDocument,
|
|
15846
15923
|
selectAppearance,
|
|
@@ -15848,6 +15925,8 @@ export {
|
|
|
15848
15925
|
selectAttachmentsOfComponentByType,
|
|
15849
15926
|
selectAttachmentsOfComponentType,
|
|
15850
15927
|
selectAttachmentsOfComponentTypeByType,
|
|
15928
|
+
selectAttachmentsOfDocument,
|
|
15929
|
+
selectAttachmentsOfDocumentByType,
|
|
15851
15930
|
selectAttachmentsOfIssue,
|
|
15852
15931
|
selectAttachmentsOfIssueByType,
|
|
15853
15932
|
selectAttachmentsOfProject,
|
|
@@ -15863,9 +15942,11 @@ export {
|
|
|
15863
15942
|
selectCompletedStageIdsForComponent,
|
|
15864
15943
|
selectCompletedStages,
|
|
15865
15944
|
selectComponent,
|
|
15945
|
+
selectComponentAttachment,
|
|
15866
15946
|
selectComponentAttachmentMapping,
|
|
15867
15947
|
selectComponentSubmissionMapping,
|
|
15868
15948
|
selectComponentType,
|
|
15949
|
+
selectComponentTypeAttachment,
|
|
15869
15950
|
selectComponentTypeAttachmentMapping,
|
|
15870
15951
|
selectComponentTypeForm,
|
|
15871
15952
|
selectComponentTypeFromComponent,
|
|
@@ -15883,6 +15964,8 @@ export {
|
|
|
15883
15964
|
selectCurrentUser,
|
|
15884
15965
|
selectDeletedRequests,
|
|
15885
15966
|
selectDocument,
|
|
15967
|
+
selectDocumentAttachment,
|
|
15968
|
+
selectDocumentAttachmentMapping,
|
|
15886
15969
|
selectDocuments,
|
|
15887
15970
|
selectDocumentsMapping,
|
|
15888
15971
|
selectEmailDomainsAsMapping,
|
|
@@ -15904,6 +15987,7 @@ export {
|
|
|
15904
15987
|
selectIsLoading,
|
|
15905
15988
|
selectIsLoggedIn,
|
|
15906
15989
|
selectIssue,
|
|
15990
|
+
selectIssueAttachment,
|
|
15907
15991
|
selectIssueAttachmentMapping,
|
|
15908
15992
|
selectIssueAttachments,
|
|
15909
15993
|
selectIssueMapping,
|
|
@@ -15997,6 +16081,7 @@ export {
|
|
|
15997
16081
|
setComponents,
|
|
15998
16082
|
setCreateProjectType,
|
|
15999
16083
|
setCurrentUser,
|
|
16084
|
+
setDocumentAttachments,
|
|
16000
16085
|
setDocuments,
|
|
16001
16086
|
setEmailDomains,
|
|
16002
16087
|
setEnableClustering,
|
|
@@ -16051,6 +16136,7 @@ export {
|
|
|
16051
16136
|
updateComponent,
|
|
16052
16137
|
updateComponentAttachment,
|
|
16053
16138
|
updateComponentTypeAttachment,
|
|
16139
|
+
updateDocumentAttachment,
|
|
16054
16140
|
updateDocuments,
|
|
16055
16141
|
updateIssue,
|
|
16056
16142
|
updateIssueAttachment,
|