@overmap-ai/core 1.0.71-fields.12 → 1.0.71-fields.2

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.
@@ -2104,6 +2104,17 @@ const selectFormRevisionsOfForm = restructureCreateSelectorWithArgs(
2104
2104
  }
2105
2105
  )
2106
2106
  );
2107
+ const selectLatestFormRevisionByForm = createSelector([selectFormRevisionMapping], (revisions) => {
2108
+ const latestRevisions = {};
2109
+ for (const revision of Object.values(revisions)) {
2110
+ const formId = revision.form;
2111
+ const currentLatestRevision = latestRevisions[formId];
2112
+ if (!currentLatestRevision || currentLatestRevision.revision < revision.revision) {
2113
+ latestRevisions[formId] = revision;
2114
+ }
2115
+ }
2116
+ return latestRevisions;
2117
+ });
2107
2118
  const formRevisionReducer = formRevisionsSlice.reducer;
2108
2119
  const formAdapter = createModelAdapter((form) => form.offline_id);
2109
2120
  const initialState$n = formAdapter.getInitialState({});
@@ -2128,9 +2139,6 @@ const selectFormMapping = (state) => {
2128
2139
  const selectForms = createSelector([selectFormMapping], (formsMapping) => {
2129
2140
  return Object.values(formsMapping);
2130
2141
  });
2131
- const selectFormById = (formId) => (state) => {
2132
- return state.formReducer.instances[formId];
2133
- };
2134
2142
  const selectFilteredForms = restructureCreateSelectorWithArgs(
2135
2143
  createSelector(
2136
2144
  [
@@ -2156,6 +2164,15 @@ const selectFilteredForms = restructureCreateSelectorWithArgs(
2156
2164
  { memoizeOptions: { equalityCheck: shallowEqual } }
2157
2165
  )
2158
2166
  );
2167
+ const selectFormById = (formId) => (state) => {
2168
+ return state.formReducer.instances[formId];
2169
+ };
2170
+ const selectFormsCount = createSelector([selectFormMapping], (formsMapping) => {
2171
+ return Object.keys(formsMapping).length;
2172
+ });
2173
+ const selectGeneralFormCount = createSelector([selectFormMapping], (formsMapping) => {
2174
+ return Object.values(formsMapping).length;
2175
+ });
2159
2176
  const submissionAdapter = createModelAdapter((submission) => submission.offline_id);
2160
2177
  const initialState$m = submissionAdapter.getInitialState({});
2161
2178
  const formSubmissionSlice = createSlice({
@@ -2217,6 +2234,43 @@ const selectFormSubmissionsOfForm = restructureCreateSelectorWithArgs(
2217
2234
  }
2218
2235
  )
2219
2236
  );
2237
+ const selectFormSubmissionsByFormRevisions = createSelector([selectFormRevisionMapping, selectFormSubmissions], (revisions, submissions) => {
2238
+ var _a2;
2239
+ const submissionMapping = {};
2240
+ for (const revisionId in revisions) {
2241
+ submissionMapping[revisionId] = [];
2242
+ }
2243
+ for (const submission of submissions) {
2244
+ (_a2 = submissionMapping[submission.form_revision]) == null ? void 0 : _a2.push(submission);
2245
+ }
2246
+ return submissionMapping;
2247
+ });
2248
+ const selectSortedFormSubmissionsOfForm = restructureCreateSelectorWithArgs(
2249
+ createSelector(
2250
+ [
2251
+ selectFormRevisionMapping,
2252
+ selectFormSubmissionsByFormRevisions,
2253
+ (_state, formId) => formId
2254
+ ],
2255
+ (revisionsMapping, submissionsByRevision, formId) => {
2256
+ const submissionsByFormRevisions = {};
2257
+ for (const revisionId in revisionsMapping) {
2258
+ const revision = revisionsMapping[revisionId];
2259
+ const submissionsOfRevision = submissionsByRevision[revisionId];
2260
+ if (revision && submissionsOfRevision && revision.form === formId) {
2261
+ submissionsByFormRevisions[revisionId] = submissionsOfRevision.sort(
2262
+ (a, b) => a.submitted_at < b.submitted_at ? -1 : 1
2263
+ );
2264
+ }
2265
+ }
2266
+ return Object.entries(submissionsByFormRevisions).sort((a, b) => {
2267
+ const aRevision = revisionsMapping[a[0]];
2268
+ const bRevision = revisionsMapping[b[0]];
2269
+ return formRevisionSortFn(aRevision, bRevision);
2270
+ }).map(([_revisionId, submissions]) => submissions).flat();
2271
+ }
2272
+ )
2273
+ );
2220
2274
  const selectFormSubmissionsOfIssue = restructureCreateSelectorWithArgs(
2221
2275
  createSelector(
2222
2276
  [selectFormSubmissions, (_state, issueId) => issueId],
@@ -2984,56 +3038,12 @@ const selectIssueAssociationsOfAsset = restructureCreateSelectorWithArgs(
2984
3038
  )
2985
3039
  );
2986
3040
  const issueAssociationReducer = issueAssociationSlice.reducer;
2987
- const issueTypeFieldValuesAdapter = createModelAdapter(
2988
- (fieldValues) => fieldValues.offline_id
2989
- );
2990
- const initialState$7 = issueTypeFieldValuesAdapter.getInitialState({});
2991
- const issueTypeFieldValuesSlice = createSlice({
2992
- name: "issueTypeFieldValues",
2993
- initialState: initialState$7,
2994
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$7)),
2995
- reducers: {
2996
- initializeIssueTypeFieldValues: issueTypeFieldValuesAdapter.initialize,
2997
- addIssueTypeFieldValues: issueTypeFieldValuesAdapter.addOne,
2998
- addIssueTypeFieldValuesMany: issueTypeFieldValuesAdapter.addMany,
2999
- setIssueTypeFieldValues: issueTypeFieldValuesAdapter.setOne,
3000
- setIssueTypeFieldValuesMany: issueTypeFieldValuesAdapter.setMany,
3001
- updateIssueTypeFieldValues: issueTypeFieldValuesAdapter.updateOne,
3002
- updateIssueTypeFieldValuesMany: issueTypeFieldValuesAdapter.updateMany,
3003
- deleteIssueTypeFieldValues: issueTypeFieldValuesAdapter.deleteOne,
3004
- deleteIssueTypeFieldValuesMany: issueTypeFieldValuesAdapter.deleteMany
3005
- }
3006
- });
3007
- const {
3008
- initializeIssueTypeFieldValues,
3009
- addIssueTypeFieldValues,
3010
- addIssueTypeFieldValuesMany,
3011
- setIssueTypeFieldValues,
3012
- setIssueTypeFieldValuesMany,
3013
- updateIssueTypeFieldValues,
3014
- updateIssueTypeFieldValuesMany,
3015
- deleteIssueTypeFieldValues,
3016
- deleteIssueTypeFieldValuesMany
3017
- } = issueTypeFieldValuesSlice.actions;
3018
- const selectIssueTypeFieldValuesMapping = (state) => state.issueTypeFieldValuesReducer.instances;
3019
- const selectIssueTypeFieldValues = createSelector([selectIssueTypeFieldValuesMapping], (fieldValuesMapping) => {
3020
- return Object.values(fieldValuesMapping);
3021
- });
3022
- const selectIssueTypeFieldValuesOfIssue = restructureCreateSelectorWithArgs(
3023
- createSelector([selectIssueTypeFieldValues, (_state, issueId) => issueId], (fieldValues, issueId) => {
3024
- return fallbackToEmptyArray(fieldValues.filter((fieldValue) => fieldValue.issue === issueId));
3025
- })
3026
- );
3027
- const selectIssueTypeFieldValuesById = (fieldValuesId) => (state) => {
3028
- return state.issueTypeFieldValuesReducer.instances[fieldValuesId];
3029
- };
3030
- const issueTypeFieldValuesReducer = issueTypeFieldValuesSlice.reducer;
3031
3041
  const issueTypeFieldsAdapter = createModelAdapter((fields) => fields.offline_id);
3032
- const initialState$6 = issueTypeFieldsAdapter.getInitialState({});
3042
+ const initialState$7 = issueTypeFieldsAdapter.getInitialState({});
3033
3043
  const issueTypeFieldsSlice = createSlice({
3034
3044
  name: "issueTypeFields",
3035
- initialState: initialState$6,
3036
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$6)),
3045
+ initialState: initialState$7,
3046
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$7)),
3037
3047
  reducers: {
3038
3048
  initializeIssueTypeFields: issueTypeFieldsAdapter.initialize,
3039
3049
  addIssueTypeFields: issueTypeFieldsAdapter.addOne,
@@ -3066,26 +3076,59 @@ const selectIssueTypeFieldsOfIssueType = restructureCreateSelectorWithArgs(
3066
3076
  return fallbackToEmptyArray(fields.filter((field) => field.issue_type === issueTypeId));
3067
3077
  })
3068
3078
  );
3069
- const selectLatestIssueTypeFieldsOfIssueType = restructureCreateSelectorWithArgs(
3079
+ const selectLatestIssueTypeFieldsOfAssetType = restructureCreateSelectorWithArgs(
3070
3080
  createSelector([selectIssueTypeFields, (_state, id) => id], (fields, id) => {
3071
- return fields.filter((field) => field.issue_type === id).sort((a, b) => a.submitted_at > b.submitted_at ? -1 : 1)[0];
3081
+ return fields.filter((field) => field.issue_type === id).sort((a, b) => a.submitted_at < b.submitted_at ? -1 : 1)[0];
3072
3082
  })
3073
3083
  );
3074
- const selectIssueTypeValuesOfIssueType = restructureCreateSelectorWithArgs(
3075
- createSelector(
3076
- [selectIssueTypeFields, selectIssueTypeFieldValues, (_state, id) => id],
3077
- (fields, fieldValues, id) => {
3078
- const fieldsIds = new Set(
3079
- fields.filter((field) => field.issue_type === id).map((field) => field.offline_id)
3080
- );
3081
- return fallbackToEmptyArray(fieldValues.filter((values) => fieldsIds.has(values.fields_revision)));
3082
- }
3083
- )
3084
- );
3085
3084
  const selectIssueTypeFieldsById = (fieldsId) => (state) => {
3086
3085
  return state.issueTypeFieldsReducer.instances[fieldsId];
3087
3086
  };
3088
3087
  const issueTypeFieldsReducer = issueTypeFieldsSlice.reducer;
3088
+ const issueTypeFieldValuesAdapter = createModelAdapter(
3089
+ (fieldValues) => fieldValues.offline_id
3090
+ );
3091
+ const initialState$6 = issueTypeFieldValuesAdapter.getInitialState({});
3092
+ const issueTypeFieldValuesSlice = createSlice({
3093
+ name: "issueTypeFieldValues",
3094
+ initialState: initialState$6,
3095
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$6)),
3096
+ reducers: {
3097
+ initializeIssueTypeFieldValues: issueTypeFieldValuesAdapter.initialize,
3098
+ addIssueTypeFieldValues: issueTypeFieldValuesAdapter.addOne,
3099
+ addIssueTypeFieldValuesMany: issueTypeFieldValuesAdapter.addMany,
3100
+ setIssueTypeFieldValues: issueTypeFieldValuesAdapter.setOne,
3101
+ setIssueTypeFieldValuesMany: issueTypeFieldValuesAdapter.setMany,
3102
+ updateIssueTypeFieldValues: issueTypeFieldValuesAdapter.updateOne,
3103
+ updateIssueTypeFieldValuesMany: issueTypeFieldValuesAdapter.updateMany,
3104
+ deleteIssueTypeFieldValues: issueTypeFieldValuesAdapter.deleteOne,
3105
+ deleteIssueTypeFieldValuesMany: issueTypeFieldValuesAdapter.deleteMany
3106
+ }
3107
+ });
3108
+ const {
3109
+ initializeIssueTypeFieldValues,
3110
+ addIssueTypeFieldValues,
3111
+ addIssueTypeFieldValuesMany,
3112
+ setIssueTypeFieldValues,
3113
+ setIssueTypeFieldValuesMany,
3114
+ updateIssueTypeFieldValues,
3115
+ updateIssueTypeFieldValuesMany,
3116
+ deleteIssueTypeFieldValues,
3117
+ deleteIssueTypeFieldValuesMany
3118
+ } = issueTypeFieldValuesSlice.actions;
3119
+ const selectIssueTypeFieldValuesMapping = (state) => state.issueTypeFieldValuesReducer.instances;
3120
+ const selectIssueTypeFieldValues = createSelector([selectIssueTypeFieldValuesMapping], (fieldValuesMapping) => {
3121
+ return Object.values(fieldValuesMapping);
3122
+ });
3123
+ const selectIssueTypeFieldValuesOfIssue = restructureCreateSelectorWithArgs(
3124
+ createSelector([selectIssueTypeFieldValues, (_state, issueId) => issueId], (fieldValues, issueId) => {
3125
+ return fallbackToEmptyArray(fieldValues.filter((fieldValue) => fieldValue.issue === issueId));
3126
+ })
3127
+ );
3128
+ const selectIssueTypeFieldValuesById = (fieldValuesId) => (state) => {
3129
+ return state.issueTypeFieldValuesReducer.instances[fieldValuesId];
3130
+ };
3131
+ const issueTypeFieldValuesReducer = issueTypeFieldValuesSlice.reducer;
3089
3132
  const issueTypeFieldsAttachmentAdapter = createModelAdapter(
3090
3133
  (attachment) => attachment.offline_id
3091
3134
  );
@@ -3228,7 +3271,7 @@ const selectAssetTypeFieldsOfAssetType = restructureCreateSelectorWithArgs(
3228
3271
  );
3229
3272
  const selectLatestAssetTypeFieldsOfAssetType = restructureCreateSelectorWithArgs(
3230
3273
  createSelector([selectAssetTypeFields, (_state, id) => id], (fields, id) => {
3231
- return fields.filter((field) => field.asset_type === id).sort((a, b) => a.submitted_at > b.submitted_at ? -1 : 1)[0];
3274
+ return fields.filter((field) => field.asset_type === id).sort((a, b) => a.submitted_at < b.submitted_at ? -1 : 1)[0];
3232
3275
  })
3233
3276
  );
3234
3277
  const selectAssetTypeFieldsById = (fieldsId) => (state) => {
@@ -3275,17 +3318,6 @@ const selectAssetTypeFieldValuesOfAsset = restructureCreateSelectorWithArgs(
3275
3318
  return fallbackToEmptyArray(fieldValues.filter((fieldValue) => fieldValue.asset === assetId));
3276
3319
  })
3277
3320
  );
3278
- const selectAssetTypeValuesOfAssetType = restructureCreateSelectorWithArgs(
3279
- createSelector(
3280
- [selectAssetTypeFields, selectAssetTypeFieldValues, (_state, id) => id],
3281
- (fields, fieldValues, id) => {
3282
- const fieldsIds = new Set(
3283
- fields.filter((field) => field.asset_type === id).map((field) => field.offline_id)
3284
- );
3285
- return fallbackToEmptyArray(fieldValues.filter((values) => fieldsIds.has(values.fields_revision)));
3286
- }
3287
- )
3288
- );
3289
3321
  const selectAssetTypeFieldValuesById = (fieldValuesId) => (state) => {
3290
3322
  return state.assetTypeFieldValuesReducer.instances[fieldValuesId];
3291
3323
  };
@@ -5277,7 +5309,15 @@ class IssueTypeService extends BaseApiService {
5277
5309
  const promise = this.enqueueRequest({
5278
5310
  method: HttpMethod.POST,
5279
5311
  url: "/issue-types/",
5280
- payload: offlineIssueType,
5312
+ // Sending only whats needed here
5313
+ payload: {
5314
+ offline_id: offlineIssueType.offline_id,
5315
+ submitted_at: offlineIssueType.submitted_at,
5316
+ icon: offlineIssueType.icon,
5317
+ color: offlineIssueType.color,
5318
+ name: offlineIssueType.name,
5319
+ description: offlineIssueType.description
5320
+ },
5281
5321
  blockers: [],
5282
5322
  blocks: [offlineIssueType.offline_id]
5283
5323
  });
@@ -5697,7 +5737,9 @@ class FormService extends BaseUploadService {
5697
5737
  method: HttpMethod.POST,
5698
5738
  url: "/forms/",
5699
5739
  payload: {
5700
- ...offlineForm,
5740
+ // Sending exactly what is currently needed for the endpoint
5741
+ offline_id: offlineForm.offline_id,
5742
+ submitted_at: offlineForm.submitted_at,
5701
5743
  initial_revision: {
5702
5744
  offline_id: offlineFormRevision.offline_id,
5703
5745
  submitted_at: offlineFormRevision.submitted_at,
@@ -5706,7 +5748,10 @@ class FormService extends BaseUploadService {
5706
5748
  fields: offlineFormRevision.fields
5707
5749
  }
5708
5750
  },
5709
- blockers: [],
5751
+ blockers: [
5752
+ ...payload.project ? [payload.project.toString()] : [],
5753
+ ...payload.organization ? [payload.organization.toString()] : []
5754
+ ],
5710
5755
  blocks: [offlineForm.offline_id, offlineFormRevision.offline_id]
5711
5756
  });
5712
5757
  void formPromise.catch((e) => {
@@ -6660,8 +6705,7 @@ class DocumentAttachmentService extends BaseAttachmentService {
6660
6705
  file_name: offlineAttachment.file_name,
6661
6706
  file_sha1: offlineAttachment.file_sha1,
6662
6707
  file_extension: filePayload.extension,
6663
- description: offlineAttachment.description,
6664
- document: documentId
6708
+ description: offlineAttachment.description
6665
6709
  });
6666
6710
  sha1ToAttachmentIds[filePayload.sha1].push(offlineAttachment.offline_id);
6667
6711
  }
@@ -7560,39 +7604,24 @@ class AssetTypeFieldValuesService extends BaseApiService {
7560
7604
  return [offlineAssetTypeFieldValues, promise];
7561
7605
  }
7562
7606
  bulkAdd(payload, batchSize) {
7563
- var _a2;
7564
7607
  const submittedAt = (/* @__PURE__ */ new Date()).toISOString();
7565
7608
  const { values } = separateFilesFromValues(payload.values);
7566
- const offlineAssetTypeFieldValuesMany = [];
7567
- const batches = chunkArray(payload.payloads, batchSize ?? payload.payloads.length);
7568
- const batchPayloads = [];
7569
- for (const batch of batches) {
7570
- const assetTypeFieldValuesPayloads = [];
7571
- for (const payload2 of batch) {
7572
- const offlineAssetTypeFieldValues = offline({
7573
- ...payload2,
7574
- values: separateFilesFromValues(payload2.values).values,
7575
- created_by: (_a2 = this.client.store.getState().userReducer.currentUser) == null ? void 0 : _a2.id,
7576
- submitted_at: submittedAt
7577
- });
7578
- offlineAssetTypeFieldValuesMany.push(offlineAssetTypeFieldValues);
7579
- assetTypeFieldValuesPayloads.push({
7580
- offline_id: offlineAssetTypeFieldValues.offline_id,
7581
- asset: payload2.asset,
7582
- fields_revision: payload2.fields_revision,
7583
- published_at: payload2.published_at,
7584
- values: offlineAssetTypeFieldValues.values
7585
- });
7586
- }
7587
- batchPayloads.push({
7609
+ const payloadsBatches = chunkArray(payload.payloads, batchSize);
7610
+ const bulkAddPayloads = payloadsBatches.map((batch) => {
7611
+ return {
7588
7612
  submitted_at: submittedAt,
7589
7613
  values,
7590
- field_values: assetTypeFieldValuesPayloads
7591
- });
7592
- }
7593
- this.dispatch(addAssetTypeFieldValuesMany(offlineAssetTypeFieldValuesMany));
7614
+ field_values: batch.map((payload2) => {
7615
+ const { values: values2 } = separateFilesFromValues(payload2.values);
7616
+ return offline({
7617
+ ...payload2,
7618
+ values: values2
7619
+ });
7620
+ })
7621
+ };
7622
+ });
7594
7623
  const promises = [];
7595
- for (const payload2 of batchPayloads) {
7624
+ for (const payload2 of bulkAddPayloads) {
7596
7625
  const assetIds = payload2.field_values.map((x) => x.asset);
7597
7626
  const assetTypeFieldsIds = payload2.field_values.map((x) => x.fields_revision);
7598
7627
  const assetTypeFieldValuesIds = payload2.field_values.map((x) => x.offline_id);
@@ -7607,11 +7636,9 @@ class AssetTypeFieldValuesService extends BaseApiService {
7607
7636
  promises.push(promise);
7608
7637
  }
7609
7638
  void Promise.all(promises).then((results) => {
7610
- this.dispatch(updateAssetTypeFieldValuesMany(results.flat()));
7611
- }).catch(() => {
7612
- this.dispatch(deleteAssetTypeFieldValuesMany(offlineAssetTypeFieldValuesMany.map((x) => x.offline_id)));
7639
+ this.dispatch(addAssetTypeFieldValuesMany(results.flat()));
7613
7640
  });
7614
- return [offlineAssetTypeFieldValuesMany, promises];
7641
+ return promises;
7615
7642
  }
7616
7643
  update(payload) {
7617
7644
  const { store } = this.client;
@@ -7635,13 +7662,7 @@ class AssetTypeFieldValuesService extends BaseApiService {
7635
7662
  description: "Delete asset type field values",
7636
7663
  method: HttpMethod.PATCH,
7637
7664
  url: `/asset-type-field-values/${payload.offline_id}/`,
7638
- payload: {
7639
- ...payload,
7640
- values: {
7641
- ...assetTypeFieldValues.values,
7642
- ...values
7643
- }
7644
- },
7665
+ payload,
7645
7666
  blockers: [
7646
7667
  updatedAssetTypeFieldValues.offline_id,
7647
7668
  updatedAssetTypeFieldValues.fields_revision,
@@ -7695,63 +7716,54 @@ class AssetTypeFieldValuesService extends BaseApiService {
7695
7716
  }
7696
7717
  }
7697
7718
  class AssetTypeFieldValuesAttachmentService extends BaseUploadService {
7698
- async bulkAdd(payloads, batchSize) {
7719
+ async bulkAdd(payloads) {
7699
7720
  var _a2;
7700
7721
  const submittedAt = (/* @__PURE__ */ new Date()).toISOString();
7701
7722
  const createdBy = (_a2 = this.client.store.getState().userReducer.currentUser) == null ? void 0 : _a2.id;
7702
- const batches = chunkArray(payloads, batchSize ?? payloads.length);
7723
+ const filePayloads = {};
7703
7724
  const offlineAssetTypeFieldValuesAttachments = [];
7704
- const batchPayloads = [];
7705
- for (const batch of batches) {
7706
- const filePayloads = {};
7707
- const attachmentPayloads = [];
7708
- for (const payload of batch) {
7709
- const { fieldValuesId, fieldIdentifier, file } = payload;
7710
- const filePayload = await this.getFilePayload(file);
7711
- if (!(filePayload.sha1 in filePayloads))
7712
- filePayloads[filePayload.sha1] = filePayload;
7713
- const offlineAssetTypeFieldValuesAttachment = offline({
7714
- file: URL.createObjectURL(file),
7715
- file_type: file.type,
7716
- file_name: file.name,
7717
- file_sha1: filePayload.sha1,
7718
- created_by: createdBy,
7719
- field_values: fieldValuesId,
7720
- submitted_at: submittedAt,
7721
- field_identifier: fieldIdentifier
7722
- });
7723
- offlineAssetTypeFieldValuesAttachments.push(offlineAssetTypeFieldValuesAttachment);
7724
- const attachmentPayload = {
7725
- offline_id: offlineAssetTypeFieldValuesAttachment.offline_id,
7726
- file_name: file.name,
7727
- file_sha1: filePayload.sha1,
7728
- file_extension: filePayload.extension,
7729
- field_identifier: fieldIdentifier,
7730
- field_values: fieldValuesId
7731
- };
7732
- attachmentPayloads.push(attachmentPayload);
7733
- }
7734
- batchPayloads.push({
7725
+ const attachmentPayloads = [];
7726
+ for (const payload of payloads) {
7727
+ const { fieldValuesId, fieldIdentifier, file } = payload;
7728
+ const filePayload = await this.getFilePayload(file);
7729
+ if (!(filePayload.sha1 in filePayloads))
7730
+ filePayloads[filePayload.sha1] = filePayload;
7731
+ const offlineAssetTypeFieldValuesAttachment = offline({
7732
+ file: URL.createObjectURL(file),
7733
+ file_type: file.type,
7734
+ file_name: file.name,
7735
+ file_sha1: filePayload.sha1,
7736
+ created_by: createdBy,
7737
+ field_values: fieldValuesId,
7735
7738
  submitted_at: submittedAt,
7736
- attachments: attachmentPayloads,
7737
- files: Object.values(filePayloads)
7739
+ field_identifier: fieldIdentifier
7738
7740
  });
7741
+ offlineAssetTypeFieldValuesAttachments.push(offlineAssetTypeFieldValuesAttachment);
7742
+ const attachmentPayload = {
7743
+ offline_id: offlineAssetTypeFieldValuesAttachment.offline_id,
7744
+ file_name: file.name,
7745
+ file_sha1: filePayload.sha1,
7746
+ file_extension: filePayload.extension,
7747
+ field_identifier: fieldIdentifier,
7748
+ field_values: fieldValuesId
7749
+ };
7750
+ attachmentPayloads.push(attachmentPayload);
7739
7751
  }
7740
7752
  this.dispatch(addAssetTypeFieldValuesAttachments(offlineAssetTypeFieldValuesAttachments));
7741
- const promises = batchPayloads.map((payload) => {
7742
- return this.enqueueRequest({
7743
- description: "Add asset type field values attachments",
7744
- method: HttpMethod.POST,
7745
- url: "/asset-type-field-values-attachments/bulk/",
7746
- payload,
7747
- blockers: payload.attachments.map((payload2) => payload2.field_values),
7748
- blocks: payload.attachments.map((payload2) => payload2.offline_id)
7749
- });
7753
+ const promise = this.enqueueRequest({
7754
+ description: "Add asset type field values attachments",
7755
+ method: HttpMethod.POST,
7756
+ url: "/asset-type-field-values-attachments/bulk/",
7757
+ payload: {
7758
+ submitted_at: submittedAt,
7759
+ attachments: attachmentPayloads,
7760
+ files: Object.values(filePayloads)
7761
+ },
7762
+ blockers: offlineAssetTypeFieldValuesAttachments.map((attachment) => attachment.field_values),
7763
+ blocks: offlineAssetTypeFieldValuesAttachments.map((attachment) => attachment.offline_id)
7750
7764
  });
7751
- Promise.all(promises).then((result) => {
7752
- for (const res of result)
7753
- this.processPresignedUrls(res.presigned_urls);
7754
- const attachments = result.flatMap((res) => res.attachments);
7765
+ promise.then(({ presigned_urls, attachments }) => {
7766
+ this.processPresignedUrls(presigned_urls);
7755
7767
  this.dispatch(updateAssetTypeFieldValuesAttachments(attachments));
7756
7768
  }).catch((error) => {
7757
7769
  this.dispatch(
@@ -7761,10 +7773,7 @@ class AssetTypeFieldValuesAttachmentService extends BaseUploadService {
7761
7773
  );
7762
7774
  throw error;
7763
7775
  });
7764
- return [
7765
- offlineAssetTypeFieldValuesAttachments,
7766
- promises.map((promise) => promise.then(({ attachments }) => attachments))
7767
- ];
7776
+ return [offlineAssetTypeFieldValuesAttachments, promise.then(({ attachments }) => attachments)];
7768
7777
  }
7769
7778
  async bulkDelete(ids) {
7770
7779
  const { store } = this.client;
@@ -7787,7 +7796,7 @@ class AssetTypeFieldValuesAttachmentService extends BaseUploadService {
7787
7796
  }
7788
7797
  async refreshStore(projectId) {
7789
7798
  const result = await this.enqueueRequest({
7790
- description: "Get asset type field values attachments",
7799
+ description: "Gfet asset type field values attachments",
7791
7800
  method: HttpMethod.GET,
7792
7801
  url: "/asset-type-field-values-attachments/",
7793
7802
  queryParams: {
@@ -8058,13 +8067,7 @@ class IssueTypeFieldValuesService extends BaseApiService {
8058
8067
  description: "Update issue type field values",
8059
8068
  method: HttpMethod.PATCH,
8060
8069
  url: `/issue-type-field-values/${payload.offline_id}/`,
8061
- payload: {
8062
- ...payload,
8063
- values: {
8064
- ...issueTypeFieldValues.values,
8065
- ...values
8066
- }
8067
- },
8070
+ payload,
8068
8071
  blockers: [
8069
8072
  updatedIssueTypeFieldValues.offline_id,
8070
8073
  updatedIssueTypeFieldValues.fields_revision,
@@ -8546,7 +8549,6 @@ export {
8546
8549
  selectAssetTypeFieldsMapping,
8547
8550
  selectAssetTypeFieldsOfAssetType,
8548
8551
  selectAssetTypeStagesMapping,
8549
- selectAssetTypeValuesOfAssetType,
8550
8552
  selectAssetTypes,
8551
8553
  selectAssetTypesByIds,
8552
8554
  selectAssetTypesMapping,
@@ -8604,11 +8606,14 @@ export {
8604
8606
  selectFormSubmissionAttachmentsMapping,
8605
8607
  selectFormSubmissionById,
8606
8608
  selectFormSubmissions,
8609
+ selectFormSubmissionsByFormRevisions,
8607
8610
  selectFormSubmissionsMapping,
8608
8611
  selectFormSubmissionsOfAsset,
8609
8612
  selectFormSubmissionsOfForm,
8610
8613
  selectFormSubmissionsOfIssue,
8611
8614
  selectForms,
8615
+ selectFormsCount,
8616
+ selectGeneralFormCount,
8612
8617
  selectGeoImageById,
8613
8618
  selectGeoImageMapping,
8614
8619
  selectGeoImages,
@@ -8645,7 +8650,6 @@ export {
8645
8650
  selectIssueTypeFieldsMapping,
8646
8651
  selectIssueTypeFieldsOfIssueType,
8647
8652
  selectIssueTypeMapping,
8648
- selectIssueTypeValuesOfIssueType,
8649
8653
  selectIssueTypes,
8650
8654
  selectIssueTypesByIds,
8651
8655
  selectIssueTypesOfOrganization,
@@ -8655,8 +8659,9 @@ export {
8655
8659
  selectIssuesOfIssueType,
8656
8660
  selectIssuesOfIssueTypeCount,
8657
8661
  selectLatestAssetTypeFieldsOfAssetType,
8662
+ selectLatestFormRevisionByForm,
8658
8663
  selectLatestFormRevisionOfForm,
8659
- selectLatestIssueTypeFieldsOfIssueType,
8664
+ selectLatestIssueTypeFieldsOfAssetType,
8660
8665
  selectLatestRetryTime,
8661
8666
  selectLicense,
8662
8667
  selectLicenseForProject,
@@ -8693,6 +8698,7 @@ export {
8693
8698
  selectProjectsOfOrganization,
8694
8699
  selectRehydrated,
8695
8700
  selectRootDocuments,
8701
+ selectSortedFormSubmissionsOfForm,
8696
8702
  selectSortedOrganizationUsers,
8697
8703
  selectSortedProjectUsers,
8698
8704
  selectStageFormIdsFromStageIds,