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

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.
@@ -1587,13 +1587,6 @@ const selectProjectAccesses = createSelector(
1587
1587
  const selectProjectAccessById = (id) => (state) => {
1588
1588
  return state.projectAccessReducer.instances[id];
1589
1589
  };
1590
- const selectActiveProjectAccess = (state) => {
1591
- const currentUser = state.userReducer.currentUser;
1592
- const activeProjectId = state.projectReducer.activeProjectId;
1593
- return Object.values(state.projectAccessReducer.instances).find((projectAccess) => {
1594
- return projectAccess.user === (currentUser == null ? void 0 : currentUser.id) && projectAccess.project === activeProjectId;
1595
- }) ?? null;
1596
- };
1597
1590
  const selectProjectAccessForUser = (user) => (state) => {
1598
1591
  return Object.values(state.projectAccessReducer.instances).find(
1599
1592
  (projectAccess) => projectAccess.user === user.id
@@ -1608,8 +1601,7 @@ const selectProjectAccessUserMapping = (state) => {
1608
1601
  };
1609
1602
  const projectAccessReducer = projectAccessSlice.reducer;
1610
1603
  const initialState$u = {
1611
- projects: {},
1612
- activeProjectId: null
1604
+ projects: {}
1613
1605
  };
1614
1606
  const projectSlice = createSlice({
1615
1607
  name: "projects",
@@ -1623,19 +1615,9 @@ const projectSlice = createSlice({
1623
1615
  });
1624
1616
  state.projects = projectsMap;
1625
1617
  },
1626
- setActiveProjectId: (state, action) => {
1627
- state.activeProjectId = action.payload;
1628
- },
1629
- updateOrCreateProject: (state, action) => {
1618
+ updateProject: (state, action) => {
1630
1619
  state.projects[action.payload.id] = action.payload;
1631
1620
  },
1632
- // Takes a list of Projects and updates existing ones to match the payload, or adds them
1633
- // to the store if they are not already present
1634
- updateOrCreateProjects: (state, action) => {
1635
- action.payload.forEach((project) => {
1636
- state.projects[project.id] = project;
1637
- });
1638
- },
1639
1621
  deleteProject: (state, action) => {
1640
1622
  delete state.projects[action.payload.id];
1641
1623
  },
@@ -1645,50 +1627,12 @@ const projectSlice = createSlice({
1645
1627
  } else {
1646
1628
  throw new Error("Accept project invite: user is not in this project");
1647
1629
  }
1648
- },
1649
- addActiveProjectIssuesCount: (state, action) => {
1650
- if (!state.activeProjectId || !(state.activeProjectId in state.projects)) {
1651
- throw new Error("Update issues count: no active project");
1652
- }
1653
- if (!state.projects[state.activeProjectId].issues_count) {
1654
- state.projects[state.activeProjectId].issues_count = action.payload;
1655
- } else {
1656
- state.projects[state.activeProjectId].issues_count += action.payload;
1657
- }
1658
- },
1659
- addActiveProjectFormSubmissionsCount: (state, action) => {
1660
- if (state.activeProjectId && state.activeProjectId in state.projects) {
1661
- if (!state.projects[state.activeProjectId].form_submissions_count) {
1662
- state.projects[state.activeProjectId].form_submissions_count = action.payload;
1663
- } else {
1664
- state.projects[state.activeProjectId].form_submissions_count += action.payload;
1665
- }
1666
- } else {
1667
- throw new Error("Update form submissions count: no active project");
1668
- }
1669
1630
  }
1670
1631
  }
1671
1632
  });
1672
- const {
1673
- setProjects,
1674
- updateOrCreateProject,
1675
- updateOrCreateProjects: addOrReplaceProjects,
1676
- setActiveProjectId,
1677
- deleteProject,
1678
- acceptProjectInvite,
1679
- addActiveProjectIssuesCount,
1680
- addActiveProjectFormSubmissionsCount
1681
- } = projectSlice.actions;
1633
+ const { setProjects, updateProject, deleteProject, acceptProjectInvite } = projectSlice.actions;
1682
1634
  const projectReducer = projectSlice.reducer;
1683
1635
  const selectProjectMapping = (state) => state.projectReducer.projects;
1684
- const selectActiveProjectId = (state) => state.projectReducer.activeProjectId;
1685
- const selectActiveProject = (state) => {
1686
- const activeProjectId = selectActiveProjectId(state);
1687
- if (!activeProjectId) {
1688
- return null;
1689
- }
1690
- return state.projectReducer.projects[activeProjectId] ?? null;
1691
- };
1692
1636
  const selectProjectById = (id) => (state) => {
1693
1637
  return state.projectReducer.projects[id];
1694
1638
  };
@@ -1937,14 +1881,9 @@ const {
1937
1881
  resetProjectFileObjectUrls
1938
1882
  } = projectFileSlice.actions;
1939
1883
  const selectProjectFileMapping = (state) => state.projectFileReducer.projectFiles;
1940
- const selectProjectFiles = createSelector(
1941
- [selectProjectFileMapping, selectActiveProjectId],
1942
- (mapping, activeProjectId) => {
1943
- return fallbackToEmptyArray(
1944
- Object.values(mapping).filter((file) => file.project === activeProjectId).sort((a, b) => a.z_index - b.z_index)
1945
- );
1946
- }
1947
- );
1884
+ const selectProjectFiles = createSelector([selectProjectFileMapping], (mapping) => {
1885
+ return fallbackToEmptyArray(Object.values(mapping).sort((a, b) => a.z_index - b.z_index));
1886
+ });
1948
1887
  const selectActiveProjectFileId = (state) => state.projectFileReducer.activeProjectFileId;
1949
1888
  const selectIsImportingProjectFile = (state) => state.projectFileReducer.isImportingProjectFile;
1950
1889
  const selectProjectFileById = (id) => (state) => {
@@ -3176,6 +3115,20 @@ const selectIssueTypeFieldValuesAttachments = createSelector(
3176
3115
  return Object.values(attachmentsMapping);
3177
3116
  }
3178
3117
  );
3118
+ const selectIssueTypeFieldValuesAttachmentById = (attachmentId) => (state) => {
3119
+ return state.issueTypeFieldValuesAttachmentReducer.instances[attachmentId];
3120
+ };
3121
+ const selectIssueTypeFieldValuesAttachmentsByIds = restructureCreateSelectorWithArgs(
3122
+ createSelector(
3123
+ [selectIssueTypeFieldValuesAttachmentsMapping, (_, attachmentIds) => attachmentIds],
3124
+ (mapping, attachmentIds) => {
3125
+ const attachmentIdsSet = new Set(attachmentIds);
3126
+ return fallbackToEmptyArray(
3127
+ Object.values(mapping).filter((attachment) => attachmentIdsSet.has(attachment.offline_id))
3128
+ );
3129
+ }
3130
+ )
3131
+ );
3179
3132
  const selectAttachmentsOfIssueTypeFieldValues = restructureCreateSelectorWithArgs(
3180
3133
  createSelector(
3181
3134
  [selectIssueTypeFieldValuesAttachments, (_state, fieldValuesId) => fieldValuesId],
@@ -3184,9 +3137,6 @@ const selectAttachmentsOfIssueTypeFieldValues = restructureCreateSelectorWithArg
3184
3137
  }
3185
3138
  )
3186
3139
  );
3187
- const selectIssueTypeFieldValuesAttachmentById = (attachmentId) => (state) => {
3188
- return state.issueTypeFieldValuesAttachmentReducer.instances[attachmentId];
3189
- };
3190
3140
  const issueTypeFieldValuesAttachmentReducer = issueTypeFieldValuesAttachmentSlice.reducer;
3191
3141
  const assetTypeFieldsAdapter = createModelAdapter((fields) => fields.offline_id);
3192
3142
  const initialState$3 = assetTypeFieldsAdapter.getInitialState({});
@@ -3375,14 +3325,25 @@ const selectAssetTypeFieldValuesAttachments = createSelector(
3375
3325
  return Object.values(attachmentsMapping);
3376
3326
  }
3377
3327
  );
3328
+ const selectAssetTypeFieldValuesAttachmentById = (attachmentId) => (state) => {
3329
+ return state.assetTypeFieldValuesAttachmentReducer.instances[attachmentId];
3330
+ };
3331
+ const selectAssetTypeFieldValuesAttachmentsByIds = restructureCreateSelectorWithArgs(
3332
+ createSelector(
3333
+ [selectAssetTypeFieldValuesAttachmentsMapping, (_, attachmentIds) => attachmentIds],
3334
+ (mapping, attachmentIds) => {
3335
+ const attachmentIdsSet = new Set(attachmentIds);
3336
+ return fallbackToEmptyArray(
3337
+ Object.values(mapping).filter((attachment) => attachmentIdsSet.has(attachment.offline_id))
3338
+ );
3339
+ }
3340
+ )
3341
+ );
3378
3342
  const selectAttachmentsOfAssetTypeFieldValues = restructureCreateSelectorWithArgs(
3379
3343
  createSelector([selectAssetTypeFieldValuesAttachments, (_state, id) => id], (attachments, id) => {
3380
3344
  return fallbackToEmptyArray(attachments.filter((attachment) => attachment.field_values === id));
3381
3345
  })
3382
3346
  );
3383
- const selectAssetTypeFieldValuesAttachmentById = (attachmentId) => (state) => {
3384
- return state.assetTypeFieldValuesAttachmentReducer.instances[attachmentId];
3385
- };
3386
3347
  const assetTypeFieldValuesAttachmentReducer = assetTypeFieldValuesAttachmentSlice.reducer;
3387
3348
  let clientStore;
3388
3349
  function setClientStore(store) {
@@ -5093,7 +5054,6 @@ class IssueService extends BaseApiService {
5093
5054
  created_by: createdBy
5094
5055
  });
5095
5056
  this.dispatch(addIssue(offlineIssue));
5096
- this.dispatch(addActiveProjectIssuesCount(1));
5097
5057
  const promise = this.enqueueRequest({
5098
5058
  description: "Create issue",
5099
5059
  method: HttpMethod.POST,
@@ -5106,7 +5066,6 @@ class IssueService extends BaseApiService {
5106
5066
  this.dispatch(updateIssue(result));
5107
5067
  }).catch((error) => {
5108
5068
  this.dispatch(deleteIssue(offlineIssue.offline_id));
5109
- this.dispatch(addActiveProjectIssuesCount(-1));
5110
5069
  throw error;
5111
5070
  });
5112
5071
  return [offlineIssue, promise];
@@ -5222,7 +5181,6 @@ class IssueService extends BaseApiService {
5222
5181
  issueAssociationsRecord[issueAssociation.offline_id] = issueAssociation;
5223
5182
  const issueAssociations = Object.values(issueAssociationsRecord);
5224
5183
  this.dispatch(deleteIssue(id));
5225
- this.dispatch(addActiveProjectIssuesCount(-1));
5226
5184
  if (attachmentsOfIssue.length > 0)
5227
5185
  this.dispatch(deleteIssueAttachments(attachmentsOfIssue.map(({ offline_id }) => offline_id)));
5228
5186
  if (updatesOfIssue.length > 0)
@@ -5243,7 +5201,6 @@ class IssueService extends BaseApiService {
5243
5201
  this.dispatch(addIssue(backup));
5244
5202
  this.dispatch(addIssueAttachments(attachmentsOfIssue));
5245
5203
  this.dispatch(addIssueUpdates(updatesOfIssue));
5246
- this.dispatch(addActiveProjectIssuesCount(1));
5247
5204
  this.dispatch(addFormSubmissions(formSubmissionsOfIssue));
5248
5205
  this.dispatch(addIssueAssociations(issueAssociations));
5249
5206
  throw e;
@@ -5409,13 +5366,9 @@ class ProjectFileService extends BaseApiService {
5409
5366
  const { store } = this.client;
5410
5367
  const state = store.getState();
5411
5368
  const activeProjectFileId = state.projectFileReducer.activeProjectFileId;
5412
- const activeProjectId = state.projectReducer.activeProjectId;
5413
5369
  if (!activeProjectFileId) {
5414
5370
  throw new Error("No active project file");
5415
5371
  }
5416
- if (!activeProjectId) {
5417
- throw new Error("No active project");
5418
- }
5419
5372
  const activeProjectFile = state.projectFileReducer.projectFiles[activeProjectFileId];
5420
5373
  if (!activeProjectFile) {
5421
5374
  throw new Error("No active project file");
@@ -5440,7 +5393,7 @@ class ProjectFileService extends BaseApiService {
5440
5393
  this.client.files.uploadFileToS3(activeProjectFile.file_sha1).then(([fileProps]) => {
5441
5394
  resolve({
5442
5395
  method: HttpMethod.POST,
5443
- url: `/projects/${activeProjectId}/files/`,
5396
+ url: `/projects/${activeProjectFile.project}/files/`,
5444
5397
  payload: {
5445
5398
  ...activeProjectFile,
5446
5399
  ...fileProps
@@ -5555,7 +5508,7 @@ class ProjectService extends BaseApiService {
5555
5508
  if (!project.bounds && !project.canvas_bounds) {
5556
5509
  throw new Error("Project must either have bounds or canvas_bounds set");
5557
5510
  }
5558
- this.dispatch(updateOrCreateProject(project));
5511
+ this.dispatch(updateProject(project));
5559
5512
  return await this.enqueueRequest({
5560
5513
  description: "Update project",
5561
5514
  method: HttpMethod.PATCH,
@@ -5820,12 +5773,10 @@ class FormSubmissionService extends BaseUploadService {
5820
5773
  });
5821
5774
  this.dispatch(addFormSubmission(offlineSubmission));
5822
5775
  promise.then((result) => {
5823
- this.dispatch(addActiveProjectFormSubmissionsCount(1));
5824
5776
  this.dispatch(setFormSubmission(result));
5825
5777
  return result;
5826
5778
  }).catch(() => {
5827
5779
  this.dispatch(deleteFormSubmission(offlineSubmission.offline_id));
5828
- this.dispatch(addActiveProjectFormSubmissionsCount(-1));
5829
5780
  });
5830
5781
  return [offlineSubmission, promise];
5831
5782
  }
@@ -5872,7 +5823,6 @@ class FormSubmissionService extends BaseUploadService {
5872
5823
  }
5873
5824
  const submissionAttachments = selectAttachmentsOfFormSubmission(id)(state);
5874
5825
  this.dispatch(deleteFormSubmission(id));
5875
- this.dispatch(addActiveProjectFormSubmissionsCount(-1));
5876
5826
  this.dispatch(deleteFormSubmissionAttachments(submissionAttachments.map((x) => x.offline_id)));
5877
5827
  try {
5878
5828
  return await this.enqueueRequest({
@@ -5883,7 +5833,6 @@ class FormSubmissionService extends BaseUploadService {
5883
5833
  blocks: []
5884
5834
  });
5885
5835
  } catch (e) {
5886
- this.dispatch(addActiveProjectFormSubmissionsCount(1));
5887
5836
  this.dispatch(addFormSubmission(submissionToBeDeleted));
5888
5837
  this.dispatch(addFormSubmissionAttachments(submissionAttachments));
5889
5838
  throw e;
@@ -6730,15 +6679,14 @@ class DocumentAttachmentService extends BaseAttachmentService {
6730
6679
  }
6731
6680
  }
6732
6681
  class AgentService extends BaseApiService {
6733
- async startConversation(prompt) {
6734
- const activeProjectId = this.client.store.getState().projectReducer.activeProjectId;
6682
+ async startConversation(prompt, projectId) {
6735
6683
  return this.enqueueRequest({
6736
6684
  description: "Start agent conversation",
6737
6685
  method: HttpMethod.POST,
6738
6686
  url: "/agents/prompt/",
6739
6687
  payload: {
6740
6688
  prompt,
6741
- active_project: activeProjectId
6689
+ active_project: projectId
6742
6690
  },
6743
6691
  blockers: ["prompt"],
6744
6692
  blocks: ["prompt"]
@@ -6747,21 +6695,14 @@ class AgentService extends BaseApiService {
6747
6695
  return response;
6748
6696
  });
6749
6697
  }
6750
- /**
6751
- * Prompt the agent with a message.
6752
- * @param prompt The message to prompt the agent with.
6753
- * @param conversationId If continuing an existing message, the UUID of that conversation.
6754
- */
6755
- async continueConversation(prompt, conversationId) {
6756
- const { store } = this.client;
6757
- const activeProjectId = store.getState().projectReducer.activeProjectId;
6698
+ async continueConversation(prompt, conversationId, projectId) {
6758
6699
  return this.enqueueRequest({
6759
6700
  description: "Prompt agent",
6760
6701
  method: HttpMethod.POST,
6761
6702
  url: "/agents/prompt/",
6762
6703
  payload: {
6763
6704
  prompt,
6764
- active_project: activeProjectId
6705
+ active_project: projectId
6765
6706
  },
6766
6707
  blockers: ["prompt"],
6767
6708
  blocks: ["prompt"],
@@ -7769,8 +7710,8 @@ class AssetTypeFieldValuesAttachmentService extends BaseUploadService {
7769
7710
  async bulkDelete(ids) {
7770
7711
  const { store } = this.client;
7771
7712
  const state = store.getState();
7772
- const formSubmissionAttachments = selectFormSubmissionAttachemntsByIds(ids)(state);
7773
- this.dispatch(deleteFormSubmissionAttachments(ids));
7713
+ const attachments = selectAssetTypeFieldValuesAttachmentsByIds(ids)(state);
7714
+ this.dispatch(deleteAssetTypeFieldValuesAttachments(ids));
7774
7715
  try {
7775
7716
  await this.enqueueRequest({
7776
7717
  description: "Delete asset type field values attachments",
@@ -7781,7 +7722,7 @@ class AssetTypeFieldValuesAttachmentService extends BaseUploadService {
7781
7722
  blocks: []
7782
7723
  });
7783
7724
  } catch (e) {
7784
- this.dispatch(addFormSubmissionAttachments(formSubmissionAttachments));
7725
+ this.dispatch(addAssetTypeFieldValuesAttachments(attachments));
7785
7726
  throw e;
7786
7727
  }
7787
7728
  }
@@ -7977,8 +7918,8 @@ class IssueTypeFieldValuesAttachmentService extends BaseUploadService {
7977
7918
  async bulkDelete(attachmentsIds) {
7978
7919
  const { store } = this.client;
7979
7920
  const state = store.getState();
7980
- const formSubmissionAttachments = selectFormSubmissionAttachemntsByIds(attachmentsIds)(state);
7981
- this.dispatch(deleteFormSubmissionAttachments(attachmentsIds));
7921
+ const attachments = selectIssueTypeFieldValuesAttachmentsByIds(attachmentsIds)(state);
7922
+ this.dispatch(deleteIssueTypeFieldValuesAttachments(attachmentsIds));
7982
7923
  try {
7983
7924
  await this.enqueueRequest({
7984
7925
  description: "Delete issue type field values attachments",
@@ -7989,7 +7930,7 @@ class IssueTypeFieldValuesAttachmentService extends BaseUploadService {
7989
7930
  blocks: []
7990
7931
  });
7991
7932
  } catch (e) {
7992
- this.dispatch(addFormSubmissionAttachments(formSubmissionAttachments));
7933
+ this.dispatch(addIssueTypeFieldValuesAttachments(attachments));
7993
7934
  throw e;
7994
7935
  }
7995
7936
  }
@@ -8198,8 +8139,6 @@ export {
8198
8139
  _selectLatestFormRevision,
8199
8140
  _setLatestRetryTime,
8200
8141
  acceptProjectInvite,
8201
- addActiveProjectFormSubmissionsCount,
8202
- addActiveProjectIssuesCount,
8203
8142
  addAsset,
8204
8143
  addAssetAttachment,
8205
8144
  addAssetAttachments,
@@ -8260,7 +8199,6 @@ export {
8260
8199
  addLicenses,
8261
8200
  addOrReplaceProjectFile,
8262
8201
  addOrReplaceProjectFiles,
8263
- addOrReplaceProjects,
8264
8202
  addProjectAttachment,
8265
8203
  addProjectAttachments,
8266
8204
  addTeam,
@@ -8509,10 +8447,7 @@ export {
8509
8447
  saveActiveProjectFileBounds,
8510
8448
  selectAccessToken,
8511
8449
  selectActiveOrganizationAccess,
8512
- selectActiveProject,
8513
- selectActiveProjectAccess,
8514
8450
  selectActiveProjectFileId,
8515
- selectActiveProjectId,
8516
8451
  selectActiveStatusLicenses,
8517
8452
  selectAllDocumentAttachments,
8518
8453
  selectAllProjectAttachments,
@@ -8534,6 +8469,7 @@ export {
8534
8469
  selectAssetTypeFieldValues,
8535
8470
  selectAssetTypeFieldValuesAttachmentById,
8536
8471
  selectAssetTypeFieldValuesAttachments,
8472
+ selectAssetTypeFieldValuesAttachmentsByIds,
8537
8473
  selectAssetTypeFieldValuesAttachmentsMapping,
8538
8474
  selectAssetTypeFieldValuesById,
8539
8475
  selectAssetTypeFieldValuesMapping,
@@ -8633,6 +8569,7 @@ export {
8633
8569
  selectIssueTypeFieldValues,
8634
8570
  selectIssueTypeFieldValuesAttachmentById,
8635
8571
  selectIssueTypeFieldValuesAttachments,
8572
+ selectIssueTypeFieldValuesAttachmentsByIds,
8636
8573
  selectIssueTypeFieldValuesAttachmentsMapping,
8637
8574
  selectIssueTypeFieldValuesById,
8638
8575
  selectIssueTypeFieldValuesMapping,
@@ -8714,7 +8651,6 @@ export {
8714
8651
  separateFilesFromValues,
8715
8652
  separateImageFromFields,
8716
8653
  setActiveProjectFileId,
8717
- setActiveProjectId,
8718
8654
  setAsset,
8719
8655
  setAssetAttachment,
8720
8656
  setAssetAttachments,
@@ -8835,8 +8771,8 @@ export {
8835
8771
  updateIssueTypeFieldsAttachments,
8836
8772
  updateIssueTypeFieldsMany,
8837
8773
  updateLicense,
8838
- updateOrCreateProject,
8839
8774
  updateOrganizationAccess,
8775
+ updateProject,
8840
8776
  updateProjectAccess,
8841
8777
  updateProjectAttachment,
8842
8778
  updateProjectAttachments,