@overmap-ai/core 1.0.71-fields.13 → 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
  );
@@ -3176,20 +3219,6 @@ const selectIssueTypeFieldValuesAttachments = createSelector(
3176
3219
  return Object.values(attachmentsMapping);
3177
3220
  }
3178
3221
  );
3179
- const selectIssueTypeFieldValuesAttachmentById = (attachmentId) => (state) => {
3180
- return state.issueTypeFieldValuesAttachmentReducer.instances[attachmentId];
3181
- };
3182
- const selectIssueTypeFieldValuesAttachmentsByIds = restructureCreateSelectorWithArgs(
3183
- createSelector(
3184
- [selectIssueTypeFieldValuesAttachmentsMapping, (_, attachmentIds) => attachmentIds],
3185
- (mapping, attachmentIds) => {
3186
- const attachmentIdsSet = new Set(attachmentIds);
3187
- return fallbackToEmptyArray(
3188
- Object.values(mapping).filter((attachment) => attachmentIdsSet.has(attachment.offline_id))
3189
- );
3190
- }
3191
- )
3192
- );
3193
3222
  const selectAttachmentsOfIssueTypeFieldValues = restructureCreateSelectorWithArgs(
3194
3223
  createSelector(
3195
3224
  [selectIssueTypeFieldValuesAttachments, (_state, fieldValuesId) => fieldValuesId],
@@ -3198,6 +3227,9 @@ const selectAttachmentsOfIssueTypeFieldValues = restructureCreateSelectorWithArg
3198
3227
  }
3199
3228
  )
3200
3229
  );
3230
+ const selectIssueTypeFieldValuesAttachmentById = (attachmentId) => (state) => {
3231
+ return state.issueTypeFieldValuesAttachmentReducer.instances[attachmentId];
3232
+ };
3201
3233
  const issueTypeFieldValuesAttachmentReducer = issueTypeFieldValuesAttachmentSlice.reducer;
3202
3234
  const assetTypeFieldsAdapter = createModelAdapter((fields) => fields.offline_id);
3203
3235
  const initialState$3 = assetTypeFieldsAdapter.getInitialState({});
@@ -3239,7 +3271,7 @@ const selectAssetTypeFieldsOfAssetType = restructureCreateSelectorWithArgs(
3239
3271
  );
3240
3272
  const selectLatestAssetTypeFieldsOfAssetType = restructureCreateSelectorWithArgs(
3241
3273
  createSelector([selectAssetTypeFields, (_state, id) => id], (fields, id) => {
3242
- 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];
3243
3275
  })
3244
3276
  );
3245
3277
  const selectAssetTypeFieldsById = (fieldsId) => (state) => {
@@ -3286,17 +3318,6 @@ const selectAssetTypeFieldValuesOfAsset = restructureCreateSelectorWithArgs(
3286
3318
  return fallbackToEmptyArray(fieldValues.filter((fieldValue) => fieldValue.asset === assetId));
3287
3319
  })
3288
3320
  );
3289
- const selectAssetTypeValuesOfAssetType = restructureCreateSelectorWithArgs(
3290
- createSelector(
3291
- [selectAssetTypeFields, selectAssetTypeFieldValues, (_state, id) => id],
3292
- (fields, fieldValues, id) => {
3293
- const fieldsIds = new Set(
3294
- fields.filter((field) => field.asset_type === id).map((field) => field.offline_id)
3295
- );
3296
- return fallbackToEmptyArray(fieldValues.filter((values) => fieldsIds.has(values.fields_revision)));
3297
- }
3298
- )
3299
- );
3300
3321
  const selectAssetTypeFieldValuesById = (fieldValuesId) => (state) => {
3301
3322
  return state.assetTypeFieldValuesReducer.instances[fieldValuesId];
3302
3323
  };
@@ -3386,25 +3407,14 @@ const selectAssetTypeFieldValuesAttachments = createSelector(
3386
3407
  return Object.values(attachmentsMapping);
3387
3408
  }
3388
3409
  );
3389
- const selectAssetTypeFieldValuesAttachmentById = (attachmentId) => (state) => {
3390
- return state.assetTypeFieldValuesAttachmentReducer.instances[attachmentId];
3391
- };
3392
- const selectAssetTypeFieldValuesAttachmentsByIds = restructureCreateSelectorWithArgs(
3393
- createSelector(
3394
- [selectAssetTypeFieldValuesAttachmentsMapping, (_, attachmentIds) => attachmentIds],
3395
- (mapping, attachmentIds) => {
3396
- const attachmentIdsSet = new Set(attachmentIds);
3397
- return fallbackToEmptyArray(
3398
- Object.values(mapping).filter((attachment) => attachmentIdsSet.has(attachment.offline_id))
3399
- );
3400
- }
3401
- )
3402
- );
3403
3410
  const selectAttachmentsOfAssetTypeFieldValues = restructureCreateSelectorWithArgs(
3404
3411
  createSelector([selectAssetTypeFieldValuesAttachments, (_state, id) => id], (attachments, id) => {
3405
3412
  return fallbackToEmptyArray(attachments.filter((attachment) => attachment.field_values === id));
3406
3413
  })
3407
3414
  );
3415
+ const selectAssetTypeFieldValuesAttachmentById = (attachmentId) => (state) => {
3416
+ return state.assetTypeFieldValuesAttachmentReducer.instances[attachmentId];
3417
+ };
3408
3418
  const assetTypeFieldValuesAttachmentReducer = assetTypeFieldValuesAttachmentSlice.reducer;
3409
3419
  let clientStore;
3410
3420
  function setClientStore(store) {
@@ -5299,7 +5309,15 @@ class IssueTypeService extends BaseApiService {
5299
5309
  const promise = this.enqueueRequest({
5300
5310
  method: HttpMethod.POST,
5301
5311
  url: "/issue-types/",
5302
- 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
+ },
5303
5321
  blockers: [],
5304
5322
  blocks: [offlineIssueType.offline_id]
5305
5323
  });
@@ -5719,7 +5737,9 @@ class FormService extends BaseUploadService {
5719
5737
  method: HttpMethod.POST,
5720
5738
  url: "/forms/",
5721
5739
  payload: {
5722
- ...offlineForm,
5740
+ // Sending exactly what is currently needed for the endpoint
5741
+ offline_id: offlineForm.offline_id,
5742
+ submitted_at: offlineForm.submitted_at,
5723
5743
  initial_revision: {
5724
5744
  offline_id: offlineFormRevision.offline_id,
5725
5745
  submitted_at: offlineFormRevision.submitted_at,
@@ -5728,7 +5748,10 @@ class FormService extends BaseUploadService {
5728
5748
  fields: offlineFormRevision.fields
5729
5749
  }
5730
5750
  },
5731
- blockers: [],
5751
+ blockers: [
5752
+ ...payload.project ? [payload.project.toString()] : [],
5753
+ ...payload.organization ? [payload.organization.toString()] : []
5754
+ ],
5732
5755
  blocks: [offlineForm.offline_id, offlineFormRevision.offline_id]
5733
5756
  });
5734
5757
  void formPromise.catch((e) => {
@@ -6682,8 +6705,7 @@ class DocumentAttachmentService extends BaseAttachmentService {
6682
6705
  file_name: offlineAttachment.file_name,
6683
6706
  file_sha1: offlineAttachment.file_sha1,
6684
6707
  file_extension: filePayload.extension,
6685
- description: offlineAttachment.description,
6686
- document: documentId
6708
+ description: offlineAttachment.description
6687
6709
  });
6688
6710
  sha1ToAttachmentIds[filePayload.sha1].push(offlineAttachment.offline_id);
6689
6711
  }
@@ -7582,39 +7604,24 @@ class AssetTypeFieldValuesService extends BaseApiService {
7582
7604
  return [offlineAssetTypeFieldValues, promise];
7583
7605
  }
7584
7606
  bulkAdd(payload, batchSize) {
7585
- var _a2;
7586
7607
  const submittedAt = (/* @__PURE__ */ new Date()).toISOString();
7587
7608
  const { values } = separateFilesFromValues(payload.values);
7588
- const offlineAssetTypeFieldValuesMany = [];
7589
- const batches = chunkArray(payload.payloads, batchSize ?? payload.payloads.length);
7590
- const batchPayloads = [];
7591
- for (const batch of batches) {
7592
- const assetTypeFieldValuesPayloads = [];
7593
- for (const payload2 of batch) {
7594
- const offlineAssetTypeFieldValues = offline({
7595
- ...payload2,
7596
- values: separateFilesFromValues(payload2.values).values,
7597
- created_by: (_a2 = this.client.store.getState().userReducer.currentUser) == null ? void 0 : _a2.id,
7598
- submitted_at: submittedAt
7599
- });
7600
- offlineAssetTypeFieldValuesMany.push(offlineAssetTypeFieldValues);
7601
- assetTypeFieldValuesPayloads.push({
7602
- offline_id: offlineAssetTypeFieldValues.offline_id,
7603
- asset: payload2.asset,
7604
- fields_revision: payload2.fields_revision,
7605
- published_at: payload2.published_at,
7606
- values: offlineAssetTypeFieldValues.values
7607
- });
7608
- }
7609
- batchPayloads.push({
7609
+ const payloadsBatches = chunkArray(payload.payloads, batchSize);
7610
+ const bulkAddPayloads = payloadsBatches.map((batch) => {
7611
+ return {
7610
7612
  submitted_at: submittedAt,
7611
7613
  values,
7612
- field_values: assetTypeFieldValuesPayloads
7613
- });
7614
- }
7615
- 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
+ });
7616
7623
  const promises = [];
7617
- for (const payload2 of batchPayloads) {
7624
+ for (const payload2 of bulkAddPayloads) {
7618
7625
  const assetIds = payload2.field_values.map((x) => x.asset);
7619
7626
  const assetTypeFieldsIds = payload2.field_values.map((x) => x.fields_revision);
7620
7627
  const assetTypeFieldValuesIds = payload2.field_values.map((x) => x.offline_id);
@@ -7629,11 +7636,9 @@ class AssetTypeFieldValuesService extends BaseApiService {
7629
7636
  promises.push(promise);
7630
7637
  }
7631
7638
  void Promise.all(promises).then((results) => {
7632
- this.dispatch(updateAssetTypeFieldValuesMany(results.flat()));
7633
- }).catch(() => {
7634
- this.dispatch(deleteAssetTypeFieldValuesMany(offlineAssetTypeFieldValuesMany.map((x) => x.offline_id)));
7639
+ this.dispatch(addAssetTypeFieldValuesMany(results.flat()));
7635
7640
  });
7636
- return [offlineAssetTypeFieldValuesMany, promises];
7641
+ return promises;
7637
7642
  }
7638
7643
  update(payload) {
7639
7644
  const { store } = this.client;
@@ -7657,13 +7662,7 @@ class AssetTypeFieldValuesService extends BaseApiService {
7657
7662
  description: "Delete asset type field values",
7658
7663
  method: HttpMethod.PATCH,
7659
7664
  url: `/asset-type-field-values/${payload.offline_id}/`,
7660
- payload: {
7661
- ...payload,
7662
- values: {
7663
- ...assetTypeFieldValues.values,
7664
- ...values
7665
- }
7666
- },
7665
+ payload,
7667
7666
  blockers: [
7668
7667
  updatedAssetTypeFieldValues.offline_id,
7669
7668
  updatedAssetTypeFieldValues.fields_revision,
@@ -7717,63 +7716,54 @@ class AssetTypeFieldValuesService extends BaseApiService {
7717
7716
  }
7718
7717
  }
7719
7718
  class AssetTypeFieldValuesAttachmentService extends BaseUploadService {
7720
- async bulkAdd(payloads, batchSize) {
7719
+ async bulkAdd(payloads) {
7721
7720
  var _a2;
7722
7721
  const submittedAt = (/* @__PURE__ */ new Date()).toISOString();
7723
7722
  const createdBy = (_a2 = this.client.store.getState().userReducer.currentUser) == null ? void 0 : _a2.id;
7724
- const batches = chunkArray(payloads, batchSize ?? payloads.length);
7723
+ const filePayloads = {};
7725
7724
  const offlineAssetTypeFieldValuesAttachments = [];
7726
- const batchPayloads = [];
7727
- for (const batch of batches) {
7728
- const filePayloads = {};
7729
- const attachmentPayloads = [];
7730
- for (const payload of batch) {
7731
- const { fieldValuesId, fieldIdentifier, file } = payload;
7732
- const filePayload = await this.getFilePayload(file);
7733
- if (!(filePayload.sha1 in filePayloads))
7734
- filePayloads[filePayload.sha1] = filePayload;
7735
- const offlineAssetTypeFieldValuesAttachment = offline({
7736
- file: URL.createObjectURL(file),
7737
- file_type: file.type,
7738
- file_name: file.name,
7739
- file_sha1: filePayload.sha1,
7740
- created_by: createdBy,
7741
- field_values: fieldValuesId,
7742
- submitted_at: submittedAt,
7743
- field_identifier: fieldIdentifier
7744
- });
7745
- offlineAssetTypeFieldValuesAttachments.push(offlineAssetTypeFieldValuesAttachment);
7746
- const attachmentPayload = {
7747
- offline_id: offlineAssetTypeFieldValuesAttachment.offline_id,
7748
- file_name: file.name,
7749
- file_sha1: filePayload.sha1,
7750
- file_extension: filePayload.extension,
7751
- field_identifier: fieldIdentifier,
7752
- field_values: fieldValuesId
7753
- };
7754
- attachmentPayloads.push(attachmentPayload);
7755
- }
7756
- 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,
7757
7738
  submitted_at: submittedAt,
7758
- attachments: attachmentPayloads,
7759
- files: Object.values(filePayloads)
7739
+ field_identifier: fieldIdentifier
7760
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);
7761
7751
  }
7762
7752
  this.dispatch(addAssetTypeFieldValuesAttachments(offlineAssetTypeFieldValuesAttachments));
7763
- const promises = batchPayloads.map((payload) => {
7764
- return this.enqueueRequest({
7765
- description: "Add asset type field values attachments",
7766
- method: HttpMethod.POST,
7767
- url: "/asset-type-field-values-attachments/bulk/",
7768
- payload,
7769
- blockers: payload.attachments.map((payload2) => payload2.field_values),
7770
- blocks: payload.attachments.map((payload2) => payload2.offline_id)
7771
- });
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)
7772
7764
  });
7773
- Promise.all(promises).then((result) => {
7774
- for (const res of result)
7775
- this.processPresignedUrls(res.presigned_urls);
7776
- const attachments = result.flatMap((res) => res.attachments);
7765
+ promise.then(({ presigned_urls, attachments }) => {
7766
+ this.processPresignedUrls(presigned_urls);
7777
7767
  this.dispatch(updateAssetTypeFieldValuesAttachments(attachments));
7778
7768
  }).catch((error) => {
7779
7769
  this.dispatch(
@@ -7783,16 +7773,13 @@ class AssetTypeFieldValuesAttachmentService extends BaseUploadService {
7783
7773
  );
7784
7774
  throw error;
7785
7775
  });
7786
- return [
7787
- offlineAssetTypeFieldValuesAttachments,
7788
- promises.map((promise) => promise.then(({ attachments }) => attachments))
7789
- ];
7776
+ return [offlineAssetTypeFieldValuesAttachments, promise.then(({ attachments }) => attachments)];
7790
7777
  }
7791
7778
  async bulkDelete(ids) {
7792
7779
  const { store } = this.client;
7793
7780
  const state = store.getState();
7794
- const attachments = selectAssetTypeFieldValuesAttachmentsByIds(ids)(state);
7795
- this.dispatch(deleteAssetTypeFieldValuesAttachments(ids));
7781
+ const formSubmissionAttachments = selectFormSubmissionAttachemntsByIds(ids)(state);
7782
+ this.dispatch(deleteFormSubmissionAttachments(ids));
7796
7783
  try {
7797
7784
  await this.enqueueRequest({
7798
7785
  description: "Delete asset type field values attachments",
@@ -7803,13 +7790,13 @@ class AssetTypeFieldValuesAttachmentService extends BaseUploadService {
7803
7790
  blocks: []
7804
7791
  });
7805
7792
  } catch (e) {
7806
- this.dispatch(addAssetTypeFieldValuesAttachments(attachments));
7793
+ this.dispatch(addFormSubmissionAttachments(formSubmissionAttachments));
7807
7794
  throw e;
7808
7795
  }
7809
7796
  }
7810
7797
  async refreshStore(projectId) {
7811
7798
  const result = await this.enqueueRequest({
7812
- description: "Get asset type field values attachments",
7799
+ description: "Gfet asset type field values attachments",
7813
7800
  method: HttpMethod.GET,
7814
7801
  url: "/asset-type-field-values-attachments/",
7815
7802
  queryParams: {
@@ -7999,8 +7986,8 @@ class IssueTypeFieldValuesAttachmentService extends BaseUploadService {
7999
7986
  async bulkDelete(attachmentsIds) {
8000
7987
  const { store } = this.client;
8001
7988
  const state = store.getState();
8002
- const attachments = selectIssueTypeFieldValuesAttachmentsByIds(attachmentsIds)(state);
8003
- this.dispatch(deleteIssueTypeFieldValuesAttachments(attachmentsIds));
7989
+ const formSubmissionAttachments = selectFormSubmissionAttachemntsByIds(attachmentsIds)(state);
7990
+ this.dispatch(deleteFormSubmissionAttachments(attachmentsIds));
8004
7991
  try {
8005
7992
  await this.enqueueRequest({
8006
7993
  description: "Delete issue type field values attachments",
@@ -8011,7 +7998,7 @@ class IssueTypeFieldValuesAttachmentService extends BaseUploadService {
8011
7998
  blocks: []
8012
7999
  });
8013
8000
  } catch (e) {
8014
- this.dispatch(addIssueTypeFieldValuesAttachments(attachments));
8001
+ this.dispatch(addFormSubmissionAttachments(formSubmissionAttachments));
8015
8002
  throw e;
8016
8003
  }
8017
8004
  }
@@ -8080,13 +8067,7 @@ class IssueTypeFieldValuesService extends BaseApiService {
8080
8067
  description: "Update issue type field values",
8081
8068
  method: HttpMethod.PATCH,
8082
8069
  url: `/issue-type-field-values/${payload.offline_id}/`,
8083
- payload: {
8084
- ...payload,
8085
- values: {
8086
- ...issueTypeFieldValues.values,
8087
- ...values
8088
- }
8089
- },
8070
+ payload,
8090
8071
  blockers: [
8091
8072
  updatedIssueTypeFieldValues.offline_id,
8092
8073
  updatedIssueTypeFieldValues.fields_revision,
@@ -8556,7 +8537,6 @@ export {
8556
8537
  selectAssetTypeFieldValues,
8557
8538
  selectAssetTypeFieldValuesAttachmentById,
8558
8539
  selectAssetTypeFieldValuesAttachments,
8559
- selectAssetTypeFieldValuesAttachmentsByIds,
8560
8540
  selectAssetTypeFieldValuesAttachmentsMapping,
8561
8541
  selectAssetTypeFieldValuesById,
8562
8542
  selectAssetTypeFieldValuesMapping,
@@ -8569,7 +8549,6 @@ export {
8569
8549
  selectAssetTypeFieldsMapping,
8570
8550
  selectAssetTypeFieldsOfAssetType,
8571
8551
  selectAssetTypeStagesMapping,
8572
- selectAssetTypeValuesOfAssetType,
8573
8552
  selectAssetTypes,
8574
8553
  selectAssetTypesByIds,
8575
8554
  selectAssetTypesMapping,
@@ -8627,11 +8606,14 @@ export {
8627
8606
  selectFormSubmissionAttachmentsMapping,
8628
8607
  selectFormSubmissionById,
8629
8608
  selectFormSubmissions,
8609
+ selectFormSubmissionsByFormRevisions,
8630
8610
  selectFormSubmissionsMapping,
8631
8611
  selectFormSubmissionsOfAsset,
8632
8612
  selectFormSubmissionsOfForm,
8633
8613
  selectFormSubmissionsOfIssue,
8634
8614
  selectForms,
8615
+ selectFormsCount,
8616
+ selectGeneralFormCount,
8635
8617
  selectGeoImageById,
8636
8618
  selectGeoImageMapping,
8637
8619
  selectGeoImages,
@@ -8656,7 +8638,6 @@ export {
8656
8638
  selectIssueTypeFieldValues,
8657
8639
  selectIssueTypeFieldValuesAttachmentById,
8658
8640
  selectIssueTypeFieldValuesAttachments,
8659
- selectIssueTypeFieldValuesAttachmentsByIds,
8660
8641
  selectIssueTypeFieldValuesAttachmentsMapping,
8661
8642
  selectIssueTypeFieldValuesById,
8662
8643
  selectIssueTypeFieldValuesMapping,
@@ -8669,7 +8650,6 @@ export {
8669
8650
  selectIssueTypeFieldsMapping,
8670
8651
  selectIssueTypeFieldsOfIssueType,
8671
8652
  selectIssueTypeMapping,
8672
- selectIssueTypeValuesOfIssueType,
8673
8653
  selectIssueTypes,
8674
8654
  selectIssueTypesByIds,
8675
8655
  selectIssueTypesOfOrganization,
@@ -8679,8 +8659,9 @@ export {
8679
8659
  selectIssuesOfIssueType,
8680
8660
  selectIssuesOfIssueTypeCount,
8681
8661
  selectLatestAssetTypeFieldsOfAssetType,
8662
+ selectLatestFormRevisionByForm,
8682
8663
  selectLatestFormRevisionOfForm,
8683
- selectLatestIssueTypeFieldsOfIssueType,
8664
+ selectLatestIssueTypeFieldsOfAssetType,
8684
8665
  selectLatestRetryTime,
8685
8666
  selectLicense,
8686
8667
  selectLicenseForProject,
@@ -8717,6 +8698,7 @@ export {
8717
8698
  selectProjectsOfOrganization,
8718
8699
  selectRehydrated,
8719
8700
  selectRootDocuments,
8701
+ selectSortedFormSubmissionsOfForm,
8720
8702
  selectSortedOrganizationUsers,
8721
8703
  selectSortedProjectUsers,
8722
8704
  selectStageFormIdsFromStageIds,