@overmap-ai/core 1.0.63-form-submission-fix.4 → 1.0.63-form-submission-drafts.1

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.
@@ -367,15 +367,15 @@ var __publicField = (obj, key, value) => {
367
367
  };
368
368
  const migrations = [initialVersioning, signOut, signOut, createOutboxState];
369
369
  const manifest = Object.fromEntries(migrations.map((migration2, i) => [i, wrapMigration(migration2)]));
370
- const initialState$B = {
370
+ const initialState$C = {
371
371
  accessToken: "",
372
372
  refreshToken: "",
373
373
  isLoggedIn: false
374
374
  };
375
375
  const authSlice = toolkit.createSlice({
376
376
  name: "auth",
377
- initialState: initialState$B,
378
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$B)),
377
+ initialState: initialState$C,
378
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$C)),
379
379
  reducers: {
380
380
  setTokens: (state, action) => {
381
381
  state.accessToken = action.payload.accessToken;
@@ -845,11 +845,11 @@ var __publicField = (obj, key, value) => {
845
845
  };
846
846
  }
847
847
  const categoryAdapter = createModelAdapter((category) => category.offline_id);
848
- const initialState$A = categoryAdapter.getInitialState({});
848
+ const initialState$B = categoryAdapter.getInitialState({});
849
849
  const categorySlice = toolkit.createSlice({
850
850
  name: "categories",
851
- initialState: initialState$A,
852
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$A)),
851
+ initialState: initialState$B,
852
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$B)),
853
853
  reducers: {
854
854
  initializeCategories: categoryAdapter.initialize,
855
855
  addCategory: categoryAdapter.addOne,
@@ -879,11 +879,11 @@ var __publicField = (obj, key, value) => {
879
879
  };
880
880
  const categoryReducer = categorySlice.reducer;
881
881
  const assetTypeAdapter = createModelAdapter((assetType) => assetType.offline_id);
882
- const initialState$z = assetTypeAdapter.getInitialState({});
882
+ const initialState$A = assetTypeAdapter.getInitialState({});
883
883
  const assetTypeSlice = toolkit.createSlice({
884
884
  name: "assetTypes",
885
- initialState: initialState$z,
886
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$z)),
885
+ initialState: initialState$A,
886
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$A)),
887
887
  reducers: {
888
888
  initializeAssetTypes: assetTypeAdapter.initialize,
889
889
  addAssetType: assetTypeAdapter.addOne,
@@ -928,11 +928,11 @@ var __publicField = (obj, key, value) => {
928
928
  );
929
929
  const assetTypeReducer = assetTypeSlice.reducer;
930
930
  const assetAdapter = createModelAdapter((asset) => asset.offline_id);
931
- const initialState$y = assetAdapter.getInitialState({});
931
+ const initialState$z = assetAdapter.getInitialState({});
932
932
  const assetSlice = toolkit.createSlice({
933
933
  name: "assets",
934
- initialState: initialState$y,
935
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$y)),
934
+ initialState: initialState$z,
935
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$z)),
936
936
  reducers: {
937
937
  initializeAssets: (state, action) => {
938
938
  assetAdapter.initialize(state, action);
@@ -1035,11 +1035,11 @@ var __publicField = (obj, key, value) => {
1035
1035
  };
1036
1036
  const assetReducer = assetSlice.reducer;
1037
1037
  const assetAttachmentAdapter = createModelAdapter((attachment) => attachment.offline_id);
1038
- const initialState$x = assetAttachmentAdapter.getInitialState({});
1038
+ const initialState$y = assetAttachmentAdapter.getInitialState({});
1039
1039
  const assetAttachmentSlice = toolkit.createSlice({
1040
1040
  name: "assetAttachments",
1041
- initialState: initialState$x,
1042
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$x)),
1041
+ initialState: initialState$y,
1042
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$y)),
1043
1043
  reducers: {
1044
1044
  initializeAssetAttachments: assetAttachmentAdapter.initialize,
1045
1045
  addAssetAttachment: assetAttachmentAdapter.addOne,
@@ -1097,13 +1097,13 @@ var __publicField = (obj, key, value) => {
1097
1097
  )
1098
1098
  );
1099
1099
  const assetAttachmentReducer = assetAttachmentSlice.reducer;
1100
- const initialState$w = {
1100
+ const initialState$x = {
1101
1101
  completionsByAssetId: {}
1102
1102
  };
1103
1103
  const assetStageCompletionSlice = toolkit.createSlice({
1104
1104
  name: "assetStageCompletions",
1105
- initialState: initialState$w,
1106
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$w)),
1105
+ initialState: initialState$x,
1106
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$x)),
1107
1107
  reducers: {
1108
1108
  addStageCompletion: (state, action) => {
1109
1109
  let stageToCompletionDateMapping = state.completionsByAssetId[action.payload.asset];
@@ -1155,11 +1155,11 @@ var __publicField = (obj, key, value) => {
1155
1155
  );
1156
1156
  const assetStageCompletionReducer = assetStageCompletionSlice.reducer;
1157
1157
  const assetStageAdapter = createModelAdapter((assetStage) => assetStage.offline_id);
1158
- const initialState$v = assetStageAdapter.getInitialState({});
1158
+ const initialState$w = assetStageAdapter.getInitialState({});
1159
1159
  const assetStageSlice = toolkit.createSlice({
1160
1160
  name: "assetStages",
1161
- initialState: initialState$v,
1162
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$v)),
1161
+ initialState: initialState$w,
1162
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$w)),
1163
1163
  reducers: {
1164
1164
  initializeStages: assetStageAdapter.initialize,
1165
1165
  setStage: assetStageAdapter.setOne,
@@ -1240,11 +1240,11 @@ var __publicField = (obj, key, value) => {
1240
1240
  const assetTypeAttachmentAdapter = createModelAdapter(
1241
1241
  (attachment) => attachment.offline_id
1242
1242
  );
1243
- const initialState$u = assetTypeAttachmentAdapter.getInitialState({});
1243
+ const initialState$v = assetTypeAttachmentAdapter.getInitialState({});
1244
1244
  const assetTypeAttachmentSlice = toolkit.createSlice({
1245
1245
  name: "assetTypeAttachments",
1246
- initialState: initialState$u,
1247
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$u)),
1246
+ initialState: initialState$v,
1247
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$v)),
1248
1248
  reducers: {
1249
1249
  initializeAssetTypeAttachments: assetTypeAttachmentAdapter.initialize,
1250
1250
  addAssetTypeAttachment: assetTypeAttachmentAdapter.addOne,
@@ -1303,10 +1303,10 @@ var __publicField = (obj, key, value) => {
1303
1303
  );
1304
1304
  const assetTypeAttachmentReducer = assetTypeAttachmentSlice.reducer;
1305
1305
  const workspaceAdapter = createModelAdapter((workspace) => workspace.offline_id);
1306
- const initialState$t = workspaceAdapter.getInitialState({});
1306
+ const initialState$u = workspaceAdapter.getInitialState({});
1307
1307
  const workspaceSlice = toolkit.createSlice({
1308
1308
  name: "workspace",
1309
- initialState: initialState$t,
1309
+ initialState: initialState$u,
1310
1310
  reducers: {
1311
1311
  initializeWorkspaces: workspaceAdapter.initialize,
1312
1312
  setWorkspaces: workspaceAdapter.setMany,
@@ -1338,14 +1338,14 @@ var __publicField = (obj, key, value) => {
1338
1338
  const workspaceReducer = workspaceSlice.reducer;
1339
1339
  const maxRecentIssues = 10;
1340
1340
  const issueAdapter = createModelAdapter((issue) => issue.offline_id);
1341
- const initialState$s = issueAdapter.getInitialState({
1341
+ const initialState$t = issueAdapter.getInitialState({
1342
1342
  recentIssueIds: []
1343
1343
  });
1344
1344
  const issueSlice = toolkit.createSlice({
1345
1345
  name: "issues",
1346
- initialState: initialState$s,
1346
+ initialState: initialState$t,
1347
1347
  extraReducers: (builder) => builder.addCase("RESET", (state) => {
1348
- Object.assign(state, initialState$s);
1348
+ Object.assign(state, initialState$t);
1349
1349
  }),
1350
1350
  reducers: {
1351
1351
  initializeIssues: issueAdapter.initialize,
@@ -1489,12 +1489,12 @@ var __publicField = (obj, key, value) => {
1489
1489
  );
1490
1490
  const issueReducer = issueSlice.reducer;
1491
1491
  const issueTypeAdapter = createModelAdapter((issueType) => issueType.offline_id);
1492
- const initialState$r = issueTypeAdapter.getInitialState({});
1492
+ const initialState$s = issueTypeAdapter.getInitialState({});
1493
1493
  const issueTypeSlice = toolkit.createSlice({
1494
1494
  name: "issueTypes",
1495
- initialState: initialState$r,
1495
+ initialState: initialState$s,
1496
1496
  extraReducers: (builder) => builder.addCase("RESET", (state) => {
1497
- Object.assign(state, initialState$r);
1497
+ Object.assign(state, initialState$s);
1498
1498
  }),
1499
1499
  reducers: {
1500
1500
  initializeIssueTypes: issueTypeAdapter.initialize,
@@ -1543,15 +1543,15 @@ var __publicField = (obj, key, value) => {
1543
1543
  return ((_a2 = selectIssuesOfIssueType(issueTypeId)(state)) == null ? void 0 : _a2.length) ?? 0;
1544
1544
  };
1545
1545
  const issueTypeReducer = issueTypeSlice.reducer;
1546
- const initialState$q = {
1546
+ const initialState$r = {
1547
1547
  s3Urls: {}
1548
1548
  };
1549
1549
  const msPerHour = 1e3 * 60 * 60;
1550
1550
  const msPerWeek = msPerHour * 24 * 7;
1551
1551
  const fileSlice = toolkit.createSlice({
1552
1552
  name: "file",
1553
- initialState: initialState$q,
1554
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$q)),
1553
+ initialState: initialState$r,
1554
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$r)),
1555
1555
  reducers: {
1556
1556
  setUploadUrl: (state, action) => {
1557
1557
  const { url, fields, sha1 } = action.payload;
@@ -1632,7 +1632,7 @@ var __publicField = (obj, key, value) => {
1632
1632
  LicenseStatus2[LicenseStatus2["PAST_DUE"] = 8] = "PAST_DUE";
1633
1633
  return LicenseStatus2;
1634
1634
  })(LicenseStatus || {});
1635
- const initialState$p = {
1635
+ const initialState$q = {
1636
1636
  users: {},
1637
1637
  currentUser: {
1638
1638
  id: 0,
@@ -1643,8 +1643,8 @@ var __publicField = (obj, key, value) => {
1643
1643
  };
1644
1644
  const userSlice = toolkit.createSlice({
1645
1645
  name: "users",
1646
- initialState: initialState$p,
1647
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$p)),
1646
+ initialState: initialState$q,
1647
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$q)),
1648
1648
  reducers: {
1649
1649
  setUsers: (state, action) => {
1650
1650
  const usersMapping = {};
@@ -1709,11 +1709,11 @@ var __publicField = (obj, key, value) => {
1709
1709
  const organizationAccessAdapter = createModelAdapter(
1710
1710
  (organizationAccess) => organizationAccess.offline_id
1711
1711
  );
1712
- const initialState$o = organizationAccessAdapter.getInitialState({});
1712
+ const initialState$p = organizationAccessAdapter.getInitialState({});
1713
1713
  const organizationAccessSlice = toolkit.createSlice({
1714
1714
  name: "organizationAccess",
1715
- initialState: initialState$o,
1716
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$o)),
1715
+ initialState: initialState$p,
1716
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$p)),
1717
1717
  reducers: {
1718
1718
  initializeOrganizationAccesses: organizationAccessAdapter.initialize,
1719
1719
  updateOrganizationAccess: organizationAccessAdapter.updateOne,
@@ -1750,11 +1750,11 @@ var __publicField = (obj, key, value) => {
1750
1750
  };
1751
1751
  const organizationAccessReducer = organizationAccessSlice.reducer;
1752
1752
  const licenseAdapter = createModelAdapter((license) => license.offline_id);
1753
- const initialState$n = licenseAdapter.getInitialState({});
1753
+ const initialState$o = licenseAdapter.getInitialState({});
1754
1754
  const licenseSlice = toolkit.createSlice({
1755
1755
  name: "license",
1756
- initialState: initialState$n,
1757
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$n)),
1756
+ initialState: initialState$o,
1757
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$o)),
1758
1758
  reducers: {
1759
1759
  initializeLicences: licenseAdapter.initialize,
1760
1760
  addLicenses: licenseAdapter.addMany,
@@ -1780,11 +1780,11 @@ var __publicField = (obj, key, value) => {
1780
1780
  );
1781
1781
  const licenseReducer = licenseSlice.reducer;
1782
1782
  const projectAccessAdapter = createModelAdapter((projectAccess) => projectAccess.offline_id);
1783
- const initialState$m = projectAccessAdapter.getInitialState({});
1783
+ const initialState$n = projectAccessAdapter.getInitialState({});
1784
1784
  const projectAccessSlice = toolkit.createSlice({
1785
1785
  name: "projectAccess",
1786
- initialState: initialState$m,
1787
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$m)),
1786
+ initialState: initialState$n,
1787
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$n)),
1788
1788
  reducers: {
1789
1789
  initializeProjectAccesses: projectAccessAdapter.initialize,
1790
1790
  updateProjectAccess: projectAccessAdapter.updateOne,
@@ -1830,14 +1830,14 @@ var __publicField = (obj, key, value) => {
1830
1830
  return projectAccesses;
1831
1831
  };
1832
1832
  const projectAccessReducer = projectAccessSlice.reducer;
1833
- const initialState$l = {
1833
+ const initialState$m = {
1834
1834
  projects: {},
1835
1835
  activeProjectId: null
1836
1836
  };
1837
1837
  const projectSlice = toolkit.createSlice({
1838
1838
  name: "projects",
1839
- initialState: initialState$l,
1840
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$l)),
1839
+ initialState: initialState$m,
1840
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$m)),
1841
1841
  reducers: {
1842
1842
  setProjects: (state, action) => {
1843
1843
  const projectsMap = {};
@@ -1951,13 +1951,13 @@ var __publicField = (obj, key, value) => {
1951
1951
  });
1952
1952
  }
1953
1953
  );
1954
- const initialState$k = {
1954
+ const initialState$l = {
1955
1955
  organizations: {}
1956
1956
  };
1957
1957
  const organizationSlice = toolkit.createSlice({
1958
1958
  name: "organizations",
1959
- initialState: initialState$k,
1960
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$k)),
1959
+ initialState: initialState$l,
1960
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$l)),
1961
1961
  reducers: {
1962
1962
  setOrganizations: (state, action) => {
1963
1963
  for (const org of action.payload) {
@@ -2040,14 +2040,14 @@ var __publicField = (obj, key, value) => {
2040
2040
  }
2041
2041
  };
2042
2042
  };
2043
- const initialState$j = {
2043
+ const initialState$k = {
2044
2044
  deletedRequests: [],
2045
2045
  latestRetryTime: 0
2046
2046
  };
2047
2047
  const outboxSlice = toolkit.createSlice({
2048
2048
  name: "outbox",
2049
- initialState: initialState$j,
2050
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$j)),
2049
+ initialState: initialState$k,
2050
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$k)),
2051
2051
  reducers: {
2052
2052
  // enqueueActions is a reducer that does nothing but enqueue API request to the Redux Offline outbox
2053
2053
  // Whenever an issue is being created, a reducer addIssue() is responsible for adding it to the offline store
@@ -2079,15 +2079,15 @@ var __publicField = (obj, key, value) => {
2079
2079
  const selectLatestRetryTime = (state) => state.outboxReducer.latestRetryTime;
2080
2080
  const { enqueueRequest, markForDeletion, markAsDeleted, _setLatestRetryTime } = outboxSlice.actions;
2081
2081
  const outboxReducer = outboxSlice.reducer;
2082
- const initialState$i = {
2082
+ const initialState$j = {
2083
2083
  projectFiles: {},
2084
2084
  activeProjectFileId: null,
2085
2085
  isImportingProjectFile: false
2086
2086
  };
2087
2087
  const projectFileSlice = toolkit.createSlice({
2088
2088
  name: "projectFiles",
2089
- initialState: initialState$i,
2090
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$i)),
2089
+ initialState: initialState$j,
2090
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$j)),
2091
2091
  reducers: {
2092
2092
  addOrReplaceProjectFiles: (state, action) => {
2093
2093
  for (let fileObj of action.payload) {
@@ -2172,11 +2172,11 @@ var __publicField = (obj, key, value) => {
2172
2172
  };
2173
2173
  const projectFileReducer = projectFileSlice.reducer;
2174
2174
  const projectAttachmentAdapter = createModelAdapter((attachment) => attachment.offline_id);
2175
- const initialState$h = projectAttachmentAdapter.getInitialState({});
2175
+ const initialState$i = projectAttachmentAdapter.getInitialState({});
2176
2176
  const projectAttachmentSlice = toolkit.createSlice({
2177
2177
  name: "projectAttachments",
2178
- initialState: initialState$h,
2179
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$h)),
2178
+ initialState: initialState$i,
2179
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$i)),
2180
2180
  reducers: {
2181
2181
  initializeProjectAttachments: projectAttachmentAdapter.initialize,
2182
2182
  addProjectAttachment: projectAttachmentAdapter.addOne,
@@ -2234,12 +2234,12 @@ var __publicField = (obj, key, value) => {
2234
2234
  )
2235
2235
  );
2236
2236
  const projectAttachmentReducer = projectAttachmentSlice.reducer;
2237
- const initialState$g = {
2237
+ const initialState$h = {
2238
2238
  isRehydrated: false
2239
2239
  };
2240
2240
  const rehydratedSlice = toolkit.createSlice({
2241
2241
  name: "rehydrated",
2242
- initialState: initialState$g,
2242
+ initialState: initialState$h,
2243
2243
  // The `reducers` field lets us define reducers and generate associated actions
2244
2244
  reducers: {
2245
2245
  setRehydrated: (state, action) => {
@@ -2250,13 +2250,13 @@ var __publicField = (obj, key, value) => {
2250
2250
  const { setRehydrated } = rehydratedSlice.actions;
2251
2251
  const selectRehydrated = (state) => state.rehydratedReducer.isRehydrated;
2252
2252
  const rehydratedReducer = rehydratedSlice.reducer;
2253
- const initialState$f = {
2253
+ const initialState$g = {
2254
2254
  isFetchingInitialData: false
2255
2255
  };
2256
2256
  const settingSlice = toolkit.createSlice({
2257
2257
  name: "settings",
2258
- initialState: initialState$f,
2259
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$f)),
2258
+ initialState: initialState$g,
2259
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$g)),
2260
2260
  reducers: {
2261
2261
  setIsFetchingInitialData: (state, action) => {
2262
2262
  state.isFetchingInitialData = action.payload;
@@ -2280,11 +2280,11 @@ var __publicField = (obj, key, value) => {
2280
2280
  }
2281
2281
  };
2282
2282
  const formRevisionAdapter = createModelAdapter((revision) => revision.offline_id);
2283
- const initialState$e = formRevisionAdapter.getInitialState({});
2283
+ const initialState$f = formRevisionAdapter.getInitialState({});
2284
2284
  const formRevisionsSlice = toolkit.createSlice({
2285
2285
  name: "formRevisions",
2286
- initialState: initialState$e,
2287
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$e)),
2286
+ initialState: initialState$f,
2287
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$f)),
2288
2288
  reducers: {
2289
2289
  initializeFormRevisions: formRevisionAdapter.initialize,
2290
2290
  setFormRevision: formRevisionAdapter.setOne,
@@ -2384,11 +2384,11 @@ var __publicField = (obj, key, value) => {
2384
2384
  });
2385
2385
  const formRevisionReducer = formRevisionsSlice.reducer;
2386
2386
  const formAdapter = createModelAdapter((form) => form.offline_id);
2387
- const initialState$d = formAdapter.getInitialState({});
2387
+ const initialState$e = formAdapter.getInitialState({});
2388
2388
  const formSlice = toolkit.createSlice({
2389
2389
  name: "forms",
2390
- initialState: initialState$d,
2391
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$d)),
2390
+ initialState: initialState$e,
2391
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$e)),
2392
2392
  reducers: {
2393
2393
  initializeForms: formAdapter.initialize,
2394
2394
  setForm: formAdapter.setOne,
@@ -2468,11 +2468,11 @@ var __publicField = (obj, key, value) => {
2468
2468
  });
2469
2469
  const formReducer = formSlice.reducer;
2470
2470
  const submissionAdapter = createModelAdapter((submission) => submission.offline_id);
2471
- const initialState$c = submissionAdapter.getInitialState({});
2471
+ const initialState$d = submissionAdapter.getInitialState({});
2472
2472
  const formSubmissionSlice = toolkit.createSlice({
2473
2473
  name: "formSubmissions",
2474
- initialState: initialState$c,
2475
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$c)),
2474
+ initialState: initialState$d,
2475
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$d)),
2476
2476
  reducers: {
2477
2477
  initializeFormSubmissions: submissionAdapter.initialize,
2478
2478
  setFormSubmission: submissionAdapter.setOne,
@@ -2680,11 +2680,11 @@ var __publicField = (obj, key, value) => {
2680
2680
  const formSubmissionAttachmentAdapter = createModelAdapter(
2681
2681
  (attachment) => attachment.offline_id
2682
2682
  );
2683
- const initialState$b = formSubmissionAttachmentAdapter.getInitialState({});
2683
+ const initialState$c = formSubmissionAttachmentAdapter.getInitialState({});
2684
2684
  const formSubmissionAttachmentSlice = toolkit.createSlice({
2685
2685
  name: "formSubmissionAttachments",
2686
- initialState: initialState$b,
2687
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$b)),
2686
+ initialState: initialState$c,
2687
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$c)),
2688
2688
  reducers: {
2689
2689
  initializeFormSubmissionAttachments: formSubmissionAttachmentAdapter.initialize,
2690
2690
  addFormSubmissionAttachment: formSubmissionAttachmentAdapter.addOne,
@@ -2711,6 +2711,15 @@ var __publicField = (obj, key, value) => {
2711
2711
  const selectFormSubmissionAttachmentsMapping = (state) => {
2712
2712
  return state.formSubmissionAttachmentReducer.instances;
2713
2713
  };
2714
+ const selectFormSubmissionAttachemntsByIds = restructureCreateSelectorWithArgs(
2715
+ toolkit.createSelector(
2716
+ [selectFormSubmissionAttachmentsMapping, (_, attachmentIds) => attachmentIds],
2717
+ (mapping, attachmentIds) => {
2718
+ const attachmentIdsSet = new Set(attachmentIds);
2719
+ return Object.values(mapping).filter((attachment) => attachmentIdsSet.has(attachment.offline_id));
2720
+ }
2721
+ )
2722
+ );
2714
2723
  const selectAttachmentsOfFormSubmission = restructureCreateSelectorWithArgs(
2715
2724
  toolkit.createSelector(
2716
2725
  [selectFormSubmissionAttachmentsMapping, (_state, submissionId) => submissionId],
@@ -2723,11 +2732,11 @@ var __publicField = (obj, key, value) => {
2723
2732
  const formRevisionAttachmentAdapter = createModelAdapter(
2724
2733
  (attachment) => attachment.offline_id
2725
2734
  );
2726
- const initialState$a = formRevisionAttachmentAdapter.getInitialState({});
2735
+ const initialState$b = formRevisionAttachmentAdapter.getInitialState({});
2727
2736
  const formRevisionAttachmentSlice = toolkit.createSlice({
2728
2737
  name: "formRevisionAttachments",
2729
- initialState: initialState$a,
2730
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$a)),
2738
+ initialState: initialState$b,
2739
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$b)),
2731
2740
  reducers: {
2732
2741
  initializeFormRevisionAttachments: formRevisionAttachmentAdapter.initialize,
2733
2742
  addFormRevisionAttachment: formRevisionAttachmentAdapter.addOne,
@@ -2764,10 +2773,10 @@ var __publicField = (obj, key, value) => {
2764
2773
  );
2765
2774
  const formRevisionAttachmentReducer = formRevisionAttachmentSlice.reducer;
2766
2775
  const emailDomainAdapter = createModelAdapter((emailDomain) => emailDomain.offline_id);
2767
- const initialState$9 = emailDomainAdapter.getInitialState({});
2776
+ const initialState$a = emailDomainAdapter.getInitialState({});
2768
2777
  const emailDomainsSlice = toolkit.createSlice({
2769
2778
  name: "emailDomains",
2770
- initialState: initialState$9,
2779
+ initialState: initialState$a,
2771
2780
  reducers: {
2772
2781
  initializeEmailDomains: emailDomainAdapter.initialize,
2773
2782
  addEmailDomain: emailDomainAdapter.addOne,
@@ -2786,14 +2795,14 @@ var __publicField = (obj, key, value) => {
2786
2795
  )
2787
2796
  );
2788
2797
  const emailDomainsReducer = emailDomainsSlice.reducer;
2789
- const initialState$8 = {
2798
+ const initialState$9 = {
2790
2799
  documents: {}
2791
2800
  };
2792
2801
  const documentSlice = toolkit.createSlice({
2793
2802
  name: "documents",
2794
- initialState: initialState$8,
2803
+ initialState: initialState$9,
2795
2804
  extraReducers: (builder) => builder.addCase("RESET", (state) => {
2796
- Object.assign(state, initialState$8);
2805
+ Object.assign(state, initialState$9);
2797
2806
  }),
2798
2807
  reducers: {
2799
2808
  setDocuments: (state, action) => {
@@ -2968,11 +2977,11 @@ var __publicField = (obj, key, value) => {
2968
2977
  );
2969
2978
  const documentsReducer = documentSlice.reducer;
2970
2979
  const documentAttachmentAdapter = createModelAdapter((attachment) => attachment.offline_id);
2971
- const initialState$7 = documentAttachmentAdapter.getInitialState({});
2980
+ const initialState$8 = documentAttachmentAdapter.getInitialState({});
2972
2981
  const documentAttachmentSlice = toolkit.createSlice({
2973
2982
  name: "documentAttachments",
2974
- initialState: initialState$7,
2975
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$7)),
2983
+ initialState: initialState$8,
2984
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$8)),
2976
2985
  reducers: {
2977
2986
  initializeDocumentAttachments: documentAttachmentAdapter.initialize,
2978
2987
  addDocumentAttachment: documentAttachmentAdapter.addOne,
@@ -3031,11 +3040,11 @@ var __publicField = (obj, key, value) => {
3031
3040
  );
3032
3041
  const documentAttachmentReducer = documentAttachmentSlice.reducer;
3033
3042
  const teamAdapter = createModelAdapter((team) => team.offline_id);
3034
- const initialState$6 = teamAdapter.getInitialState({});
3043
+ const initialState$7 = teamAdapter.getInitialState({});
3035
3044
  const teamSlice = toolkit.createSlice({
3036
3045
  name: "teams",
3037
- initialState: initialState$6,
3038
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$6)),
3046
+ initialState: initialState$7,
3047
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$7)),
3039
3048
  reducers: {
3040
3049
  setTeam: teamAdapter.setOne,
3041
3050
  initializeTeams: teamAdapter.initialize,
@@ -3069,11 +3078,11 @@ var __publicField = (obj, key, value) => {
3069
3078
  const agentUserConversationAdapter = createModelAdapter(
3070
3079
  (conversation) => conversation.offline_id
3071
3080
  );
3072
- const initialState$5 = agentUserConversationAdapter.getInitialState({});
3081
+ const initialState$6 = agentUserConversationAdapter.getInitialState({});
3073
3082
  const agentsSlice = toolkit.createSlice({
3074
3083
  name: "agents",
3075
- initialState: initialState$5,
3076
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$5)),
3084
+ initialState: initialState$6,
3085
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$6)),
3077
3086
  reducers: {
3078
3087
  initializeConversations: agentUserConversationAdapter.initialize,
3079
3088
  addConversation: agentUserConversationAdapter.addOne,
@@ -3095,11 +3104,11 @@ var __publicField = (obj, key, value) => {
3095
3104
  );
3096
3105
  const agentsReducer = agentsSlice.reducer;
3097
3106
  const issueCommentAdapter = createModelAdapter((comment) => comment.offline_id);
3098
- const initialState$4 = issueCommentAdapter.getInitialState({});
3107
+ const initialState$5 = issueCommentAdapter.getInitialState({});
3099
3108
  const issueCommentSlice = toolkit.createSlice({
3100
3109
  name: "issueComments",
3101
- initialState: initialState$4,
3102
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$4)),
3110
+ initialState: initialState$5,
3111
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$5)),
3103
3112
  reducers: {
3104
3113
  addIssueComment: issueCommentAdapter.addOne,
3105
3114
  addIssueComments: issueCommentAdapter.addMany,
@@ -3128,11 +3137,11 @@ var __publicField = (obj, key, value) => {
3128
3137
  );
3129
3138
  const issueCommentReducer = issueCommentSlice.reducer;
3130
3139
  const issueUpdateAdapter = createModelAdapter((issueUpdate) => issueUpdate.offline_id);
3131
- const initialState$3 = issueUpdateAdapter.getInitialState({});
3140
+ const initialState$4 = issueUpdateAdapter.getInitialState({});
3132
3141
  const issueUpdateSlice = toolkit.createSlice({
3133
3142
  name: "issueUpdates",
3134
- initialState: initialState$3,
3135
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$3)),
3143
+ initialState: initialState$4,
3144
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$4)),
3136
3145
  reducers: {
3137
3146
  initializeIssueUpdates: issueUpdateAdapter.setMany,
3138
3147
  setIssueUpdate: issueUpdateAdapter.setOne,
@@ -3161,11 +3170,11 @@ var __publicField = (obj, key, value) => {
3161
3170
  );
3162
3171
  const issueUpdateReducer = issueUpdateSlice.reducer;
3163
3172
  const issueAttachmentAdapter = createModelAdapter((attachment) => attachment.offline_id);
3164
- const initialState$2 = issueAttachmentAdapter.getInitialState({});
3173
+ const initialState$3 = issueAttachmentAdapter.getInitialState({});
3165
3174
  const issueAttachmentSlice = toolkit.createSlice({
3166
3175
  name: "issueAttachments",
3167
- initialState: initialState$2,
3168
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$2)),
3176
+ initialState: initialState$3,
3177
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$3)),
3169
3178
  reducers: {
3170
3179
  initializeIssueAttachments: issueAttachmentAdapter.initialize,
3171
3180
  addIssueAttachment: issueAttachmentAdapter.addOne,
@@ -3223,23 +3232,23 @@ var __publicField = (obj, key, value) => {
3223
3232
  )
3224
3233
  );
3225
3234
  const issueAttachmentReducer = issueAttachmentSlice.reducer;
3226
- const initialState$1 = {
3235
+ const initialState$2 = {
3227
3236
  version: 0
3228
3237
  };
3229
3238
  const versioningSlice = toolkit.createSlice({
3230
3239
  name: "versioning",
3231
- initialState: initialState$1,
3240
+ initialState: initialState$2,
3232
3241
  reducers: {}
3233
3242
  });
3234
3243
  const versioningReducer = versioningSlice.reducer;
3235
3244
  const geoImageAdapter = createModelAdapter((model) => model.offline_id);
3236
- const initialState = geoImageAdapter.getInitialState({});
3245
+ const initialState$1 = geoImageAdapter.getInitialState({});
3237
3246
  const geoImageSlice = toolkit.createSlice({
3238
3247
  name: "geoImages",
3239
- initialState,
3248
+ initialState: initialState$1,
3240
3249
  extraReducers: (builder) => {
3241
3250
  builder.addCase("RESET", (state) => {
3242
- Object.assign(state, initialState);
3251
+ Object.assign(state, initialState$1);
3243
3252
  });
3244
3253
  },
3245
3254
  reducers: {
@@ -3276,6 +3285,64 @@ var __publicField = (obj, key, value) => {
3276
3285
  })
3277
3286
  );
3278
3287
  const geoImageReducer = geoImageSlice.reducer;
3288
+ const issueAssociationAdapter = createModelAdapter((assoc) => assoc.offline_id);
3289
+ const initialState = issueAssociationAdapter.getInitialState({});
3290
+ const issueAssociationSlice = toolkit.createSlice({
3291
+ name: "issueAssociations",
3292
+ initialState,
3293
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState)),
3294
+ reducers: {
3295
+ initializeIssueAssociations: issueAssociationAdapter.initialize,
3296
+ addIssueAssociation: issueAssociationAdapter.addOne,
3297
+ addIssueAssociations: issueAssociationAdapter.addMany,
3298
+ setIssueAssociation: issueAssociationAdapter.setOne,
3299
+ setIssueAssociations: issueAssociationAdapter.setMany,
3300
+ updateIssueAssociation: issueAssociationAdapter.updateOne,
3301
+ updateIssueAssociations: issueAssociationAdapter.updateMany,
3302
+ deleteIssueAssociation: issueAssociationAdapter.deleteOne,
3303
+ deleteIssueAssociations: issueAssociationAdapter.deleteMany
3304
+ }
3305
+ });
3306
+ const {
3307
+ initializeIssueAssociations,
3308
+ setIssueAssociations,
3309
+ setIssueAssociation,
3310
+ updateIssueAssociation,
3311
+ updateIssueAssociations,
3312
+ addIssueAssociation,
3313
+ addIssueAssociations,
3314
+ deleteIssueAssociation,
3315
+ deleteIssueAssociations
3316
+ } = issueAssociationSlice.actions;
3317
+ const selectIssueAssociationMapping = (state) => state.issueAssociationReducer.instances;
3318
+ const selectIssueAssociationById = (id) => (state) => {
3319
+ return state.issueAssociationReducer.instances[id];
3320
+ };
3321
+ const selectIssueAssociationsToIssue = restructureCreateSelectorWithArgs(
3322
+ toolkit.createSelector(
3323
+ [selectIssueAssociationMapping, (_state, issueId) => issueId],
3324
+ (associationMapping, issueId) => {
3325
+ return Object.values(associationMapping).filter((assoc) => assoc.associated_issue === issueId);
3326
+ }
3327
+ )
3328
+ );
3329
+ const selectIssueAssociationsOfIssue = restructureCreateSelectorWithArgs(
3330
+ toolkit.createSelector(
3331
+ [selectIssueAssociationMapping, (_state, issueId) => issueId],
3332
+ (associationMapping, issueId) => {
3333
+ return Object.values(associationMapping).filter((assoc) => assoc.issue === issueId);
3334
+ }
3335
+ )
3336
+ );
3337
+ const selectIssueAssociationsOfAsset = restructureCreateSelectorWithArgs(
3338
+ toolkit.createSelector(
3339
+ [selectIssueAssociationMapping, (_state, assetId) => assetId],
3340
+ (associationMapping, assetId) => {
3341
+ return Object.values(associationMapping).filter((assoc) => assoc.asset === assetId);
3342
+ }
3343
+ )
3344
+ );
3345
+ const issueAssociationReducer = issueAssociationSlice.reducer;
3279
3346
  const fullAssetMarkerSize = 45;
3280
3347
  const DEFAULT_ISSUE_STATUS = IssueStatus.BACKLOG;
3281
3348
  const DEFAULT_ISSUE_PRIORITY = IssuePriority.MEDIUM;
@@ -3348,7 +3415,8 @@ var __publicField = (obj, key, value) => {
3348
3415
  agentsReducer,
3349
3416
  issueCommentReducer,
3350
3417
  issueUpdateReducer,
3351
- geoImageReducer
3418
+ geoImageReducer,
3419
+ issueAssociationReducer
3352
3420
  };
3353
3421
  const overmapReducer = toolkit.combineReducers(overmapReducers);
3354
3422
  const resetStore = "RESET";
@@ -4139,11 +4207,13 @@ var __publicField = (obj, key, value) => {
4139
4207
  }
4140
4208
  async remove(assetId) {
4141
4209
  const { store } = this.client;
4142
- const assetToBeDeleted = selectAsset(assetId)(store.getState());
4210
+ const state = store.getState();
4211
+ const assetToBeDeleted = selectAsset(assetId)(state);
4143
4212
  if (!assetToBeDeleted)
4144
4213
  throw new Error(`No asset with id ${assetId} found in the store`);
4145
- const attachmentsOfAssets = selectAttachmentsOfAsset(assetId)(store.getState());
4146
- const formSubmissionsOfAssets = selectFormSubmissionsOfAsset(assetId)(store.getState());
4214
+ const attachmentsOfAssets = selectAttachmentsOfAsset(assetId)(state);
4215
+ const formSubmissionsOfAssets = selectFormSubmissionsOfAsset(assetId)(state);
4216
+ const issueAssociations = selectIssueAssociationsOfAsset(assetId)(state);
4147
4217
  this.dispatch(deleteAsset(assetId));
4148
4218
  if (attachmentsOfAssets.length > 0) {
4149
4219
  const attachmentsOfAssetIds = attachmentsOfAssets.map(({ offline_id }) => offline_id);
@@ -4153,6 +4223,10 @@ var __publicField = (obj, key, value) => {
4153
4223
  const formSubmissionsOfAssetIds = formSubmissionsOfAssets.map(({ offline_id }) => offline_id);
4154
4224
  this.dispatch(deleteFormSubmissions(formSubmissionsOfAssetIds));
4155
4225
  }
4226
+ if (issueAssociations.length > 0) {
4227
+ const issueAssociationsIds = issueAssociations.map(({ offline_id }) => offline_id);
4228
+ this.dispatch(deleteIssueAssociations(issueAssociationsIds));
4229
+ }
4156
4230
  return this.enqueueRequest({
4157
4231
  description: "Delete asset",
4158
4232
  method: HttpMethod.DELETE,
@@ -4163,6 +4237,7 @@ var __publicField = (obj, key, value) => {
4163
4237
  this.dispatch(addAsset(assetToBeDeleted));
4164
4238
  this.dispatch(addAssetAttachments(attachmentsOfAssets));
4165
4239
  this.dispatch(addFormSubmissions(formSubmissionsOfAssets));
4240
+ this.dispatch(addIssueAssociations(issueAssociations));
4166
4241
  throw err;
4167
4242
  });
4168
4243
  }
@@ -4610,7 +4685,7 @@ var __publicField = (obj, key, value) => {
4610
4685
  }
4611
4686
  // Note that currently the fetching of attachments for all models dependds on the active projectId. This may change in the future. And
4612
4687
  // so for some attachment model services, this method will have to be overridden.
4613
- async refreshStore(projectId) {
4688
+ async refreshStore(projectId, _organizationId) {
4614
4689
  const meta = AttachmentModelMeta[this.attachmentModel];
4615
4690
  const result = await this.enqueueRequest({
4616
4691
  description: `Get ${meta.name} attachments`,
@@ -5038,6 +5113,12 @@ var __publicField = (obj, key, value) => {
5038
5113
  const attachmentsOfIssue = selectAttachmentsOfIssue(id)(state);
5039
5114
  const updatesOfIssue = selectIssueUpdatesOfIssue(id)(state);
5040
5115
  const formSubmissionsOfIssue = selectFormSubmissionsOfIssue(id)(state);
5116
+ const issueAssociationsRecord = {};
5117
+ for (const issueAssociation of selectIssueAssociationsToIssue(id)(state))
5118
+ issueAssociationsRecord[issueAssociation.offline_id] = issueAssociation;
5119
+ for (const issueAssociation of selectIssueAssociationsOfIssue(id)(state))
5120
+ issueAssociationsRecord[issueAssociation.offline_id] = issueAssociation;
5121
+ const issueAssociations = Object.values(issueAssociationsRecord);
5041
5122
  this.dispatch(deleteIssue(id));
5042
5123
  this.dispatch(addActiveProjectIssuesCount(-1));
5043
5124
  if (attachmentsOfIssue.length > 0)
@@ -5046,6 +5127,8 @@ var __publicField = (obj, key, value) => {
5046
5127
  this.dispatch(deleteIssueUpdates(updatesOfIssue.map(({ offline_id }) => offline_id)));
5047
5128
  if (formSubmissionsOfIssue.length > 0)
5048
5129
  this.dispatch(deleteFormSubmissions(formSubmissionsOfIssue.map(({ offline_id }) => offline_id)));
5130
+ if (issueAssociations.length > 0)
5131
+ this.dispatch(deleteIssueAssociations(issueAssociations.map(({ offline_id }) => offline_id)));
5049
5132
  try {
5050
5133
  return await this.enqueueRequest({
5051
5134
  description: "Delete issue",
@@ -5060,6 +5143,7 @@ var __publicField = (obj, key, value) => {
5060
5143
  this.dispatch(addIssueUpdates(updatesOfIssue));
5061
5144
  this.dispatch(addActiveProjectIssuesCount(1));
5062
5145
  this.dispatch(addFormSubmissions(formSubmissionsOfIssue));
5146
+ this.dispatch(addIssueAssociations(issueAssociations));
5063
5147
  throw e;
5064
5148
  }
5065
5149
  }
@@ -5103,7 +5187,7 @@ var __publicField = (obj, key, value) => {
5103
5187
  offline_id: offlineIssueType.offline_id,
5104
5188
  submitted_at: offlineIssueType.submitted_at,
5105
5189
  icon: offlineIssueType.icon,
5106
- icon_color: offlineIssueType.icon_color,
5190
+ icon_color: offlineIssueType.color,
5107
5191
  name: offlineIssueType.name,
5108
5192
  description: offlineIssueType.description
5109
5193
  },
@@ -5914,6 +5998,25 @@ var __publicField = (obj, key, value) => {
5914
5998
  });
5915
5999
  return [offlineFormSubmissionAttachments, promise.then(({ attachments }) => attachments)];
5916
6000
  }
6001
+ async bulkDeleteSubmissionAttachments(submissionId, attachmentsIds) {
6002
+ const { store } = this.client;
6003
+ const state = store.getState();
6004
+ const formSubmissionAttachments = selectFormSubmissionAttachemntsByIds(attachmentsIds)(state);
6005
+ this.dispatch(deleteFormSubmissionAttachments(attachmentsIds));
6006
+ try {
6007
+ await this.enqueueRequest({
6008
+ description: "Delete form submission attachments",
6009
+ method: HttpMethod.DELETE,
6010
+ url: `/forms/submissions/${submissionId}/attachments/bulk/`,
6011
+ payload: { attachments: attachmentsIds },
6012
+ blockers: [submissionId, ...attachmentsIds],
6013
+ blocks: []
6014
+ });
6015
+ } catch (e) {
6016
+ this.dispatch(addFormSubmissionAttachments(formSubmissionAttachments));
6017
+ throw e;
6018
+ }
6019
+ }
5917
6020
  // Outer promise is for hashing and caching files for submission attachments
5918
6021
  async add(payload) {
5919
6022
  const { store } = this.client;
@@ -6053,10 +6156,64 @@ var __publicField = (obj, key, value) => {
6053
6156
  });
6054
6157
  return batchPromises;
6055
6158
  }
6159
+ async update(payload) {
6160
+ const { store } = this.client;
6161
+ const state = store.getState();
6162
+ const submissionToBeUpdated = selectFormSubmission(payload.offline_id)(state);
6163
+ if (!submissionToBeUpdated) {
6164
+ throw new Error(`Expected submission with offline_id ${payload.offline_id} to exist`);
6165
+ }
6166
+ const { values, files } = separateFilesFromValues(payload.values ?? {});
6167
+ const updatedSubmission = {
6168
+ ...submissionToBeUpdated,
6169
+ ...payload,
6170
+ // values could also have a partial update
6171
+ values: {
6172
+ ...submissionToBeUpdated.values,
6173
+ ...values
6174
+ }
6175
+ };
6176
+ this.dispatch(updateFormSubmission(updatedSubmission));
6177
+ const promise = this.enqueueRequest({
6178
+ description: "Delete user form submissions",
6179
+ method: HttpMethod.PATCH,
6180
+ url: `/forms/submissions/${updatedSubmission.offline_id}/`,
6181
+ payload: updatedSubmission,
6182
+ blockers: [updatedSubmission.offline_id],
6183
+ blocks: [updatedSubmission.offline_id]
6184
+ });
6185
+ const formSubmissionAttachments = selectAttachmentsOfFormSubmission(payload.offline_id)(state);
6186
+ const formSubmissionAttachmentIdsToBeDeleted = [];
6187
+ for (const attachment of formSubmissionAttachments) {
6188
+ if (attachment.field_identifier in files) {
6189
+ formSubmissionAttachmentIdsToBeDeleted.push(attachment.offline_id);
6190
+ }
6191
+ }
6192
+ const [offlineFormSubmissionAttachments, attachmentsPromise] = await this.bulkAddSubmissionAttachments(
6193
+ payload.offline_id,
6194
+ files
6195
+ );
6196
+ const deleteAttachmentsPromise = this.bulkDeleteSubmissionAttachments(
6197
+ payload.offline_id,
6198
+ formSubmissionAttachmentIdsToBeDeleted
6199
+ );
6200
+ promise.then((result) => {
6201
+ this.dispatch(setFormSubmission(result));
6202
+ }).catch(() => {
6203
+ this.dispatch(setFormSubmission(submissionToBeUpdated));
6204
+ });
6205
+ return [
6206
+ updatedSubmission,
6207
+ offlineFormSubmissionAttachments,
6208
+ promise,
6209
+ attachmentsPromise,
6210
+ deleteAttachmentsPromise
6211
+ ];
6212
+ }
6056
6213
  async delete(submissionId) {
6057
6214
  const { store } = this.client;
6058
6215
  const state = store.getState();
6059
- const submissionToBeDeleted = selectFormSubmission(submissionId)(store.getState());
6216
+ const submissionToBeDeleted = selectFormSubmission(submissionId)(state);
6060
6217
  if (!submissionToBeDeleted) {
6061
6218
  throw new Error(`Expected submission with offline_id ${submissionId} to exist`);
6062
6219
  }
@@ -6641,27 +6798,20 @@ var __publicField = (obj, key, value) => {
6641
6798
  }
6642
6799
  }
6643
6800
  class DocumentService extends BaseApiService {
6644
- // TODO: Support adding for project or organization
6645
- add(document2) {
6801
+ add(payload) {
6646
6802
  const { store } = this.client;
6647
6803
  const currentUserId = store.getState().userReducer.currentUser.id;
6648
- const activeProjectId = store.getState().projectReducer.activeProjectId;
6649
- if (!activeProjectId) {
6650
- throw new Error("No active project ID while creating document.");
6651
- }
6652
- const offlineDocument = offline(document2);
6653
- const submittedDocument = {
6654
- ...offlineDocument,
6804
+ const submittedAt = (/* @__PURE__ */ new Date()).toISOString();
6805
+ const offlineDocument = offline({
6806
+ ...payload,
6655
6807
  created_by: currentUserId,
6656
- project: activeProjectId,
6657
- organization: null,
6658
- children_documents: []
6659
- };
6660
- this.dispatch(addDocuments([submittedDocument]));
6808
+ submitted_at: submittedAt
6809
+ });
6810
+ this.dispatch(addDocuments([offlineDocument]));
6661
6811
  const promise = this.enqueueRequest({
6662
6812
  description: "Create Document",
6663
6813
  method: HttpMethod.POST,
6664
- url: `/projects/${activeProjectId}/documents/`,
6814
+ url: "/documents/",
6665
6815
  payload: offlineDocument,
6666
6816
  queryParams: {
6667
6817
  parent_document: offlineDocument.parent_document ?? void 0
@@ -6673,7 +6823,7 @@ var __publicField = (obj, key, value) => {
6673
6823
  promise.catch(() => {
6674
6824
  this.dispatch(removeDocuments([offlineDocument.offline_id]));
6675
6825
  });
6676
- return [submittedDocument, promise];
6826
+ return [offlineDocument, promise];
6677
6827
  }
6678
6828
  update(document2) {
6679
6829
  const { store } = this.client;
@@ -6820,6 +6970,24 @@ var __publicField = (obj, key, value) => {
6820
6970
  async deleteDocumentAttachment(attachmentId) {
6821
6971
  return this.deleteAttachment(attachmentId);
6822
6972
  }
6973
+ async refreshStore(projectId, organizationId) {
6974
+ const projectDocumentAttachments = await this.enqueueRequest({
6975
+ description: "Get document attachments",
6976
+ method: HttpMethod.GET,
6977
+ url: `/projects/${projectId}/document-attachments/`,
6978
+ blocks: [],
6979
+ blockers: []
6980
+ });
6981
+ this.dispatch(this.initializeAttachments(projectDocumentAttachments));
6982
+ const organizationDocumentAttachments = await this.enqueueRequest({
6983
+ description: "Get document attachments",
6984
+ method: HttpMethod.GET,
6985
+ url: `/organizations/${organizationId}/document-attachments/`,
6986
+ blocks: [],
6987
+ blockers: []
6988
+ });
6989
+ this.dispatch(this.addAttachments(organizationDocumentAttachments));
6990
+ }
6823
6991
  }
6824
6992
  class AgentService extends BaseApiService {
6825
6993
  async startConversation(prompt) {
@@ -7233,6 +7401,72 @@ var __publicField = (obj, key, value) => {
7233
7401
  store.dispatch(initializeGeoImages(result));
7234
7402
  }
7235
7403
  }
7404
+ class IssueAssociationService extends BaseUploadService {
7405
+ add(payload) {
7406
+ const { store } = this.client;
7407
+ const submittedAt = (/* @__PURE__ */ new Date()).toISOString();
7408
+ const createdBy = store.getState().userReducer.currentUser.id;
7409
+ const offlineIssueAssociation = offline({
7410
+ ...payload,
7411
+ submitted_at: submittedAt,
7412
+ created_by: createdBy
7413
+ });
7414
+ this.dispatch(addIssueAssociation(offlineIssueAssociation));
7415
+ const promise = this.enqueueRequest({
7416
+ description: "Add issue association",
7417
+ method: HttpMethod.POST,
7418
+ url: "/issues/associations/",
7419
+ payload: {
7420
+ offline_id: offlineIssueAssociation.offline_id,
7421
+ submitted_at: submittedAt,
7422
+ created_by: createdBy,
7423
+ ...payload
7424
+ },
7425
+ blockers: [
7426
+ payload.associated_issue,
7427
+ ...payload.issue ? [payload.issue] : [],
7428
+ ...payload.asset ? [payload.asset] : []
7429
+ ],
7430
+ blocks: [offlineIssueAssociation.offline_id]
7431
+ });
7432
+ promise.then((issueAssociation) => {
7433
+ this.dispatch(updateIssueAssociation(issueAssociation));
7434
+ }).catch(() => {
7435
+ this.dispatch(deleteIssueAssociation(offlineIssueAssociation.offline_id));
7436
+ });
7437
+ return [offlineIssueAssociation, promise];
7438
+ }
7439
+ async delete(id) {
7440
+ const { store } = this.client;
7441
+ const issueAssociation = selectIssueAssociationById(id)(store.getState());
7442
+ if (!issueAssociation) {
7443
+ throw new Error(`Issue association with id ${id} not found in store.`);
7444
+ }
7445
+ this.dispatch(deleteIssueAssociation(id));
7446
+ const promise = this.enqueueRequest({
7447
+ description: "Delete issue association",
7448
+ method: HttpMethod.DELETE,
7449
+ url: `/issues/associations/${id}/`,
7450
+ blockers: [id],
7451
+ blocks: []
7452
+ });
7453
+ promise.catch(() => {
7454
+ this.dispatch(addIssueAssociation(issueAssociation));
7455
+ });
7456
+ return promise;
7457
+ }
7458
+ async refreshStore(projectId) {
7459
+ const issueAssociations = await this.enqueueRequest({
7460
+ description: "Fetch issue associations",
7461
+ method: HttpMethod.GET,
7462
+ url: "/issues/associations/",
7463
+ queryParams: { project_id: projectId.toString() },
7464
+ blockers: [],
7465
+ blocks: []
7466
+ });
7467
+ this.dispatch(initializeIssueAssociations(issueAssociations));
7468
+ }
7469
+ }
7236
7470
  exports2.APIError = APIError;
7237
7471
  exports2.AgentService = AgentService;
7238
7472
  exports2.AssetAttachmentService = AssetAttachmentService;
@@ -7260,6 +7494,7 @@ var __publicField = (obj, key, value) => {
7260
7494
  exports2.GREEN = GREEN;
7261
7495
  exports2.GeoImageService = GeoImageService;
7262
7496
  exports2.HttpMethod = HttpMethod;
7497
+ exports2.IssueAssociationService = IssueAssociationService;
7263
7498
  exports2.IssueAttachmentService = IssueAttachmentService;
7264
7499
  exports2.IssueCommentService = IssueCommentService;
7265
7500
  exports2.IssuePriority = IssuePriority;
@@ -7321,6 +7556,8 @@ var __publicField = (obj, key, value) => {
7321
7556
  exports2.addGeoImage = addGeoImage;
7322
7557
  exports2.addGeoImages = addGeoImages;
7323
7558
  exports2.addIssue = addIssue;
7559
+ exports2.addIssueAssociation = addIssueAssociation;
7560
+ exports2.addIssueAssociations = addIssueAssociations;
7324
7561
  exports2.addIssueAttachment = addIssueAttachment;
7325
7562
  exports2.addIssueAttachments = addIssueAttachments;
7326
7563
  exports2.addIssueComment = addIssueComment;
@@ -7398,6 +7635,8 @@ var __publicField = (obj, key, value) => {
7398
7635
  exports2.deleteGeoImage = deleteGeoImage;
7399
7636
  exports2.deleteGeoImages = deleteGeoImages;
7400
7637
  exports2.deleteIssue = deleteIssue;
7638
+ exports2.deleteIssueAssociation = deleteIssueAssociation;
7639
+ exports2.deleteIssueAssociations = deleteIssueAssociations;
7401
7640
  exports2.deleteIssueAttachment = deleteIssueAttachment;
7402
7641
  exports2.deleteIssueAttachments = deleteIssueAttachments;
7403
7642
  exports2.deleteIssueComment = deleteIssueComment;
@@ -7470,6 +7709,7 @@ var __publicField = (obj, key, value) => {
7470
7709
  exports2.initializeFormSubmissions = initializeFormSubmissions;
7471
7710
  exports2.initializeForms = initializeForms;
7472
7711
  exports2.initializeGeoImages = initializeGeoImages;
7712
+ exports2.initializeIssueAssociations = initializeIssueAssociations;
7473
7713
  exports2.initializeIssueAttachments = initializeIssueAttachments;
7474
7714
  exports2.initializeIssueTypes = initializeIssueTypes;
7475
7715
  exports2.initializeIssueUpdates = initializeIssueUpdates;
@@ -7482,6 +7722,8 @@ var __publicField = (obj, key, value) => {
7482
7722
  exports2.initializeTeams = initializeTeams;
7483
7723
  exports2.initializeWorkspaces = initializeWorkspaces;
7484
7724
  exports2.isToday = isToday;
7725
+ exports2.issueAssociationReducer = issueAssociationReducer;
7726
+ exports2.issueAssociationSlice = issueAssociationSlice;
7485
7727
  exports2.issueAttachmentReducer = issueAttachmentReducer;
7486
7728
  exports2.issueAttachmentSlice = issueAttachmentSlice;
7487
7729
  exports2.issueCommentReducer = issueCommentReducer;
@@ -7617,6 +7859,7 @@ var __publicField = (obj, key, value) => {
7617
7859
  exports2.selectFormRevisions = selectFormRevisions;
7618
7860
  exports2.selectFormRevisionsOfForm = selectFormRevisionsOfForm;
7619
7861
  exports2.selectFormSubmission = selectFormSubmission;
7862
+ exports2.selectFormSubmissionAttachemntsByIds = selectFormSubmissionAttachemntsByIds;
7620
7863
  exports2.selectFormSubmissionAttachmentsMapping = selectFormSubmissionAttachmentsMapping;
7621
7864
  exports2.selectFormSubmissions = selectFormSubmissions;
7622
7865
  exports2.selectFormSubmissionsByAssets = selectFormSubmissionsByAssets;
@@ -7637,6 +7880,11 @@ var __publicField = (obj, key, value) => {
7637
7880
  exports2.selectIsImportingProjectFile = selectIsImportingProjectFile;
7638
7881
  exports2.selectIsLoggedIn = selectIsLoggedIn;
7639
7882
  exports2.selectIssue = selectIssue;
7883
+ exports2.selectIssueAssociationById = selectIssueAssociationById;
7884
+ exports2.selectIssueAssociationMapping = selectIssueAssociationMapping;
7885
+ exports2.selectIssueAssociationsOfAsset = selectIssueAssociationsOfAsset;
7886
+ exports2.selectIssueAssociationsOfIssue = selectIssueAssociationsOfIssue;
7887
+ exports2.selectIssueAssociationsToIssue = selectIssueAssociationsToIssue;
7640
7888
  exports2.selectIssueAttachment = selectIssueAttachment;
7641
7889
  exports2.selectIssueAttachmentMapping = selectIssueAttachmentMapping;
7642
7890
  exports2.selectIssueAttachments = selectIssueAttachments;
@@ -7741,6 +7989,8 @@ var __publicField = (obj, key, value) => {
7741
7989
  exports2.setGeoImages = setGeoImages;
7742
7990
  exports2.setIsFetchingInitialData = setIsFetchingInitialData;
7743
7991
  exports2.setIsImportingProjectFile = setIsImportingProjectFile;
7992
+ exports2.setIssueAssociation = setIssueAssociation;
7993
+ exports2.setIssueAssociations = setIssueAssociations;
7744
7994
  exports2.setIssueAttachment = setIssueAttachment;
7745
7995
  exports2.setIssueAttachments = setIssueAttachments;
7746
7996
  exports2.setIssueComment = setIssueComment;
@@ -7794,6 +8044,8 @@ var __publicField = (obj, key, value) => {
7794
8044
  exports2.updateGeoImage = updateGeoImage;
7795
8045
  exports2.updateGeoImages = updateGeoImages;
7796
8046
  exports2.updateIssue = updateIssue;
8047
+ exports2.updateIssueAssociation = updateIssueAssociation;
8048
+ exports2.updateIssueAssociations = updateIssueAssociations;
7797
8049
  exports2.updateIssueAttachment = updateIssueAttachment;
7798
8050
  exports2.updateIssueAttachments = updateIssueAttachments;
7799
8051
  exports2.updateIssueType = updateIssueType;