@overmap-ai/core 1.0.60-forms-removal.8 → 1.0.60-geo-images.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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$A = {
370
+ const initialState$B = {
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$A,
378
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$A)),
377
+ initialState: initialState$B,
378
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$B)),
379
379
  reducers: {
380
380
  setTokens: (state, action) => {
381
381
  state.accessToken = action.payload.accessToken;
@@ -842,7 +842,7 @@ var __publicField = (obj, key, value) => {
842
842
  };
843
843
  }
844
844
  const categoryAdapter = createModelAdapter((category) => category.offline_id);
845
- const initialState$z = categoryAdapter.getInitialState({
845
+ const initialState$A = categoryAdapter.getInitialState({
846
846
  categoryVisibility: {
847
847
  hiddenCategoryIds: [],
848
848
  isNullCategoryHidden: false
@@ -850,8 +850,8 @@ var __publicField = (obj, key, value) => {
850
850
  });
851
851
  const categorySlice = toolkit.createSlice({
852
852
  name: "categories",
853
- initialState: initialState$z,
854
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$z)),
853
+ initialState: initialState$A,
854
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$A)),
855
855
  reducers: {
856
856
  initializeCategories: (state, action) => {
857
857
  categoryAdapter.initialize(state, action);
@@ -933,13 +933,13 @@ var __publicField = (obj, key, value) => {
933
933
  };
934
934
  const categoryReducer = categorySlice.reducer;
935
935
  const assetTypeAdapter = createModelAdapter((assetType) => assetType.offline_id);
936
- const initialState$y = assetTypeAdapter.getInitialState({
936
+ const initialState$z = assetTypeAdapter.getInitialState({
937
937
  hiddenAssetTypeIds: {}
938
938
  });
939
939
  const assetTypeSlice = toolkit.createSlice({
940
940
  name: "assetTypes",
941
- initialState: initialState$y,
942
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$y)),
941
+ initialState: initialState$z,
942
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$z)),
943
943
  reducers: {
944
944
  initializeAssetTypes: assetTypeAdapter.initialize,
945
945
  addAssetType: assetTypeAdapter.addOne,
@@ -988,11 +988,11 @@ var __publicField = (obj, key, value) => {
988
988
  const selectHiddenAssetTypeIds = (state) => state.assetTypeReducer.hiddenAssetTypeIds;
989
989
  const assetTypeReducer = assetTypeSlice.reducer;
990
990
  const assetAdapter = createModelAdapter((asset) => asset.offline_id);
991
- const initialState$x = assetAdapter.getInitialState({});
991
+ const initialState$y = assetAdapter.getInitialState({});
992
992
  const assetSlice = toolkit.createSlice({
993
993
  name: "assets",
994
- initialState: initialState$x,
995
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$x)),
994
+ initialState: initialState$y,
995
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$y)),
996
996
  reducers: {
997
997
  initializeAssets: (state, action) => {
998
998
  assetAdapter.initialize(state, action);
@@ -1095,11 +1095,11 @@ var __publicField = (obj, key, value) => {
1095
1095
  };
1096
1096
  const assetReducer = assetSlice.reducer;
1097
1097
  const assetAttachmentAdapter = createModelAdapter((attachment) => attachment.offline_id);
1098
- const initialState$w = assetAttachmentAdapter.getInitialState({});
1098
+ const initialState$x = assetAttachmentAdapter.getInitialState({});
1099
1099
  const assetAttachmentSlice = toolkit.createSlice({
1100
1100
  name: "assetAttachments",
1101
- initialState: initialState$w,
1102
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$w)),
1101
+ initialState: initialState$x,
1102
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$x)),
1103
1103
  reducers: {
1104
1104
  initializeAssetAttachments: assetAttachmentAdapter.initialize,
1105
1105
  addAssetAttachment: assetAttachmentAdapter.addOne,
@@ -1157,13 +1157,13 @@ var __publicField = (obj, key, value) => {
1157
1157
  )
1158
1158
  );
1159
1159
  const assetAttachmentReducer = assetAttachmentSlice.reducer;
1160
- const initialState$v = {
1160
+ const initialState$w = {
1161
1161
  completionsByAssetId: {}
1162
1162
  };
1163
1163
  const assetStageCompletionSlice = toolkit.createSlice({
1164
1164
  name: "assetStageCompletions",
1165
- initialState: initialState$v,
1166
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$v)),
1165
+ initialState: initialState$w,
1166
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$w)),
1167
1167
  reducers: {
1168
1168
  addStageCompletion: (state, action) => {
1169
1169
  let stageToCompletionDateMapping = state.completionsByAssetId[action.payload.asset];
@@ -1215,11 +1215,11 @@ var __publicField = (obj, key, value) => {
1215
1215
  );
1216
1216
  const assetStageCompletionReducer = assetStageCompletionSlice.reducer;
1217
1217
  const assetStageAdapter = createModelAdapter((assetStage) => assetStage.offline_id);
1218
- const initialState$u = assetStageAdapter.getInitialState({});
1218
+ const initialState$v = assetStageAdapter.getInitialState({});
1219
1219
  const assetStageSlice = toolkit.createSlice({
1220
1220
  name: "assetStages",
1221
- initialState: initialState$u,
1222
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$u)),
1221
+ initialState: initialState$v,
1222
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$v)),
1223
1223
  reducers: {
1224
1224
  initializeStages: assetStageAdapter.initialize,
1225
1225
  setStage: assetStageAdapter.setOne,
@@ -1300,11 +1300,11 @@ var __publicField = (obj, key, value) => {
1300
1300
  const assetTypeAttachmentAdapter = createModelAdapter(
1301
1301
  (attachment) => attachment.offline_id
1302
1302
  );
1303
- const initialState$t = assetTypeAttachmentAdapter.getInitialState({});
1303
+ const initialState$u = assetTypeAttachmentAdapter.getInitialState({});
1304
1304
  const assetTypeAttachmentSlice = toolkit.createSlice({
1305
1305
  name: "assetTypeAttachments",
1306
- initialState: initialState$t,
1307
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$t)),
1306
+ initialState: initialState$u,
1307
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$u)),
1308
1308
  reducers: {
1309
1309
  initializeAssetTypeAttachments: assetTypeAttachmentAdapter.initialize,
1310
1310
  addAssetTypeAttachment: assetTypeAttachmentAdapter.addOne,
@@ -1363,12 +1363,12 @@ var __publicField = (obj, key, value) => {
1363
1363
  );
1364
1364
  const assetTypeAttachmentReducer = assetTypeAttachmentSlice.reducer;
1365
1365
  const workspaceAdapter = createModelAdapter((workspace) => workspace.offline_id);
1366
- const initialState$s = workspaceAdapter.getInitialState({
1366
+ const initialState$t = workspaceAdapter.getInitialState({
1367
1367
  activeWorkspaceId: null
1368
1368
  });
1369
1369
  const workspaceSlice = toolkit.createSlice({
1370
1370
  name: "workspace",
1371
- initialState: initialState$s,
1371
+ initialState: initialState$t,
1372
1372
  reducers: {
1373
1373
  initializeWorkspaces: workspaceAdapter.initialize,
1374
1374
  setWorkspaces: workspaceAdapter.setMany,
@@ -1421,16 +1421,16 @@ var __publicField = (obj, key, value) => {
1421
1421
  const workspaceReducer = workspaceSlice.reducer;
1422
1422
  const maxRecentIssues = 10;
1423
1423
  const issueAdapter = createModelAdapter((issue) => issue.offline_id);
1424
- const initialState$r = issueAdapter.getInitialState({
1424
+ const initialState$s = issueAdapter.getInitialState({
1425
1425
  visibleStatuses: [IssueStatus.BACKLOG, IssueStatus.SELECTED],
1426
1426
  visibleUserIds: null,
1427
1427
  recentIssueIds: []
1428
1428
  });
1429
1429
  const issueSlice = toolkit.createSlice({
1430
1430
  name: "issues",
1431
- initialState: initialState$r,
1431
+ initialState: initialState$s,
1432
1432
  extraReducers: (builder) => builder.addCase("RESET", (state) => {
1433
- Object.assign(state, initialState$r);
1433
+ Object.assign(state, initialState$s);
1434
1434
  }),
1435
1435
  reducers: {
1436
1436
  initializeIssues: issueAdapter.initialize,
@@ -1627,12 +1627,12 @@ var __publicField = (obj, key, value) => {
1627
1627
  );
1628
1628
  const issueReducer = issueSlice.reducer;
1629
1629
  const issueTypeAdapter = createModelAdapter((issueType) => issueType.offline_id);
1630
- const initialState$q = issueTypeAdapter.getInitialState({});
1630
+ const initialState$r = issueTypeAdapter.getInitialState({});
1631
1631
  const issueTypeSlice = toolkit.createSlice({
1632
1632
  name: "issueTypes",
1633
- initialState: initialState$q,
1633
+ initialState: initialState$r,
1634
1634
  extraReducers: (builder) => builder.addCase("RESET", (state) => {
1635
- Object.assign(state, initialState$q);
1635
+ Object.assign(state, initialState$r);
1636
1636
  }),
1637
1637
  reducers: {
1638
1638
  initializeIssueTypes: issueTypeAdapter.initialize,
@@ -1681,15 +1681,15 @@ var __publicField = (obj, key, value) => {
1681
1681
  return ((_a2 = selectIssuesOfIssueType(issueTypeId)(state)) == null ? void 0 : _a2.length) ?? 0;
1682
1682
  };
1683
1683
  const issueTypeReducer = issueTypeSlice.reducer;
1684
- const initialState$p = {
1684
+ const initialState$q = {
1685
1685
  s3Urls: {}
1686
1686
  };
1687
1687
  const msPerHour = 1e3 * 60 * 60;
1688
1688
  const msPerWeek = msPerHour * 24 * 7;
1689
1689
  const fileSlice = toolkit.createSlice({
1690
1690
  name: "file",
1691
- initialState: initialState$p,
1692
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$p)),
1691
+ initialState: initialState$q,
1692
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$q)),
1693
1693
  reducers: {
1694
1694
  setUploadUrl: (state, action) => {
1695
1695
  const { url, fields, sha1 } = action.payload;
@@ -1770,7 +1770,7 @@ var __publicField = (obj, key, value) => {
1770
1770
  LicenseStatus2[LicenseStatus2["PAST_DUE"] = 8] = "PAST_DUE";
1771
1771
  return LicenseStatus2;
1772
1772
  })(LicenseStatus || {});
1773
- const initialState$o = {
1773
+ const initialState$p = {
1774
1774
  users: {},
1775
1775
  currentUser: {
1776
1776
  id: 0,
@@ -1781,8 +1781,8 @@ var __publicField = (obj, key, value) => {
1781
1781
  };
1782
1782
  const userSlice = toolkit.createSlice({
1783
1783
  name: "users",
1784
- initialState: initialState$o,
1785
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$o)),
1784
+ initialState: initialState$p,
1785
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$p)),
1786
1786
  reducers: {
1787
1787
  setUsers: (state, action) => {
1788
1788
  const usersMapping = {};
@@ -1847,11 +1847,11 @@ var __publicField = (obj, key, value) => {
1847
1847
  const organizationAccessAdapter = createModelAdapter(
1848
1848
  (organizationAccess) => organizationAccess.offline_id
1849
1849
  );
1850
- const initialState$n = organizationAccessAdapter.getInitialState({});
1850
+ const initialState$o = organizationAccessAdapter.getInitialState({});
1851
1851
  const organizationAccessSlice = toolkit.createSlice({
1852
1852
  name: "organizationAccess",
1853
- initialState: initialState$n,
1854
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$n)),
1853
+ initialState: initialState$o,
1854
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$o)),
1855
1855
  reducers: {
1856
1856
  initializeOrganizationAccesses: organizationAccessAdapter.initialize,
1857
1857
  updateOrganizationAccess: organizationAccessAdapter.updateOne,
@@ -1888,11 +1888,11 @@ var __publicField = (obj, key, value) => {
1888
1888
  };
1889
1889
  const organizationAccessReducer = organizationAccessSlice.reducer;
1890
1890
  const licenseAdapter = createModelAdapter((license) => license.offline_id);
1891
- const initialState$m = licenseAdapter.getInitialState({});
1891
+ const initialState$n = licenseAdapter.getInitialState({});
1892
1892
  const licenseSlice = toolkit.createSlice({
1893
1893
  name: "license",
1894
- initialState: initialState$m,
1895
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$m)),
1894
+ initialState: initialState$n,
1895
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$n)),
1896
1896
  reducers: {
1897
1897
  setLicenses: licenseAdapter.initialize,
1898
1898
  addLicenses: licenseAdapter.addMany,
@@ -1918,11 +1918,11 @@ var __publicField = (obj, key, value) => {
1918
1918
  );
1919
1919
  const licenseReducer = licenseSlice.reducer;
1920
1920
  const projectAccessAdapter = createModelAdapter((projectAccess) => projectAccess.offline_id);
1921
- const initialState$l = projectAccessAdapter.getInitialState({});
1921
+ const initialState$m = projectAccessAdapter.getInitialState({});
1922
1922
  const projectAccessSlice = toolkit.createSlice({
1923
1923
  name: "projectAccess",
1924
- initialState: initialState$l,
1925
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$l)),
1924
+ initialState: initialState$m,
1925
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$m)),
1926
1926
  reducers: {
1927
1927
  setProjectAccesses: projectAccessAdapter.initialize,
1928
1928
  updateProjectAccess: projectAccessAdapter.updateOne,
@@ -1968,7 +1968,7 @@ var __publicField = (obj, key, value) => {
1968
1968
  return projectAccesses;
1969
1969
  };
1970
1970
  const projectAccessReducer = projectAccessSlice.reducer;
1971
- const initialState$k = {
1971
+ const initialState$l = {
1972
1972
  projects: {},
1973
1973
  activeProjectId: null,
1974
1974
  recentProjectIds: [],
@@ -1976,7 +1976,7 @@ var __publicField = (obj, key, value) => {
1976
1976
  };
1977
1977
  const projectSlice = toolkit.createSlice({
1978
1978
  name: "projects",
1979
- initialState: initialState$k,
1979
+ initialState: initialState$l,
1980
1980
  reducers: {
1981
1981
  setProjects: (state, action) => {
1982
1982
  const projectsMap = {};
@@ -2105,14 +2105,14 @@ var __publicField = (obj, key, value) => {
2105
2105
  });
2106
2106
  }
2107
2107
  );
2108
- const initialState$j = {
2108
+ const initialState$k = {
2109
2109
  organizations: {},
2110
2110
  activeOrganizationId: null
2111
2111
  };
2112
2112
  const organizationSlice = toolkit.createSlice({
2113
2113
  name: "organizations",
2114
- initialState: initialState$j,
2115
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$j)),
2114
+ initialState: initialState$k,
2115
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$k)),
2116
2116
  reducers: {
2117
2117
  setOrganizations: (state, action) => {
2118
2118
  for (const org of action.payload) {
@@ -2232,14 +2232,14 @@ var __publicField = (obj, key, value) => {
2232
2232
  }
2233
2233
  };
2234
2234
  };
2235
- const initialState$i = {
2235
+ const initialState$j = {
2236
2236
  deletedRequests: [],
2237
2237
  latestRetryTime: 0
2238
2238
  };
2239
2239
  const outboxSlice = toolkit.createSlice({
2240
2240
  name: "outbox",
2241
- initialState: initialState$i,
2242
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$i)),
2241
+ initialState: initialState$j,
2242
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$j)),
2243
2243
  reducers: {
2244
2244
  // enqueueActions is a reducer that does nothing but enqueue API request to the Redux Offline outbox
2245
2245
  // Whenever an issue is being created, a reducer addIssue() is responsible for adding it to the offline store
@@ -2271,7 +2271,7 @@ var __publicField = (obj, key, value) => {
2271
2271
  const selectLatestRetryTime = (state) => state.outboxReducer.latestRetryTime;
2272
2272
  const { enqueueRequest, markForDeletion, markAsDeleted, _setLatestRetryTime } = outboxSlice.actions;
2273
2273
  const outboxReducer = outboxSlice.reducer;
2274
- const initialState$h = {
2274
+ const initialState$i = {
2275
2275
  projectFiles: {},
2276
2276
  activeProjectFileId: null,
2277
2277
  isImportingProjectFile: false,
@@ -2279,8 +2279,8 @@ var __publicField = (obj, key, value) => {
2279
2279
  };
2280
2280
  const projectFileSlice = toolkit.createSlice({
2281
2281
  name: "projectFiles",
2282
- initialState: initialState$h,
2283
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$h)),
2282
+ initialState: initialState$i,
2283
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$i)),
2284
2284
  reducers: {
2285
2285
  addOrReplaceProjectFiles: (state, action) => {
2286
2286
  for (let fileObj of action.payload) {
@@ -2382,11 +2382,11 @@ var __publicField = (obj, key, value) => {
2382
2382
  const selectIsImportingProjectFile = (state) => state.projectFileReducer.isImportingProjectFile;
2383
2383
  const projectFileReducer = projectFileSlice.reducer;
2384
2384
  const projectAttachmentAdapter = createModelAdapter((attachment) => attachment.offline_id);
2385
- const initialState$g = projectAttachmentAdapter.getInitialState({});
2385
+ const initialState$h = projectAttachmentAdapter.getInitialState({});
2386
2386
  const projectAttachmentSlice = toolkit.createSlice({
2387
2387
  name: "projectAttachments",
2388
- initialState: initialState$g,
2389
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$g)),
2388
+ initialState: initialState$h,
2389
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$h)),
2390
2390
  reducers: {
2391
2391
  initializeProjectAttachments: projectAttachmentAdapter.initialize,
2392
2392
  addProjectAttachment: projectAttachmentAdapter.addOne,
@@ -2444,12 +2444,12 @@ var __publicField = (obj, key, value) => {
2444
2444
  )
2445
2445
  );
2446
2446
  const projectAttachmentReducer = projectAttachmentSlice.reducer;
2447
- const initialState$f = {
2447
+ const initialState$g = {
2448
2448
  isRehydrated: false
2449
2449
  };
2450
2450
  const rehydratedSlice = toolkit.createSlice({
2451
2451
  name: "rehydrated",
2452
- initialState: initialState$f,
2452
+ initialState: initialState$g,
2453
2453
  // The `reducers` field lets us define reducers and generate associated actions
2454
2454
  reducers: {
2455
2455
  setRehydrated: (state, action) => {
@@ -2460,13 +2460,13 @@ var __publicField = (obj, key, value) => {
2460
2460
  const { setRehydrated } = rehydratedSlice.actions;
2461
2461
  const selectRehydrated = (state) => state.rehydratedReducer.isRehydrated;
2462
2462
  const rehydratedReducer = rehydratedSlice.reducer;
2463
- const initialState$e = {
2463
+ const initialState$f = {
2464
2464
  isFetchingInitialData: false
2465
2465
  };
2466
2466
  const settingSlice = toolkit.createSlice({
2467
2467
  name: "settings",
2468
- initialState: initialState$e,
2469
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$e)),
2468
+ initialState: initialState$f,
2469
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$f)),
2470
2470
  reducers: {
2471
2471
  setIsFetchingInitialData: (state, action) => {
2472
2472
  state.isFetchingInitialData = action.payload;
@@ -2490,11 +2490,11 @@ var __publicField = (obj, key, value) => {
2490
2490
  }
2491
2491
  };
2492
2492
  const formRevisionAdapter = createModelAdapter((revision) => revision.offline_id);
2493
- const initialState$d = formRevisionAdapter.getInitialState({});
2493
+ const initialState$e = formRevisionAdapter.getInitialState({});
2494
2494
  const formRevisionsSlice = toolkit.createSlice({
2495
2495
  name: "formRevisions",
2496
- initialState: initialState$d,
2497
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$d)),
2496
+ initialState: initialState$e,
2497
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$e)),
2498
2498
  reducers: {
2499
2499
  initializeFormRevisions: formRevisionAdapter.initialize,
2500
2500
  setFormRevision: formRevisionAdapter.setOne,
@@ -2534,7 +2534,8 @@ var __publicField = (obj, key, value) => {
2534
2534
  };
2535
2535
  const selectLatestFormRevisionOfForm = restructureCreateSelectorWithArgs(
2536
2536
  toolkit.createSelector([selectFormRevisions, (_state, formId) => formId], (revisions, formId) => {
2537
- return revisions.filter((revision) => revision.form === formId).sort(formRevisionSortFn).pop();
2537
+ const sortedRevisions = revisions.filter((revision) => revision.form === formId).sort(formRevisionSortFn).reverse();
2538
+ return sortedRevisions.length > 0 ? sortedRevisions[0] : void 0;
2538
2539
  })
2539
2540
  );
2540
2541
  const selectFormRevisionsOfForm = restructureCreateSelectorWithArgs(
@@ -2586,11 +2587,11 @@ var __publicField = (obj, key, value) => {
2586
2587
  });
2587
2588
  const formRevisionReducer = formRevisionsSlice.reducer;
2588
2589
  const formAdapter = createModelAdapter((form) => form.offline_id);
2589
- const initialState$c = formAdapter.getInitialState({});
2590
+ const initialState$d = formAdapter.getInitialState({});
2590
2591
  const formSlice = toolkit.createSlice({
2591
2592
  name: "forms",
2592
- initialState: initialState$c,
2593
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$c)),
2593
+ initialState: initialState$d,
2594
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$d)),
2594
2595
  reducers: {
2595
2596
  setForms: formAdapter.initialize,
2596
2597
  setForm: formAdapter.setOne,
@@ -2672,11 +2673,11 @@ var __publicField = (obj, key, value) => {
2672
2673
  });
2673
2674
  const formReducer = formSlice.reducer;
2674
2675
  const submissionAdapter = createModelAdapter((submission) => submission.offline_id);
2675
- const initialState$b = submissionAdapter.getInitialState({});
2676
+ const initialState$c = submissionAdapter.getInitialState({});
2676
2677
  const formSubmissionSlice = toolkit.createSlice({
2677
2678
  name: "formSubmissions",
2678
- initialState: initialState$b,
2679
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$b)),
2679
+ initialState: initialState$c,
2680
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$c)),
2680
2681
  reducers: {
2681
2682
  setFormSubmission: submissionAdapter.setOne,
2682
2683
  setFormSubmissions: submissionAdapter.setMany,
@@ -2814,11 +2815,11 @@ var __publicField = (obj, key, value) => {
2814
2815
  const formSubmissionAttachmentAdapter = createModelAdapter(
2815
2816
  (attachment) => attachment.offline_id
2816
2817
  );
2817
- const initialState$a = formSubmissionAttachmentAdapter.getInitialState({});
2818
+ const initialState$b = formSubmissionAttachmentAdapter.getInitialState({});
2818
2819
  const formSubmissionAttachmentSlice = toolkit.createSlice({
2819
2820
  name: "formSubmissionAttachments",
2820
- initialState: initialState$a,
2821
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$a)),
2821
+ initialState: initialState$b,
2822
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$b)),
2822
2823
  reducers: {
2823
2824
  initializeFormSubmissionAttachments: formSubmissionAttachmentAdapter.initialize,
2824
2825
  addFormSubmissionAttachment: formSubmissionAttachmentAdapter.addOne,
@@ -2857,11 +2858,11 @@ var __publicField = (obj, key, value) => {
2857
2858
  const formRevisionAttachmentAdapter = createModelAdapter(
2858
2859
  (attachment) => attachment.offline_id
2859
2860
  );
2860
- const initialState$9 = formRevisionAttachmentAdapter.getInitialState({});
2861
+ const initialState$a = formRevisionAttachmentAdapter.getInitialState({});
2861
2862
  const formRevisionAttachmentSlice = toolkit.createSlice({
2862
2863
  name: "formRevisionAttachments",
2863
- initialState: initialState$9,
2864
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$9)),
2864
+ initialState: initialState$a,
2865
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$a)),
2865
2866
  reducers: {
2866
2867
  initializeFormRevisionAttachments: formRevisionAttachmentAdapter.initialize,
2867
2868
  addFormRevisionAttachment: formRevisionAttachmentAdapter.addOne,
@@ -2898,10 +2899,10 @@ var __publicField = (obj, key, value) => {
2898
2899
  );
2899
2900
  const formRevisionAttachmentReducer = formRevisionAttachmentSlice.reducer;
2900
2901
  const emailDomainAdapter = createModelAdapter((emailDomain) => emailDomain.offline_id);
2901
- const initialState$8 = emailDomainAdapter.getInitialState({});
2902
+ const initialState$9 = emailDomainAdapter.getInitialState({});
2902
2903
  const emailDomainsSlice = toolkit.createSlice({
2903
2904
  name: "emailDomains",
2904
- initialState: initialState$8,
2905
+ initialState: initialState$9,
2905
2906
  reducers: {
2906
2907
  initializeEmailDomains: emailDomainAdapter.initialize,
2907
2908
  addEmailDomain: emailDomainAdapter.addOne,
@@ -2920,14 +2921,14 @@ var __publicField = (obj, key, value) => {
2920
2921
  )
2921
2922
  );
2922
2923
  const emailDomainsReducer = emailDomainsSlice.reducer;
2923
- const initialState$7 = {
2924
+ const initialState$8 = {
2924
2925
  documents: {}
2925
2926
  };
2926
2927
  const documentSlice = toolkit.createSlice({
2927
2928
  name: "documents",
2928
- initialState: initialState$7,
2929
+ initialState: initialState$8,
2929
2930
  extraReducers: (builder) => builder.addCase("RESET", (state) => {
2930
- Object.assign(state, initialState$7);
2931
+ Object.assign(state, initialState$8);
2931
2932
  }),
2932
2933
  reducers: {
2933
2934
  setDocuments: (state, action) => {
@@ -3102,11 +3103,11 @@ var __publicField = (obj, key, value) => {
3102
3103
  );
3103
3104
  const documentsReducer = documentSlice.reducer;
3104
3105
  const documentAttachmentAdapter = createModelAdapter((attachment) => attachment.offline_id);
3105
- const initialState$6 = documentAttachmentAdapter.getInitialState({});
3106
+ const initialState$7 = documentAttachmentAdapter.getInitialState({});
3106
3107
  const documentAttachmentSlice = toolkit.createSlice({
3107
3108
  name: "documentAttachments",
3108
- initialState: initialState$6,
3109
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$6)),
3109
+ initialState: initialState$7,
3110
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$7)),
3110
3111
  reducers: {
3111
3112
  initializeDocumentAttachments: documentAttachmentAdapter.initialize,
3112
3113
  addDocumentAttachment: documentAttachmentAdapter.addOne,
@@ -3165,11 +3166,11 @@ var __publicField = (obj, key, value) => {
3165
3166
  );
3166
3167
  const documentAttachmentReducer = documentAttachmentSlice.reducer;
3167
3168
  const teamAdapter = createModelAdapter((team) => team.offline_id);
3168
- const initialState$5 = teamAdapter.getInitialState({});
3169
+ const initialState$6 = teamAdapter.getInitialState({});
3169
3170
  const teamSlice = toolkit.createSlice({
3170
3171
  name: "teams",
3171
- initialState: initialState$5,
3172
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$5)),
3172
+ initialState: initialState$6,
3173
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$6)),
3173
3174
  reducers: {
3174
3175
  setTeam: teamAdapter.setOne,
3175
3176
  setTeams: teamAdapter.initialize,
@@ -3203,11 +3204,11 @@ var __publicField = (obj, key, value) => {
3203
3204
  const agentUserConversationAdapter = createModelAdapter(
3204
3205
  (conversation) => conversation.offline_id
3205
3206
  );
3206
- const initialState$4 = agentUserConversationAdapter.getInitialState({});
3207
+ const initialState$5 = agentUserConversationAdapter.getInitialState({});
3207
3208
  const agentsSlice = toolkit.createSlice({
3208
3209
  name: "agents",
3209
- initialState: initialState$4,
3210
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$4)),
3210
+ initialState: initialState$5,
3211
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$5)),
3211
3212
  reducers: {
3212
3213
  initializeConversations: agentUserConversationAdapter.initialize,
3213
3214
  addConversation: agentUserConversationAdapter.addOne,
@@ -3229,11 +3230,11 @@ var __publicField = (obj, key, value) => {
3229
3230
  );
3230
3231
  const agentsReducer = agentsSlice.reducer;
3231
3232
  const issueCommentAdapter = createModelAdapter((comment) => comment.offline_id);
3232
- const initialState$3 = issueCommentAdapter.getInitialState({});
3233
+ const initialState$4 = issueCommentAdapter.getInitialState({});
3233
3234
  const issueCommentSlice = toolkit.createSlice({
3234
3235
  name: "issueComments",
3235
- initialState: initialState$3,
3236
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$3)),
3236
+ initialState: initialState$4,
3237
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$4)),
3237
3238
  reducers: {
3238
3239
  addIssueComment: issueCommentAdapter.addOne,
3239
3240
  addIssueComments: issueCommentAdapter.addMany,
@@ -3262,11 +3263,11 @@ var __publicField = (obj, key, value) => {
3262
3263
  );
3263
3264
  const issueCommentReducer = issueCommentSlice.reducer;
3264
3265
  const issueUpdateAdapter = createModelAdapter((issueUpdate) => issueUpdate.offline_id);
3265
- const initialState$2 = issueUpdateAdapter.getInitialState({});
3266
+ const initialState$3 = issueUpdateAdapter.getInitialState({});
3266
3267
  const issueUpdateSlice = toolkit.createSlice({
3267
3268
  name: "issueUpdates",
3268
- initialState: initialState$2,
3269
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$2)),
3269
+ initialState: initialState$3,
3270
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$3)),
3270
3271
  reducers: {
3271
3272
  initializeIssueUpdates: issueUpdateAdapter.setMany,
3272
3273
  setIssueUpdate: issueUpdateAdapter.setOne,
@@ -3295,11 +3296,11 @@ var __publicField = (obj, key, value) => {
3295
3296
  );
3296
3297
  const issueUpdateReducer = issueUpdateSlice.reducer;
3297
3298
  const issueAttachmentAdapter = createModelAdapter((attachment) => attachment.offline_id);
3298
- const initialState$1 = issueAttachmentAdapter.getInitialState({});
3299
+ const initialState$2 = issueAttachmentAdapter.getInitialState({});
3299
3300
  const issueAttachmentSlice = toolkit.createSlice({
3300
3301
  name: "issueAttachments",
3301
- initialState: initialState$1,
3302
- extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$1)),
3302
+ initialState: initialState$2,
3303
+ extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$2)),
3303
3304
  reducers: {
3304
3305
  initializeIssueAttachments: issueAttachmentAdapter.initialize,
3305
3306
  addIssueAttachment: issueAttachmentAdapter.addOne,
@@ -3357,15 +3358,59 @@ var __publicField = (obj, key, value) => {
3357
3358
  )
3358
3359
  );
3359
3360
  const issueAttachmentReducer = issueAttachmentSlice.reducer;
3360
- const initialState = {
3361
+ const initialState$1 = {
3361
3362
  version: 0
3362
3363
  };
3363
3364
  const versioningSlice = toolkit.createSlice({
3364
3365
  name: "versioning",
3365
- initialState,
3366
+ initialState: initialState$1,
3366
3367
  reducers: {}
3367
3368
  });
3368
3369
  const versioningReducer = versioningSlice.reducer;
3370
+ const geoImageAdapter = createModelAdapter((model) => model.offline_id);
3371
+ const initialState = geoImageAdapter.getInitialState({});
3372
+ const geoImageSlice = toolkit.createSlice({
3373
+ name: "geoImages",
3374
+ initialState,
3375
+ extraReducers: (builder) => {
3376
+ builder.addCase("RESET", (state) => {
3377
+ Object.assign(state, initialState);
3378
+ });
3379
+ },
3380
+ reducers: {
3381
+ initializeGeoImages: geoImageAdapter.initialize,
3382
+ setGeoImage: geoImageAdapter.setOne,
3383
+ setGeoImages: geoImageAdapter.setMany,
3384
+ addGeoImage: geoImageAdapter.addOne,
3385
+ addGeoImages: geoImageAdapter.addMany,
3386
+ updateGeoImage: geoImageAdapter.updateOne,
3387
+ updateGeoImages: geoImageAdapter.updateMany,
3388
+ deleteGeoImage: geoImageAdapter.deleteOne,
3389
+ deleteGeoImages: geoImageAdapter.deleteMany
3390
+ }
3391
+ });
3392
+ const {
3393
+ initializeGeoImages,
3394
+ setGeoImage,
3395
+ setGeoImages,
3396
+ addGeoImage,
3397
+ addGeoImages,
3398
+ updateGeoImage,
3399
+ updateGeoImages,
3400
+ deleteGeoImage,
3401
+ deleteGeoImages
3402
+ } = geoImageSlice.actions;
3403
+ const selectGeoImageMapping = (state) => state.geoImageReducer.instances;
3404
+ const selectGeoImages = (state) => Object.values(state.geoImageReducer.instances);
3405
+ const selectGeoImageById = restructureCreateSelectorWithArgs(
3406
+ toolkit.createSelector([selectGeoImageMapping, (_, id) => id], (mapImageMapping, id) => mapImageMapping[id])
3407
+ );
3408
+ const selectGeoImagesOfProject = restructureCreateSelectorWithArgs(
3409
+ toolkit.createSelector([selectGeoImages, (_, projectId) => projectId], (mapImages, projectId) => {
3410
+ return mapImages.filter((mapImage) => mapImage.project === projectId);
3411
+ })
3412
+ );
3413
+ const geoImageReducer = geoImageSlice.reducer;
3369
3414
  const fullAssetMarkerSize = 45;
3370
3415
  const DEFAULT_ISSUE_STATUS = IssueStatus.BACKLOG;
3371
3416
  const DEFAULT_ISSUE_PRIORITY = IssuePriority.MEDIUM;
@@ -3437,7 +3482,8 @@ var __publicField = (obj, key, value) => {
3437
3482
  teamReducer,
3438
3483
  agentsReducer,
3439
3484
  issueCommentReducer,
3440
- issueUpdateReducer
3485
+ issueUpdateReducer,
3486
+ geoImageReducer
3441
3487
  };
3442
3488
  const overmapReducer = toolkit.combineReducers(overmapReducers);
3443
3489
  const resetStore = "RESET";
@@ -4537,39 +4583,7 @@ var __publicField = (obj, key, value) => {
4537
4583
  this.dispatch(initializeStages(result));
4538
4584
  }
4539
4585
  }
4540
- const AttachmentModelMeta = {
4541
- [AttachmentModel.Issue]: {
4542
- name: "issue",
4543
- attachUrlPrefix: "/issues",
4544
- deleteUrlPrefix: "/issues",
4545
- fetchUrlPostfix: "/issue-attachments"
4546
- },
4547
- [AttachmentModel.Asset]: {
4548
- name: "asset",
4549
- attachUrlPrefix: "/assets",
4550
- deleteUrlPrefix: "/assets",
4551
- fetchUrlPostfix: "/asset-attachments"
4552
- },
4553
- [AttachmentModel.AssetType]: {
4554
- name: "asset type",
4555
- attachUrlPrefix: "/assets/types",
4556
- deleteUrlPrefix: "/assets/types",
4557
- fetchUrlPostfix: "/asset-type-attachments"
4558
- },
4559
- [AttachmentModel.Project]: {
4560
- name: "project",
4561
- attachUrlPrefix: "/projects",
4562
- deleteUrlPrefix: "/projects",
4563
- fetchUrlPostfix: "/attachments"
4564
- },
4565
- [AttachmentModel.Document]: {
4566
- name: "document",
4567
- attachUrlPrefix: "/documents",
4568
- deleteUrlPrefix: "/documents",
4569
- fetchUrlPostfix: "/document-attachments"
4570
- }
4571
- };
4572
- class BaseAttachmentService extends BaseApiService {
4586
+ class BaseUploadService extends BaseApiService {
4573
4587
  getNumberOfAttachmentsWithSha1(sha1) {
4574
4588
  const {
4575
4589
  issueAttachmentReducer: issueAttachmentReducer2,
@@ -4577,8 +4591,9 @@ var __publicField = (obj, key, value) => {
4577
4591
  assetTypeAttachmentReducer: assetTypeAttachmentReducer2,
4578
4592
  documentAttachmentReducer: documentAttachmentReducer2,
4579
4593
  projectAttachmentReducer: projectAttachmentReducer2,
4594
+ formRevisionAttachmentReducer: formRevisionAttachmentReducer2,
4580
4595
  formSubmissionAttachmentReducer: formSubmissionAttachmentReducer2,
4581
- formRevisionAttachmentReducer: formRevisionAttachmentReducer2
4596
+ geoImageReducer: geoImageReducer2
4582
4597
  } = this.client.store.getState();
4583
4598
  const objectsWithSha1 = [].concat(
4584
4599
  Object.values(issueAttachmentReducer2.instances),
@@ -4587,7 +4602,8 @@ var __publicField = (obj, key, value) => {
4587
4602
  Object.values(documentAttachmentReducer2.instances),
4588
4603
  Object.values(projectAttachmentReducer2.instances),
4589
4604
  Object.values(formRevisionAttachmentReducer2.instances),
4590
- Object.values(formSubmissionAttachmentReducer2.instances)
4605
+ Object.values(formSubmissionAttachmentReducer2.instances),
4606
+ Object.values(geoImageReducer2.instances)
4591
4607
  );
4592
4608
  return objectsWithSha1.filter((object) => object.file_sha1 === sha1).length;
4593
4609
  }
@@ -4607,6 +4623,40 @@ var __publicField = (obj, key, value) => {
4607
4623
  });
4608
4624
  }
4609
4625
  }
4626
+ }
4627
+ const AttachmentModelMeta = {
4628
+ [AttachmentModel.Issue]: {
4629
+ name: "issue",
4630
+ attachUrlPrefix: "/issues",
4631
+ deleteUrlPrefix: "/issues",
4632
+ fetchUrlPostfix: "/issue-attachments"
4633
+ },
4634
+ [AttachmentModel.Asset]: {
4635
+ name: "asset",
4636
+ attachUrlPrefix: "/assets",
4637
+ deleteUrlPrefix: "/assets",
4638
+ fetchUrlPostfix: "/asset-attachments"
4639
+ },
4640
+ [AttachmentModel.AssetType]: {
4641
+ name: "asset type",
4642
+ attachUrlPrefix: "/assets/types",
4643
+ deleteUrlPrefix: "/assets/types",
4644
+ fetchUrlPostfix: "/asset-type-attachments"
4645
+ },
4646
+ [AttachmentModel.Project]: {
4647
+ name: "project",
4648
+ attachUrlPrefix: "/projects",
4649
+ deleteUrlPrefix: "/projects",
4650
+ fetchUrlPostfix: "/attachments"
4651
+ },
4652
+ [AttachmentModel.Document]: {
4653
+ name: "document",
4654
+ attachUrlPrefix: "/documents",
4655
+ deleteUrlPrefix: "/documents",
4656
+ fetchUrlPostfix: "/document-attachments"
4657
+ }
4658
+ };
4659
+ class BaseAttachmentService extends BaseUploadService {
4610
4660
  async attachFiles(files, modelId, buildOfflineAttachment) {
4611
4661
  const { store } = this.client;
4612
4662
  const currentUser = store.getState().userReducer.currentUser;
@@ -5897,7 +5947,7 @@ var __publicField = (obj, key, value) => {
5897
5947
  }
5898
5948
  return { values: newValues, files };
5899
5949
  };
5900
- class UserFormSubmissionService extends BaseApiService {
5950
+ class UserFormSubmissionService extends BaseUploadService {
5901
5951
  constructor() {
5902
5952
  super(...arguments);
5903
5953
  // Attach files to submission, after uploading them to S3
@@ -5978,7 +6028,6 @@ var __publicField = (obj, key, value) => {
5978
6028
  // TODO: adapt the support bulk adding to any model type
5979
6029
  async bulkAdd(args, batchSize) {
5980
6030
  const { formRevision, commonFieldValues, fieldValuesByAsset } = args;
5981
- const allFilesRecord = {};
5982
6031
  const { values: fileSeperatedCommonFieldValues, files: commonFiles } = separateFilesFromValues(commonFieldValues);
5983
6032
  const submittedAt = (/* @__PURE__ */ new Date()).toISOString();
5984
6033
  const transactionId = uuid.v4();
@@ -6020,7 +6069,6 @@ var __publicField = (obj, key, value) => {
6020
6069
  file_type: file.type,
6021
6070
  size: file.size
6022
6071
  };
6023
- allFilesRecord[sha1] = filePayload;
6024
6072
  filePaylods.push(filePayload);
6025
6073
  }
6026
6074
  return {
@@ -6056,22 +6104,7 @@ var __publicField = (obj, key, value) => {
6056
6104
  blocks: blocks2
6057
6105
  });
6058
6106
  void promise.then(({ presigned_urls }) => {
6059
- for (const [sha1, presignedUrl] of Object.entries(presigned_urls)) {
6060
- const file = allFilesRecord[sha1];
6061
- if (!file)
6062
- continue;
6063
- void this.enqueueRequest({
6064
- url: presignedUrl.url,
6065
- description: "Upload file",
6066
- method: HttpMethod.POST,
6067
- isExternalUrl: true,
6068
- isAuthNeeded: false,
6069
- attachmentHash: sha1,
6070
- blockers: [`s3-${file.sha1}.${file.extension}`],
6071
- blocks: [sha1],
6072
- s3url: presignedUrl
6073
- });
6074
- }
6107
+ this.processPresignedUrls(presigned_urls);
6075
6108
  });
6076
6109
  prevBatchId = batchId;
6077
6110
  batchPromises.push(promise);
@@ -7131,6 +7164,178 @@ var __publicField = (obj, key, value) => {
7131
7164
  this.dispatch(setUsers(Object.values(usersRecord)));
7132
7165
  }
7133
7166
  }
7167
+ class GeoImageService extends BaseUploadService {
7168
+ async add(payload, file) {
7169
+ const { store } = this.client;
7170
+ const submittedAt = (/* @__PURE__ */ new Date()).toISOString();
7171
+ const currentUser = store.getState().userReducer.currentUser;
7172
+ const projectId = payload.project;
7173
+ const sha1 = await hashFile(file);
7174
+ const filePayload = {
7175
+ sha1,
7176
+ file_type: file.type,
7177
+ extension: file.name.split(".").pop(),
7178
+ size: file.size
7179
+ };
7180
+ const offlineMapImage = offline({
7181
+ ...payload,
7182
+ file_name: file.name,
7183
+ file_sha1: sha1,
7184
+ file: URL.createObjectURL(file),
7185
+ submitted_at: submittedAt,
7186
+ created_by: currentUser.id
7187
+ });
7188
+ store.dispatch(addGeoImage(offlineMapImage));
7189
+ const promise = this.enqueueRequest({
7190
+ description: "Add geo image",
7191
+ method: HttpMethod.POST,
7192
+ url: "/geo-images/",
7193
+ payload: {
7194
+ offline_id: offlineMapImage.offline_id,
7195
+ submitted_at: submittedAt,
7196
+ title: offlineMapImage.title,
7197
+ description: offlineMapImage.description,
7198
+ geo_marker: offlineMapImage.geo_marker,
7199
+ canvas_marker: offlineMapImage.canvas_marker,
7200
+ sha1: offlineMapImage.file_sha1,
7201
+ project: offlineMapImage.project,
7202
+ file_name: offlineMapImage.file_name,
7203
+ direction: offlineMapImage.direction,
7204
+ original_date: offlineMapImage.original_date,
7205
+ file: filePayload
7206
+ },
7207
+ blocks: [projectId.toString()],
7208
+ blockers: [projectId.toString()]
7209
+ });
7210
+ promise.then((result) => {
7211
+ this.processPresignedUrls(result.presigned_urls);
7212
+ store.dispatch(setGeoImage(result.geo_image));
7213
+ }).catch(() => {
7214
+ store.dispatch(deleteGeoImage(offlineMapImage.offline_id));
7215
+ });
7216
+ return [offlineMapImage, promise.then((result) => result.geo_image)];
7217
+ }
7218
+ async bulkAdd(payloadAndFiles, projectId) {
7219
+ const { store } = this.client;
7220
+ const submittedAt = (/* @__PURE__ */ new Date()).toISOString();
7221
+ const currentUser = store.getState().userReducer.currentUser;
7222
+ const offlineMapImages = [];
7223
+ const mapImageOfflineIds = [];
7224
+ const mapImagePayloads = [];
7225
+ const filePayloadRecord = {};
7226
+ for (const payloadAndFile of payloadAndFiles) {
7227
+ const { payload, file } = payloadAndFile;
7228
+ const sha1 = await hashFile(file);
7229
+ if (!(sha1 in filePayloadRecord)) {
7230
+ filePayloadRecord[sha1] = {
7231
+ sha1,
7232
+ file_type: file.type,
7233
+ extension: file.name.split(".").pop(),
7234
+ size: file.size
7235
+ };
7236
+ await this.client.files.addCache(file, sha1);
7237
+ }
7238
+ const offlineMapImage = offline({
7239
+ ...payload,
7240
+ file_name: file.name,
7241
+ file_sha1: sha1,
7242
+ file: URL.createObjectURL(file),
7243
+ submitted_at: submittedAt,
7244
+ created_by: currentUser.id,
7245
+ project: projectId
7246
+ });
7247
+ offlineMapImages.push(offlineMapImage);
7248
+ mapImageOfflineIds.push(offlineMapImage.offline_id);
7249
+ mapImagePayloads.push({
7250
+ offline_id: offlineMapImage.offline_id,
7251
+ sha1: offlineMapImage.file_sha1,
7252
+ file_name: offlineMapImage.file_name,
7253
+ title: offlineMapImage.title,
7254
+ description: offlineMapImage.description,
7255
+ geo_marker: offlineMapImage.geo_marker,
7256
+ canvas_marker: offlineMapImage.canvas_marker,
7257
+ direction: offlineMapImage.direction,
7258
+ original_date: offlineMapImage.original_date
7259
+ });
7260
+ }
7261
+ store.dispatch(addGeoImages(offlineMapImages));
7262
+ const promise = this.enqueueRequest({
7263
+ description: "Bulk add geo images",
7264
+ method: HttpMethod.POST,
7265
+ url: "/geo-images/bulk/",
7266
+ payload: {
7267
+ submitted_at: submittedAt,
7268
+ project: projectId,
7269
+ geo_images: mapImagePayloads,
7270
+ files: Object.values(filePayloadRecord)
7271
+ },
7272
+ blocks: [projectId.toString()],
7273
+ blockers: mapImageOfflineIds
7274
+ });
7275
+ promise.then((result) => {
7276
+ this.processPresignedUrls(result.presigned_urls);
7277
+ store.dispatch(setGeoImages(result.map_images));
7278
+ }).catch(() => {
7279
+ store.dispatch(deleteGeoImages(mapImageOfflineIds));
7280
+ });
7281
+ return [offlineMapImages, promise.then((result) => result.map_images)];
7282
+ }
7283
+ update(payload) {
7284
+ const { store } = this.client;
7285
+ const state = store.getState();
7286
+ const mapImageToUpdate = selectGeoImageById(payload.offline_id)(state);
7287
+ if (!mapImageToUpdate) {
7288
+ throw new Error(`Map image with offline_id ${payload.offline_id} does not exist in the store`);
7289
+ }
7290
+ const updatedGeoImage = { ...mapImageToUpdate, ...payload };
7291
+ store.dispatch(updateGeoImage(updatedGeoImage));
7292
+ const promise = this.enqueueRequest({
7293
+ description: "Update geo image",
7294
+ method: HttpMethod.PATCH,
7295
+ url: `/geo-images/${payload.offline_id}/`,
7296
+ payload,
7297
+ blocks: [payload.offline_id],
7298
+ blockers: [payload.offline_id]
7299
+ });
7300
+ promise.then((result) => {
7301
+ store.dispatch(setGeoImage(result));
7302
+ }).catch(() => {
7303
+ store.dispatch(setGeoImage(mapImageToUpdate));
7304
+ });
7305
+ return [updatedGeoImage, promise];
7306
+ }
7307
+ async delete(geoImageId) {
7308
+ const { store } = this.client;
7309
+ const state = store.getState();
7310
+ const mapImageToDelete = selectGeoImageById(geoImageId)(state);
7311
+ if (!mapImageToDelete) {
7312
+ throw new Error(`Map image with offline_id ${geoImageId} does not exist in the store`);
7313
+ }
7314
+ store.dispatch(deleteGeoImage(geoImageId));
7315
+ const promise = this.enqueueRequest({
7316
+ description: "Delete geo image",
7317
+ method: HttpMethod.DELETE,
7318
+ url: `/geo-image/${geoImageId}/`,
7319
+ blocks: [geoImageId],
7320
+ blockers: [geoImageId]
7321
+ });
7322
+ promise.catch(() => {
7323
+ store.dispatch(setGeoImage(mapImageToDelete));
7324
+ });
7325
+ return promise;
7326
+ }
7327
+ async refreshStore(projectId) {
7328
+ const { store } = this.client;
7329
+ const result = await this.enqueueRequest({
7330
+ description: "Get geo images",
7331
+ method: HttpMethod.GET,
7332
+ url: `/projects/${projectId}/geo-images/`,
7333
+ blocks: [projectId.toString()],
7334
+ blockers: []
7335
+ });
7336
+ store.dispatch(initializeGeoImages(result));
7337
+ }
7338
+ }
7134
7339
  exports2.APIError = APIError;
7135
7340
  exports2.AgentService = AgentService;
7136
7341
  exports2.AssetAttachmentService = AssetAttachmentService;
@@ -7154,6 +7359,7 @@ var __publicField = (obj, key, value) => {
7154
7359
  exports2.EmailVerificationService = EmailVerificationService;
7155
7360
  exports2.FileService = FileService;
7156
7361
  exports2.GREEN = GREEN;
7362
+ exports2.GeoImageService = GeoImageService;
7157
7363
  exports2.HttpMethod = HttpMethod;
7158
7364
  exports2.IssueAttachmentService = IssueAttachmentService;
7159
7365
  exports2.IssueCommentService = IssueCommentService;
@@ -7215,6 +7421,8 @@ var __publicField = (obj, key, value) => {
7215
7421
  exports2.addFormSubmissionAttachments = addFormSubmissionAttachments;
7216
7422
  exports2.addFormSubmissions = addFormSubmissions;
7217
7423
  exports2.addForms = addForms;
7424
+ exports2.addGeoImage = addGeoImage;
7425
+ exports2.addGeoImages = addGeoImages;
7218
7426
  exports2.addIssue = addIssue;
7219
7427
  exports2.addIssueAttachment = addIssueAttachment;
7220
7428
  exports2.addIssueAttachments = addIssueAttachments;
@@ -7290,6 +7498,8 @@ var __publicField = (obj, key, value) => {
7290
7498
  exports2.deleteFormSubmissionAttachment = deleteFormSubmissionAttachment;
7291
7499
  exports2.deleteFormSubmissionAttachments = deleteFormSubmissionAttachments;
7292
7500
  exports2.deleteFormSubmissions = deleteFormSubmissions;
7501
+ exports2.deleteGeoImage = deleteGeoImage;
7502
+ exports2.deleteGeoImages = deleteGeoImages;
7293
7503
  exports2.deleteIssue = deleteIssue;
7294
7504
  exports2.deleteIssueAttachment = deleteIssueAttachment;
7295
7505
  exports2.deleteIssueAttachments = deleteIssueAttachments;
@@ -7337,6 +7547,8 @@ var __publicField = (obj, key, value) => {
7337
7547
  exports2.fullAssetMarkerSize = fullAssetMarkerSize;
7338
7548
  exports2.generateBadgeColors = generateBadgeColors;
7339
7549
  exports2.genericMemo = genericMemo;
7550
+ exports2.geoImageReducer = geoImageReducer;
7551
+ exports2.geoImageSlice = geoImageSlice;
7340
7552
  exports2.getFileIdentifier = getFileIdentifier;
7341
7553
  exports2.getFileS3Key = getFileS3Key;
7342
7554
  exports2.getLocalDateString = getLocalDateString;
@@ -7359,6 +7571,7 @@ var __publicField = (obj, key, value) => {
7359
7571
  exports2.initializeFormRevisionAttachments = initializeFormRevisionAttachments;
7360
7572
  exports2.initializeFormRevisions = initializeFormRevisions;
7361
7573
  exports2.initializeFormSubmissionAttachments = initializeFormSubmissionAttachments;
7574
+ exports2.initializeGeoImages = initializeGeoImages;
7362
7575
  exports2.initializeIssueAttachments = initializeIssueAttachments;
7363
7576
  exports2.initializeIssueTypes = initializeIssueTypes;
7364
7577
  exports2.initializeIssueUpdates = initializeIssueUpdates;
@@ -7521,6 +7734,10 @@ var __publicField = (obj, key, value) => {
7521
7734
  exports2.selectFormsCount = selectFormsCount;
7522
7735
  exports2.selectFormsMapping = selectFormsMapping;
7523
7736
  exports2.selectGeneralFormCount = selectGeneralFormCount;
7737
+ exports2.selectGeoImageById = selectGeoImageById;
7738
+ exports2.selectGeoImageMapping = selectGeoImageMapping;
7739
+ exports2.selectGeoImages = selectGeoImages;
7740
+ exports2.selectGeoImagesOfProject = selectGeoImagesOfProject;
7524
7741
  exports2.selectHiddenAssetTypeIds = selectHiddenAssetTypeIds;
7525
7742
  exports2.selectHiddenCategoryCount = selectHiddenCategoryCount;
7526
7743
  exports2.selectIsFetchingInitialData = selectIsFetchingInitialData;
@@ -7632,6 +7849,8 @@ var __publicField = (obj, key, value) => {
7632
7849
  exports2.setFormSubmissionAttachments = setFormSubmissionAttachments;
7633
7850
  exports2.setFormSubmissions = setFormSubmissions;
7634
7851
  exports2.setForms = setForms;
7852
+ exports2.setGeoImage = setGeoImage;
7853
+ exports2.setGeoImages = setGeoImages;
7635
7854
  exports2.setIsFetchingInitialData = setIsFetchingInitialData;
7636
7855
  exports2.setIsImportingProjectFile = setIsImportingProjectFile;
7637
7856
  exports2.setIssueAttachment = setIssueAttachment;
@@ -7694,6 +7913,8 @@ var __publicField = (obj, key, value) => {
7694
7913
  exports2.updateFormSubmissionAttachment = updateFormSubmissionAttachment;
7695
7914
  exports2.updateFormSubmissionAttachments = updateFormSubmissionAttachments;
7696
7915
  exports2.updateFormSubmissions = updateFormSubmissions;
7916
+ exports2.updateGeoImage = updateGeoImage;
7917
+ exports2.updateGeoImages = updateGeoImages;
7697
7918
  exports2.updateIssue = updateIssue;
7698
7919
  exports2.updateIssueAttachment = updateIssueAttachment;
7699
7920
  exports2.updateIssueAttachments = updateIssueAttachments;