@overmap-ai/core 1.0.52 → 1.0.53-add-agent-slice.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.
- package/README.md +4 -4
- package/dist/overmap-core.js +372 -84
- package/dist/overmap-core.js.map +1 -1
- package/dist/overmap-core.umd.cjs +372 -84
- package/dist/overmap-core.umd.cjs.map +1 -1
- package/dist/sdk/sdk.d.ts +2 -1
- package/dist/sdk/services/IssueService.d.ts +2 -2
- package/dist/sdk/services/IssueTypeService.d.ts +9 -0
- package/dist/sdk/services/UserFormService.d.ts +10 -2
- package/dist/sdk/services/index.d.ts +1 -0
- package/dist/store/slices/agentSlice.d.ts +14 -0
- package/dist/store/slices/categorySlice.d.ts +2 -0
- package/dist/store/slices/documentSlice.d.ts +30 -56
- package/dist/store/slices/formRevisionSlice.d.ts +31 -29
- package/dist/store/slices/formSlice.d.ts +7 -0
- package/dist/store/slices/formSubmissionSlice.d.ts +2 -0
- package/dist/store/slices/index.d.ts +2 -0
- package/dist/store/slices/issueSlice.d.ts +7 -1
- package/dist/store/slices/issueTypeSlice.d.ts +20 -0
- package/dist/store/slices/projectFileSlice.d.ts +2 -0
- package/dist/store/slices/workspaceSlice.d.ts +2 -0
- package/dist/store/store.d.ts +8 -1
- package/dist/typings/models/attachments.d.ts +2 -3
- package/dist/typings/models/base.d.ts +4 -0
- package/dist/typings/models/documents.d.ts +3 -6
- package/dist/typings/models/forms.d.ts +3 -3
- package/dist/typings/models/index.d.ts +1 -0
- package/dist/typings/models/issueTypes.d.ts +8 -0
- package/dist/typings/models/issues.d.ts +4 -5
- package/dist/typings/models/organizations.d.ts +2 -3
- package/package.json +153 -153
package/dist/overmap-core.js
CHANGED
|
@@ -678,15 +678,15 @@ const wrapMigration = (migrator) => (state) => {
|
|
|
678
678
|
};
|
|
679
679
|
const migrations = [initialVersioning, signOut, signOut, createOutboxState];
|
|
680
680
|
const manifest = Object.fromEntries(migrations.map((migration2, i) => [i, wrapMigration(migration2)]));
|
|
681
|
-
const initialState$
|
|
681
|
+
const initialState$s = {
|
|
682
682
|
accessToken: "",
|
|
683
683
|
refreshToken: "",
|
|
684
684
|
isLoggedIn: false
|
|
685
685
|
};
|
|
686
686
|
const authSlice = createSlice({
|
|
687
687
|
name: "auth",
|
|
688
|
-
initialState: initialState$
|
|
689
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
688
|
+
initialState: initialState$s,
|
|
689
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$s)),
|
|
690
690
|
reducers: {
|
|
691
691
|
setTokens: (state, action) => {
|
|
692
692
|
state.accessToken = action.payload.accessToken;
|
|
@@ -1430,7 +1430,7 @@ const getLocalRelativeDateString = memoize((date, min, max) => {
|
|
|
1430
1430
|
return getLocalDateString(date);
|
|
1431
1431
|
return relative.format(days, "days");
|
|
1432
1432
|
});
|
|
1433
|
-
const initialState$
|
|
1433
|
+
const initialState$r = {
|
|
1434
1434
|
categories: {},
|
|
1435
1435
|
usedCategoryColors: [],
|
|
1436
1436
|
categoryVisibility: {
|
|
@@ -1440,8 +1440,8 @@ const initialState$p = {
|
|
|
1440
1440
|
};
|
|
1441
1441
|
const categorySlice = createSlice({
|
|
1442
1442
|
name: "categories",
|
|
1443
|
-
initialState: initialState$
|
|
1444
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
1443
|
+
initialState: initialState$r,
|
|
1444
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$r)),
|
|
1445
1445
|
reducers: {
|
|
1446
1446
|
setCategories: (state, action) => {
|
|
1447
1447
|
if (!Array.isArray(action.payload))
|
|
@@ -1613,14 +1613,14 @@ function removeAttachments(state, action) {
|
|
|
1613
1613
|
delete state.attachments[attachmentId];
|
|
1614
1614
|
}
|
|
1615
1615
|
}
|
|
1616
|
-
const initialState$
|
|
1616
|
+
const initialState$q = {
|
|
1617
1617
|
components: {},
|
|
1618
1618
|
attachments: {}
|
|
1619
1619
|
};
|
|
1620
1620
|
const componentSlice = createSlice({
|
|
1621
1621
|
name: "components",
|
|
1622
|
-
initialState: initialState$
|
|
1623
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
1622
|
+
initialState: initialState$q,
|
|
1623
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$q)),
|
|
1624
1624
|
reducers: {
|
|
1625
1625
|
addComponent: (state, action) => {
|
|
1626
1626
|
state.components[action.payload.offline_id] = action.payload;
|
|
@@ -1776,13 +1776,13 @@ const {
|
|
|
1776
1776
|
removeAllComponentsOfType
|
|
1777
1777
|
} = componentSlice.actions;
|
|
1778
1778
|
const componentReducer = componentSlice.reducer;
|
|
1779
|
-
const initialState$
|
|
1779
|
+
const initialState$p = {
|
|
1780
1780
|
completionsByComponentId: {}
|
|
1781
1781
|
};
|
|
1782
1782
|
const componentStageCompletionSlice = createSlice({
|
|
1783
1783
|
name: "componentStageCompletions",
|
|
1784
|
-
initialState: initialState$
|
|
1785
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
1784
|
+
initialState: initialState$p,
|
|
1785
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$p)),
|
|
1786
1786
|
reducers: {
|
|
1787
1787
|
addStageCompletion: (state, action) => {
|
|
1788
1788
|
let stageToCompletionDateMapping = state.completionsByComponentId[action.payload.component];
|
|
@@ -1833,13 +1833,13 @@ const selectCompletedStageIdsForComponent = (component) => (state) => {
|
|
|
1833
1833
|
return Object.keys(state.componentStageCompletionReducer.completionsByComponentId[component.offline_id] ?? {});
|
|
1834
1834
|
};
|
|
1835
1835
|
const componentStageCompletionReducer = componentStageCompletionSlice.reducer;
|
|
1836
|
-
const initialState$
|
|
1836
|
+
const initialState$o = {
|
|
1837
1837
|
stages: {}
|
|
1838
1838
|
};
|
|
1839
1839
|
const componentStageSlice = createSlice({
|
|
1840
1840
|
name: "componentStages",
|
|
1841
|
-
initialState: initialState$
|
|
1842
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
1841
|
+
initialState: initialState$o,
|
|
1842
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$o)),
|
|
1843
1843
|
reducers: {
|
|
1844
1844
|
addStages: (state, action) => {
|
|
1845
1845
|
Object.assign(state.stages, toOfflineIdRecord(action.payload));
|
|
@@ -1949,15 +1949,15 @@ const selectStageFormIdsFromStageIds = restructureCreateSelectorWithArgs(
|
|
|
1949
1949
|
);
|
|
1950
1950
|
const { addStages, updateStages, removeStages, linkStageToForm, unlinkStageToForm } = componentStageSlice.actions;
|
|
1951
1951
|
const componentStageReducer = componentStageSlice.reducer;
|
|
1952
|
-
const initialState$
|
|
1952
|
+
const initialState$n = {
|
|
1953
1953
|
componentTypes: {},
|
|
1954
1954
|
hiddenComponentTypeIds: {},
|
|
1955
1955
|
attachments: {}
|
|
1956
1956
|
};
|
|
1957
1957
|
const componentTypeSlice = createSlice({
|
|
1958
1958
|
name: "componentTypes",
|
|
1959
|
-
initialState: initialState$
|
|
1960
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
1959
|
+
initialState: initialState$n,
|
|
1960
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$n)),
|
|
1961
1961
|
reducers: {
|
|
1962
1962
|
addComponentType: (state, action) => {
|
|
1963
1963
|
state.componentTypes[action.payload.offline_id] = action.payload;
|
|
@@ -2068,13 +2068,13 @@ const {
|
|
|
2068
2068
|
deleteComponentType
|
|
2069
2069
|
} = componentTypeSlice.actions;
|
|
2070
2070
|
const componentTypeReducer = componentTypeSlice.reducer;
|
|
2071
|
-
const initialState$
|
|
2071
|
+
const initialState$m = {
|
|
2072
2072
|
workspaces: {},
|
|
2073
2073
|
activeWorkspaceId: null
|
|
2074
2074
|
};
|
|
2075
2075
|
const workspaceSlice = createSlice({
|
|
2076
2076
|
name: "workspace",
|
|
2077
|
-
initialState: initialState$
|
|
2077
|
+
initialState: initialState$m,
|
|
2078
2078
|
// The `reducers` field lets us define reducers and generate associated actions
|
|
2079
2079
|
reducers: {
|
|
2080
2080
|
setWorkspaces: (state, action) => {
|
|
@@ -2131,7 +2131,7 @@ const selectPermittedWorkspaceIds = createSelector(
|
|
|
2131
2131
|
);
|
|
2132
2132
|
const workspaceReducer = workspaceSlice.reducer;
|
|
2133
2133
|
const maxRecentIssues = 10;
|
|
2134
|
-
const initialState$
|
|
2134
|
+
const initialState$l = {
|
|
2135
2135
|
issues: {},
|
|
2136
2136
|
attachments: {},
|
|
2137
2137
|
comments: {},
|
|
@@ -2143,9 +2143,9 @@ const initialState$j = {
|
|
|
2143
2143
|
};
|
|
2144
2144
|
const issueSlice = createSlice({
|
|
2145
2145
|
name: "issues",
|
|
2146
|
-
initialState: initialState$
|
|
2146
|
+
initialState: initialState$l,
|
|
2147
2147
|
extraReducers: (builder) => builder.addCase("RESET", (state) => {
|
|
2148
|
-
Object.assign(state, initialState$
|
|
2148
|
+
Object.assign(state, initialState$l);
|
|
2149
2149
|
}),
|
|
2150
2150
|
reducers: {
|
|
2151
2151
|
setIssues: (state, action) => {
|
|
@@ -2176,6 +2176,16 @@ const issueSlice = createSlice({
|
|
|
2176
2176
|
}
|
|
2177
2177
|
state.issues[action.payload.offline_id] = action.payload;
|
|
2178
2178
|
},
|
|
2179
|
+
addIssues: (state, action) => {
|
|
2180
|
+
for (const issue of action.payload) {
|
|
2181
|
+
if (issue.offline_id in state.issues) {
|
|
2182
|
+
throw new Error(`Tried to add duplicate issue with ID: ${issue.offline_id}`);
|
|
2183
|
+
}
|
|
2184
|
+
}
|
|
2185
|
+
for (const issue of action.payload) {
|
|
2186
|
+
state.issues[issue.offline_id] = issue;
|
|
2187
|
+
}
|
|
2188
|
+
},
|
|
2179
2189
|
addIssueAttachment: addAttachment,
|
|
2180
2190
|
addIssueAttachments: addAttachments,
|
|
2181
2191
|
addIssueUpdate: (state, action) => {
|
|
@@ -2207,6 +2217,11 @@ const issueSlice = createSlice({
|
|
|
2207
2217
|
throw new Error(`Failed to remove issue because ID doesn't exist: ${action.payload}`);
|
|
2208
2218
|
}
|
|
2209
2219
|
},
|
|
2220
|
+
removeIssues: (state, action) => {
|
|
2221
|
+
for (const issueId of action.payload) {
|
|
2222
|
+
delete state.issues[issueId];
|
|
2223
|
+
}
|
|
2224
|
+
},
|
|
2210
2225
|
removeIssueAttachment: removeAttachment,
|
|
2211
2226
|
removeIssueUpdate: (state, action) => {
|
|
2212
2227
|
if (action.payload in state.updates) {
|
|
@@ -2311,6 +2326,7 @@ const {
|
|
|
2311
2326
|
addIssueAttachment,
|
|
2312
2327
|
addIssueAttachments,
|
|
2313
2328
|
addIssue,
|
|
2329
|
+
addIssues,
|
|
2314
2330
|
addIssueUpdate,
|
|
2315
2331
|
addIssueUpdates,
|
|
2316
2332
|
addOrReplaceIssueComment,
|
|
@@ -2319,6 +2335,7 @@ const {
|
|
|
2319
2335
|
removeIssueAttachment,
|
|
2320
2336
|
removeAttachmentsOfIssue,
|
|
2321
2337
|
removeIssue,
|
|
2338
|
+
removeIssues,
|
|
2322
2339
|
removeIssueUpdate,
|
|
2323
2340
|
removeIssueUpdates,
|
|
2324
2341
|
removeRecentIssue,
|
|
@@ -2553,15 +2570,89 @@ const selectRecentIssuesAsSearchResults = createSelector(
|
|
|
2553
2570
|
}
|
|
2554
2571
|
);
|
|
2555
2572
|
const issueReducer = issueSlice.reducer;
|
|
2556
|
-
const initialState$
|
|
2573
|
+
const initialState$k = {
|
|
2574
|
+
issueTypes: {}
|
|
2575
|
+
};
|
|
2576
|
+
const issueTypeSlice = createSlice({
|
|
2577
|
+
name: "issueTypes",
|
|
2578
|
+
initialState: initialState$k,
|
|
2579
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => {
|
|
2580
|
+
Object.assign(state, initialState$k);
|
|
2581
|
+
}),
|
|
2582
|
+
reducers: {
|
|
2583
|
+
setIssueTypes: (state, action) => {
|
|
2584
|
+
for (const issueType of action.payload) {
|
|
2585
|
+
state.issueTypes[issueType.offline_id] = issueType;
|
|
2586
|
+
}
|
|
2587
|
+
},
|
|
2588
|
+
setIssueType: (state, action) => {
|
|
2589
|
+
state.issueTypes[action.payload.offline_id] = action.payload;
|
|
2590
|
+
},
|
|
2591
|
+
addIssueType: (state, action) => {
|
|
2592
|
+
if (action.payload.offline_id in state.issueTypes) {
|
|
2593
|
+
throw new Error(`IssueType with offline_id ${action.payload.offline_id} already exists in the store.`);
|
|
2594
|
+
}
|
|
2595
|
+
state.issueTypes[action.payload.offline_id] = action.payload;
|
|
2596
|
+
},
|
|
2597
|
+
updateIssueType: (state, action) => {
|
|
2598
|
+
if (!(action.payload.offline_id in state.issueTypes)) {
|
|
2599
|
+
throw new Error(`IssueType with offline_id ${action.payload.offline_id} does not exist in the store.`);
|
|
2600
|
+
}
|
|
2601
|
+
state.issueTypes[action.payload.offline_id] = action.payload;
|
|
2602
|
+
},
|
|
2603
|
+
removeIssueType: (state, action) => {
|
|
2604
|
+
if (!(action.payload in state.issueTypes)) {
|
|
2605
|
+
throw new Error(`IssueType with offline_id ${action.payload} does not exist in the store.`);
|
|
2606
|
+
}
|
|
2607
|
+
delete state.issueTypes[action.payload];
|
|
2608
|
+
}
|
|
2609
|
+
}
|
|
2610
|
+
});
|
|
2611
|
+
const { setIssueTypes, setIssueType, addIssueType, updateIssueType, removeIssueType } = issueTypeSlice.actions;
|
|
2612
|
+
const selectIssueTypeMapping = (state) => {
|
|
2613
|
+
return state.issueTypeReducer.issueTypes;
|
|
2614
|
+
};
|
|
2615
|
+
const selectIssueTypes = createSelector(selectIssueTypeMapping, (issueTypes) => {
|
|
2616
|
+
return Object.values(issueTypes);
|
|
2617
|
+
});
|
|
2618
|
+
const selectIssueType = restructureCreateSelectorWithArgs(
|
|
2619
|
+
createSelector(
|
|
2620
|
+
[selectIssueTypeMapping, (_, issueTypeId) => issueTypeId],
|
|
2621
|
+
(issueTypesMapping, issueTypeId) => {
|
|
2622
|
+
return issueTypesMapping[issueTypeId];
|
|
2623
|
+
}
|
|
2624
|
+
)
|
|
2625
|
+
);
|
|
2626
|
+
const selectIssueTypesOfOrganization = restructureCreateSelectorWithArgs(
|
|
2627
|
+
createSelector(
|
|
2628
|
+
[selectIssueTypes, (_, organizationId) => organizationId],
|
|
2629
|
+
(issueTypes, organizationId) => {
|
|
2630
|
+
return issueTypes.filter((issueType) => issueType.organization === organizationId);
|
|
2631
|
+
}
|
|
2632
|
+
)
|
|
2633
|
+
);
|
|
2634
|
+
const selectIssuesOfIssueType = restructureCreateSelectorWithArgs(
|
|
2635
|
+
createSelector(
|
|
2636
|
+
[(state) => state.issueReducer.issues, (_, issueTypeId) => issueTypeId],
|
|
2637
|
+
(issuesMapping, issueTypeId) => {
|
|
2638
|
+
return Object.values(issuesMapping).filter((issue) => issue.issue_type === issueTypeId);
|
|
2639
|
+
}
|
|
2640
|
+
)
|
|
2641
|
+
);
|
|
2642
|
+
const selectIssuesOfIssueTypeCount = (issueTypeId) => (state) => {
|
|
2643
|
+
var _a2;
|
|
2644
|
+
return ((_a2 = selectIssuesOfIssueType(issueTypeId)(state)) == null ? void 0 : _a2.length) ?? 0;
|
|
2645
|
+
};
|
|
2646
|
+
const issueTypeReducer = issueTypeSlice.reducer;
|
|
2647
|
+
const initialState$j = {
|
|
2557
2648
|
s3Urls: {}
|
|
2558
2649
|
};
|
|
2559
2650
|
const msPerHour = 1e3 * 60 * 60;
|
|
2560
2651
|
const msPerWeek = msPerHour * 24 * 7;
|
|
2561
2652
|
const fileSlice = createSlice({
|
|
2562
2653
|
name: "file",
|
|
2563
|
-
initialState: initialState$
|
|
2564
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
2654
|
+
initialState: initialState$j,
|
|
2655
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$j)),
|
|
2565
2656
|
reducers: {
|
|
2566
2657
|
setUploadUrl: (state, action) => {
|
|
2567
2658
|
const { url, fields, sha1 } = action.payload;
|
|
@@ -2588,7 +2679,7 @@ const selectUploadUrl = (sha1) => (state) => {
|
|
|
2588
2679
|
return url;
|
|
2589
2680
|
};
|
|
2590
2681
|
const fileReducer = fileSlice.reducer;
|
|
2591
|
-
const initialState$
|
|
2682
|
+
const initialState$i = {
|
|
2592
2683
|
// TODO: Change first MapStyle.SATELLITE to MaptStyle.None when project creation map is fixed
|
|
2593
2684
|
mapStyle: MapStyle.SATELLITE,
|
|
2594
2685
|
showTooltips: false,
|
|
@@ -2596,8 +2687,8 @@ const initialState$h = {
|
|
|
2596
2687
|
};
|
|
2597
2688
|
const mapSlice = createSlice({
|
|
2598
2689
|
name: "map",
|
|
2599
|
-
initialState: initialState$
|
|
2600
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
2690
|
+
initialState: initialState$i,
|
|
2691
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$i)),
|
|
2601
2692
|
reducers: {
|
|
2602
2693
|
setMapStyle: (state, action) => {
|
|
2603
2694
|
state.mapStyle = action.payload;
|
|
@@ -2666,7 +2757,7 @@ var LicenseStatus = /* @__PURE__ */ ((LicenseStatus2) => {
|
|
|
2666
2757
|
LicenseStatus2[LicenseStatus2["PAST_DUE"] = 8] = "PAST_DUE";
|
|
2667
2758
|
return LicenseStatus2;
|
|
2668
2759
|
})(LicenseStatus || {});
|
|
2669
|
-
const initialState$
|
|
2760
|
+
const initialState$h = {
|
|
2670
2761
|
users: {},
|
|
2671
2762
|
currentUser: {
|
|
2672
2763
|
id: 0,
|
|
@@ -2677,8 +2768,8 @@ const initialState$g = {
|
|
|
2677
2768
|
};
|
|
2678
2769
|
const userSlice = createSlice({
|
|
2679
2770
|
name: "users",
|
|
2680
|
-
initialState: initialState$
|
|
2681
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
2771
|
+
initialState: initialState$h,
|
|
2772
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$h)),
|
|
2682
2773
|
reducers: {
|
|
2683
2774
|
setUsers: (state, action) => {
|
|
2684
2775
|
const usersMapping = {};
|
|
@@ -2740,13 +2831,13 @@ const selectUser = (userId) => (state) => {
|
|
|
2740
2831
|
const selectUsersAsMapping = (state) => state.userReducer.users;
|
|
2741
2832
|
const selectFavouriteProjects = (state) => state.userReducer.currentUser.profile.favourite_project_ids;
|
|
2742
2833
|
const userReducer = userSlice.reducer;
|
|
2743
|
-
const initialState$
|
|
2834
|
+
const initialState$g = {
|
|
2744
2835
|
organizationAccesses: {}
|
|
2745
2836
|
};
|
|
2746
2837
|
const organizationAccessSlice = createSlice({
|
|
2747
2838
|
name: "organizationAccess",
|
|
2748
|
-
initialState: initialState$
|
|
2749
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
2839
|
+
initialState: initialState$g,
|
|
2840
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$g)),
|
|
2750
2841
|
reducers: {
|
|
2751
2842
|
setOrganizationAccesses: (state, action) => {
|
|
2752
2843
|
if (!Array.isArray(action.payload))
|
|
@@ -2809,13 +2900,13 @@ const selectOrganizationAccessUserMapping = (state) => {
|
|
|
2809
2900
|
return organizationAccesses;
|
|
2810
2901
|
};
|
|
2811
2902
|
const organizationAccessReducer = organizationAccessSlice.reducer;
|
|
2812
|
-
const initialState$
|
|
2903
|
+
const initialState$f = {
|
|
2813
2904
|
licenses: {}
|
|
2814
2905
|
};
|
|
2815
2906
|
const licenseSlice = createSlice({
|
|
2816
2907
|
name: "license",
|
|
2817
|
-
initialState: initialState$
|
|
2818
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
2908
|
+
initialState: initialState$f,
|
|
2909
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$f)),
|
|
2819
2910
|
reducers: {
|
|
2820
2911
|
setLicenses: (state, action) => {
|
|
2821
2912
|
if (!Array.isArray(action.payload))
|
|
@@ -2860,13 +2951,13 @@ const selectLicensesForProjectsMapping = createSelector(
|
|
|
2860
2951
|
(licenses) => Object.values(licenses).filter((license) => license.project).reduce((accum, license) => ({ ...accum, [license.project]: license }), {})
|
|
2861
2952
|
);
|
|
2862
2953
|
const licenseReducer = licenseSlice.reducer;
|
|
2863
|
-
const initialState$
|
|
2954
|
+
const initialState$e = {
|
|
2864
2955
|
projectAccesses: {}
|
|
2865
2956
|
};
|
|
2866
2957
|
const projectAccessSlice = createSlice({
|
|
2867
2958
|
name: "projectAccess",
|
|
2868
|
-
initialState: initialState$
|
|
2869
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
2959
|
+
initialState: initialState$e,
|
|
2960
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$e)),
|
|
2870
2961
|
reducers: {
|
|
2871
2962
|
setProjectAccesses: (state, action) => {
|
|
2872
2963
|
if (!Array.isArray(action.payload))
|
|
@@ -2934,7 +3025,7 @@ const selectProjectAccessUserMapping = (state) => {
|
|
|
2934
3025
|
return projectAccesses;
|
|
2935
3026
|
};
|
|
2936
3027
|
const projectAccessReducer = projectAccessSlice.reducer;
|
|
2937
|
-
const initialState$
|
|
3028
|
+
const initialState$d = {
|
|
2938
3029
|
projects: {},
|
|
2939
3030
|
activeProjectId: null,
|
|
2940
3031
|
recentProjectIds: [],
|
|
@@ -2944,7 +3035,7 @@ const initialState$c = {
|
|
|
2944
3035
|
};
|
|
2945
3036
|
const projectSlice = createSlice({
|
|
2946
3037
|
name: "projects",
|
|
2947
|
-
initialState: initialState$
|
|
3038
|
+
initialState: initialState$d,
|
|
2948
3039
|
reducers: {
|
|
2949
3040
|
setProjects: (state, action) => {
|
|
2950
3041
|
const projectsMap = {};
|
|
@@ -3131,14 +3222,14 @@ const selectAttachmentsOfProjectByType = restructureCreateSelectorWithArgs(
|
|
|
3131
3222
|
}
|
|
3132
3223
|
)
|
|
3133
3224
|
);
|
|
3134
|
-
const initialState$
|
|
3225
|
+
const initialState$c = {
|
|
3135
3226
|
organizations: {},
|
|
3136
3227
|
activeOrganizationId: null
|
|
3137
3228
|
};
|
|
3138
3229
|
const organizationSlice = createSlice({
|
|
3139
3230
|
name: "organizations",
|
|
3140
|
-
initialState: initialState$
|
|
3141
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
3231
|
+
initialState: initialState$c,
|
|
3232
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$c)),
|
|
3142
3233
|
reducers: {
|
|
3143
3234
|
setOrganizations: (state, action) => {
|
|
3144
3235
|
for (const org of action.payload) {
|
|
@@ -3257,14 +3348,14 @@ const createOfflineAction = (request2, baseUrl) => {
|
|
|
3257
3348
|
}
|
|
3258
3349
|
};
|
|
3259
3350
|
};
|
|
3260
|
-
const initialState$
|
|
3351
|
+
const initialState$b = {
|
|
3261
3352
|
deletedRequests: [],
|
|
3262
3353
|
latestRetryTime: 0
|
|
3263
3354
|
};
|
|
3264
3355
|
const outboxSlice = createSlice({
|
|
3265
3356
|
name: "outbox",
|
|
3266
|
-
initialState: initialState$
|
|
3267
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
3357
|
+
initialState: initialState$b,
|
|
3358
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$b)),
|
|
3268
3359
|
reducers: {
|
|
3269
3360
|
// enqueueActions is a reducer that does nothing but enqueue API request to the Redux Offline outbox
|
|
3270
3361
|
// Whenever an issue is being created, a reducer addIssue() is responsible for adding it to the offline store
|
|
@@ -3296,7 +3387,7 @@ const selectDeletedRequests = (state) => state.outboxReducer.deletedRequests;
|
|
|
3296
3387
|
const selectLatestRetryTime = (state) => state.outboxReducer.latestRetryTime;
|
|
3297
3388
|
const { enqueueRequest, markForDeletion, markAsDeleted, _setLatestRetryTime } = outboxSlice.actions;
|
|
3298
3389
|
const outboxReducer = outboxSlice.reducer;
|
|
3299
|
-
const initialState$
|
|
3390
|
+
const initialState$a = {
|
|
3300
3391
|
projectFiles: {},
|
|
3301
3392
|
activeProjectFileId: null,
|
|
3302
3393
|
isImportingProjectFile: false,
|
|
@@ -3304,8 +3395,8 @@ const initialState$9 = {
|
|
|
3304
3395
|
};
|
|
3305
3396
|
const projectFileSlice = createSlice({
|
|
3306
3397
|
name: "projectFiles",
|
|
3307
|
-
initialState: initialState$
|
|
3308
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
3398
|
+
initialState: initialState$a,
|
|
3399
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$a)),
|
|
3309
3400
|
reducers: {
|
|
3310
3401
|
addOrReplaceProjectFiles: (state, action) => {
|
|
3311
3402
|
for (let fileObj of action.payload) {
|
|
@@ -3406,12 +3497,12 @@ const selectProjectFiles = createSelector(
|
|
|
3406
3497
|
const selectActiveProjectFileId = (state) => state.projectFileReducer.activeProjectFileId;
|
|
3407
3498
|
const selectIsImportingProjectFile = (state) => state.projectFileReducer.isImportingProjectFile;
|
|
3408
3499
|
const projectFileReducer = projectFileSlice.reducer;
|
|
3409
|
-
const initialState$
|
|
3500
|
+
const initialState$9 = {
|
|
3410
3501
|
isRehydrated: false
|
|
3411
3502
|
};
|
|
3412
3503
|
const rehydratedSlice = createSlice({
|
|
3413
3504
|
name: "rehydrated",
|
|
3414
|
-
initialState: initialState$
|
|
3505
|
+
initialState: initialState$9,
|
|
3415
3506
|
// The `reducers` field lets us define reducers and generate associated actions
|
|
3416
3507
|
reducers: {
|
|
3417
3508
|
setRehydrated: (state, action) => {
|
|
@@ -3421,7 +3512,7 @@ const rehydratedSlice = createSlice({
|
|
|
3421
3512
|
});
|
|
3422
3513
|
const selectRehydrated = (state) => state.rehydratedReducer.isRehydrated;
|
|
3423
3514
|
const rehydratedReducer = rehydratedSlice.reducer;
|
|
3424
|
-
const initialState$
|
|
3515
|
+
const initialState$8 = {
|
|
3425
3516
|
useIssueTemplate: false,
|
|
3426
3517
|
placementMode: false,
|
|
3427
3518
|
enableClustering: false,
|
|
@@ -3438,8 +3529,8 @@ const initialState$7 = {
|
|
|
3438
3529
|
};
|
|
3439
3530
|
const settingSlice = createSlice({
|
|
3440
3531
|
name: "settings",
|
|
3441
|
-
initialState: initialState$
|
|
3442
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
3532
|
+
initialState: initialState$8,
|
|
3533
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$8)),
|
|
3443
3534
|
reducers: {
|
|
3444
3535
|
setEnableDuplicateIssues: (state, action) => {
|
|
3445
3536
|
state.useIssueTemplate = action.payload;
|
|
@@ -3498,14 +3589,14 @@ const formRevisionSortFn = (formRevisionA, formRevisionB) => {
|
|
|
3498
3589
|
return revisionA < revisionB ? -1 : 1;
|
|
3499
3590
|
}
|
|
3500
3591
|
};
|
|
3501
|
-
const initialState$
|
|
3592
|
+
const initialState$7 = {
|
|
3502
3593
|
formRevisions: {},
|
|
3503
3594
|
attachments: {}
|
|
3504
3595
|
};
|
|
3505
3596
|
const formRevisionsSlice = createSlice({
|
|
3506
3597
|
name: "formRevisions",
|
|
3507
|
-
initialState: initialState$
|
|
3508
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
3598
|
+
initialState: initialState$7,
|
|
3599
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$7)),
|
|
3509
3600
|
reducers: {
|
|
3510
3601
|
// revision related actions
|
|
3511
3602
|
setFormRevision: (state, action) => {
|
|
@@ -3685,13 +3776,13 @@ const selectAttachmentsOfFormRevision = restructureCreateSelectorWithArgs(
|
|
|
3685
3776
|
)
|
|
3686
3777
|
);
|
|
3687
3778
|
const formRevisionReducer = formRevisionsSlice.reducer;
|
|
3688
|
-
const initialState$
|
|
3779
|
+
const initialState$6 = {
|
|
3689
3780
|
forms: {}
|
|
3690
3781
|
};
|
|
3691
3782
|
const formSlice = createSlice({
|
|
3692
3783
|
name: "forms",
|
|
3693
|
-
initialState: initialState$
|
|
3694
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
3784
|
+
initialState: initialState$6,
|
|
3785
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$6)),
|
|
3695
3786
|
reducers: {
|
|
3696
3787
|
setForms: (state, action) => {
|
|
3697
3788
|
state.forms = {};
|
|
@@ -3781,6 +3872,14 @@ const selectFormOfComponentType = restructureCreateSelectorWithArgs(
|
|
|
3781
3872
|
}
|
|
3782
3873
|
)
|
|
3783
3874
|
);
|
|
3875
|
+
const selectFormOfIssueType = restructureCreateSelectorWithArgs(
|
|
3876
|
+
createSelector(
|
|
3877
|
+
[selectFormMapping, (_state, issueTypeId) => issueTypeId],
|
|
3878
|
+
(userForms, issueTypeId) => {
|
|
3879
|
+
return Object.values(userForms).find((userForm) => userForm.issue_type === issueTypeId);
|
|
3880
|
+
}
|
|
3881
|
+
)
|
|
3882
|
+
);
|
|
3784
3883
|
const selectFormsCount = createSelector([selectFormMapping], (userForms) => {
|
|
3785
3884
|
return Object.keys(userForms).length;
|
|
3786
3885
|
});
|
|
@@ -3788,14 +3887,14 @@ const selectGeneralFormCount = createSelector([selectFormMapping], (userForms) =
|
|
|
3788
3887
|
return Object.values(userForms).filter((form) => !form.component_type).length;
|
|
3789
3888
|
});
|
|
3790
3889
|
const formReducer = formSlice.reducer;
|
|
3791
|
-
const initialState$
|
|
3890
|
+
const initialState$5 = {
|
|
3792
3891
|
formSubmissions: {},
|
|
3793
3892
|
attachments: {}
|
|
3794
3893
|
};
|
|
3795
3894
|
const formSubmissionSlice = createSlice({
|
|
3796
3895
|
name: "formSubmissions",
|
|
3797
|
-
initialState: initialState$
|
|
3798
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
3896
|
+
initialState: initialState$5,
|
|
3897
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$5)),
|
|
3799
3898
|
reducers: {
|
|
3800
3899
|
setFormSubmission: (state, action) => {
|
|
3801
3900
|
state.formSubmissions[action.payload.offline_id] = action.payload;
|
|
@@ -3946,6 +4045,43 @@ const selectFormSubmissionsOfForm = restructureCreateSelectorWithArgs(
|
|
|
3946
4045
|
}
|
|
3947
4046
|
)
|
|
3948
4047
|
);
|
|
4048
|
+
const selectFormSubmissionsByFormRevisions = createSelector([selectFormRevisionMapping, selectFormSubmissions], (revisions, submissions) => {
|
|
4049
|
+
var _a2;
|
|
4050
|
+
const submissionMapping = {};
|
|
4051
|
+
for (const revisionId in revisions) {
|
|
4052
|
+
submissionMapping[revisionId] = [];
|
|
4053
|
+
}
|
|
4054
|
+
for (const submission of submissions) {
|
|
4055
|
+
(_a2 = submissionMapping[submission.form_revision]) == null ? void 0 : _a2.push(submission);
|
|
4056
|
+
}
|
|
4057
|
+
return submissionMapping;
|
|
4058
|
+
});
|
|
4059
|
+
const selectSortedFormSubmissionsOfForm = restructureCreateSelectorWithArgs(
|
|
4060
|
+
createSelector(
|
|
4061
|
+
[
|
|
4062
|
+
selectFormRevisionMapping,
|
|
4063
|
+
selectFormSubmissionsByFormRevisions,
|
|
4064
|
+
(_state, formId2) => formId2
|
|
4065
|
+
],
|
|
4066
|
+
(revisionsMapping, submissionsByRevision, formId2) => {
|
|
4067
|
+
const submissionsByFormRevisions = {};
|
|
4068
|
+
for (const revisionId in revisionsMapping) {
|
|
4069
|
+
const revision = revisionsMapping[revisionId];
|
|
4070
|
+
const submissionsOfRevision = submissionsByRevision[revisionId];
|
|
4071
|
+
if (revision && submissionsOfRevision && revision.form === formId2) {
|
|
4072
|
+
submissionsByFormRevisions[revisionId] = submissionsOfRevision.sort(
|
|
4073
|
+
(a, b) => a.submitted_at < b.submitted_at ? -1 : 1
|
|
4074
|
+
);
|
|
4075
|
+
}
|
|
4076
|
+
}
|
|
4077
|
+
return Object.entries(submissionsByFormRevisions).sort((a, b) => {
|
|
4078
|
+
const aRevision = revisionsMapping[a[0]];
|
|
4079
|
+
const bRevision = revisionsMapping[b[0]];
|
|
4080
|
+
return formRevisionSortFn(aRevision, bRevision);
|
|
4081
|
+
}).map(([_revisionId, submissions]) => submissions).flat();
|
|
4082
|
+
}
|
|
4083
|
+
)
|
|
4084
|
+
);
|
|
3949
4085
|
const selectFormSubmissionsOfIssue = restructureCreateSelectorWithArgs(
|
|
3950
4086
|
createSelector(
|
|
3951
4087
|
[selectFormSubmissions, (_state, issueId) => issueId],
|
|
@@ -3995,12 +4131,12 @@ const selectAttachmentsOfFormSubmission = restructureCreateSelectorWithArgs(
|
|
|
3995
4131
|
)
|
|
3996
4132
|
);
|
|
3997
4133
|
const formSubmissionReducer = formSubmissionSlice.reducer;
|
|
3998
|
-
const initialState$
|
|
4134
|
+
const initialState$4 = {
|
|
3999
4135
|
emailDomains: {}
|
|
4000
4136
|
};
|
|
4001
4137
|
const emailDomainsSlice = createSlice({
|
|
4002
4138
|
name: "emailDomains",
|
|
4003
|
-
initialState: initialState$
|
|
4139
|
+
initialState: initialState$4,
|
|
4004
4140
|
reducers: {
|
|
4005
4141
|
setEmailDomains: (state, action) => {
|
|
4006
4142
|
const emailDomains = {};
|
|
@@ -4027,15 +4163,15 @@ const selectSortedEmailDomains = (state) => Object.values(state.emailDomainsRedu
|
|
|
4027
4163
|
(ed1, ed2) => ed1.domain.localeCompare(ed2.domain)
|
|
4028
4164
|
);
|
|
4029
4165
|
const emailDomainsReducer = emailDomainsSlice.reducer;
|
|
4030
|
-
const initialState$
|
|
4166
|
+
const initialState$3 = {
|
|
4031
4167
|
documents: {},
|
|
4032
4168
|
attachments: {}
|
|
4033
4169
|
};
|
|
4034
4170
|
const documentSlice = createSlice({
|
|
4035
4171
|
name: "documents",
|
|
4036
|
-
initialState: initialState$
|
|
4172
|
+
initialState: initialState$3,
|
|
4037
4173
|
extraReducers: (builder) => builder.addCase("RESET", (state) => {
|
|
4038
|
-
Object.assign(state, initialState$
|
|
4174
|
+
Object.assign(state, initialState$3);
|
|
4039
4175
|
}),
|
|
4040
4176
|
reducers: {
|
|
4041
4177
|
setDocuments: (state, action) => {
|
|
@@ -4260,13 +4396,13 @@ const selectAttachmentsOfDocumentByType = restructureCreateSelectorWithArgs(
|
|
|
4260
4396
|
)
|
|
4261
4397
|
);
|
|
4262
4398
|
const documentsReducer = documentSlice.reducer;
|
|
4263
|
-
const initialState$
|
|
4399
|
+
const initialState$2 = {
|
|
4264
4400
|
teams: {}
|
|
4265
4401
|
};
|
|
4266
4402
|
const teamSlice = createSlice({
|
|
4267
4403
|
name: "teams",
|
|
4268
|
-
initialState: initialState$
|
|
4269
|
-
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$
|
|
4404
|
+
initialState: initialState$2,
|
|
4405
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$2)),
|
|
4270
4406
|
reducers: {
|
|
4271
4407
|
setTeam: (state, action) => {
|
|
4272
4408
|
state.teams[action.payload.offline_id] = action.payload;
|
|
@@ -4316,6 +4452,22 @@ const selectTeamsOfUser = restructureCreateSelectorWithArgs(
|
|
|
4316
4452
|
})
|
|
4317
4453
|
);
|
|
4318
4454
|
const teamReducer = teamSlice.reducer;
|
|
4455
|
+
const initialState$1 = {
|
|
4456
|
+
conversationId: void 0
|
|
4457
|
+
};
|
|
4458
|
+
const agentSlice = createSlice({
|
|
4459
|
+
name: "agents",
|
|
4460
|
+
initialState: initialState$1,
|
|
4461
|
+
extraReducers: (builder) => builder.addCase("RESET", (state) => Object.assign(state, initialState$1)),
|
|
4462
|
+
reducers: {
|
|
4463
|
+
setConversationId: (state, action) => {
|
|
4464
|
+
state.conversationId = action.payload;
|
|
4465
|
+
}
|
|
4466
|
+
}
|
|
4467
|
+
});
|
|
4468
|
+
const { setConversationId } = agentSlice.actions;
|
|
4469
|
+
const selectConversationId = (state) => state.agentReducer.conversationId;
|
|
4470
|
+
const agentReducer = agentSlice.reducer;
|
|
4319
4471
|
const initialState = {
|
|
4320
4472
|
version: 0
|
|
4321
4473
|
};
|
|
@@ -4348,6 +4500,7 @@ const overmapReducers = {
|
|
|
4348
4500
|
componentStageReducer,
|
|
4349
4501
|
componentTypeReducer,
|
|
4350
4502
|
issueReducer,
|
|
4503
|
+
issueTypeReducer,
|
|
4351
4504
|
mapReducer,
|
|
4352
4505
|
organizationReducer,
|
|
4353
4506
|
outboxReducer,
|
|
@@ -4365,7 +4518,8 @@ const overmapReducers = {
|
|
|
4365
4518
|
emailDomainsReducer,
|
|
4366
4519
|
licenseReducer,
|
|
4367
4520
|
documentsReducer,
|
|
4368
|
-
teamReducer
|
|
4521
|
+
teamReducer,
|
|
4522
|
+
agentReducer
|
|
4369
4523
|
};
|
|
4370
4524
|
const overmapReducer = combineReducers(overmapReducers);
|
|
4371
4525
|
const resetStore = "RESET";
|
|
@@ -6292,7 +6446,7 @@ class IssueService extends BaseApiService {
|
|
|
6292
6446
|
// Basic CRUD functions
|
|
6293
6447
|
// TODO: Once all models are represented in `Created<TModel>`, use `Created` in `OptimisticModelResult`, so we don't
|
|
6294
6448
|
// have to repeat it for all optimistic model results (all optimistic results are created).
|
|
6295
|
-
add(issue) {
|
|
6449
|
+
add(issue, issue_type = null) {
|
|
6296
6450
|
const { store } = this.client;
|
|
6297
6451
|
const dateWithoutMilliseconds = /* @__PURE__ */ new Date();
|
|
6298
6452
|
const state = store.getState();
|
|
@@ -6318,7 +6472,8 @@ class IssueService extends BaseApiService {
|
|
|
6318
6472
|
method: HttpMethod.POST,
|
|
6319
6473
|
url: "/issues/",
|
|
6320
6474
|
queryParams: {
|
|
6321
|
-
workspace_id: workspaceId
|
|
6475
|
+
workspace_id: workspaceId,
|
|
6476
|
+
...issue_type ? { issue_type } : {}
|
|
6322
6477
|
},
|
|
6323
6478
|
payload: issuePayload,
|
|
6324
6479
|
blockers: [
|
|
@@ -6503,6 +6658,103 @@ class IssueService extends BaseApiService {
|
|
|
6503
6658
|
store.dispatch(setIssues(result));
|
|
6504
6659
|
}
|
|
6505
6660
|
}
|
|
6661
|
+
class IssueTypeService extends BaseApiService {
|
|
6662
|
+
add(payload) {
|
|
6663
|
+
const { store } = this.client;
|
|
6664
|
+
const activeOrganizationId = store.getState().organizationReducer.activeOrganizationId;
|
|
6665
|
+
if (!activeOrganizationId) {
|
|
6666
|
+
throw new Error(`No active organization, got ${activeOrganizationId} for activeOrganizationId.`);
|
|
6667
|
+
}
|
|
6668
|
+
const offlineIssueType = offline({
|
|
6669
|
+
...payload,
|
|
6670
|
+
submitted_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
6671
|
+
created_by: store.getState().userReducer.currentUser.id,
|
|
6672
|
+
organization: activeOrganizationId
|
|
6673
|
+
});
|
|
6674
|
+
store.dispatch(addIssueType(offlineIssueType));
|
|
6675
|
+
const promise = this.enqueueRequest({
|
|
6676
|
+
method: HttpMethod.POST,
|
|
6677
|
+
url: `/organizations/${activeOrganizationId}/issue-types/`,
|
|
6678
|
+
// Sending only whats needed here
|
|
6679
|
+
payload: {
|
|
6680
|
+
offline_id: offlineIssueType.offline_id,
|
|
6681
|
+
submitted_at: offlineIssueType.submitted_at,
|
|
6682
|
+
icon: offlineIssueType.icon,
|
|
6683
|
+
icon_color: offlineIssueType.icon_color,
|
|
6684
|
+
name: offlineIssueType.name,
|
|
6685
|
+
description: offlineIssueType.description
|
|
6686
|
+
},
|
|
6687
|
+
blockers: [],
|
|
6688
|
+
blocks: [offlineIssueType.offline_id]
|
|
6689
|
+
});
|
|
6690
|
+
promise.then((createdIssueType) => {
|
|
6691
|
+
store.dispatch(setIssueType(createdIssueType));
|
|
6692
|
+
}).catch(() => {
|
|
6693
|
+
store.dispatch(removeIssueType(offlineIssueType.offline_id));
|
|
6694
|
+
});
|
|
6695
|
+
return [offlineIssueType, promise];
|
|
6696
|
+
}
|
|
6697
|
+
update(issueTypeFields) {
|
|
6698
|
+
const { store } = this.client;
|
|
6699
|
+
const issueTypeToBeUpdated = store.getState().issueTypeReducer.issueTypes[issueTypeFields.offline_id];
|
|
6700
|
+
if (!issueTypeToBeUpdated) {
|
|
6701
|
+
throw new Error(`IssueType with offline_id ${issueTypeFields.offline_id} does not exist in the store.`);
|
|
6702
|
+
}
|
|
6703
|
+
const offlineUpdatedIssueType = {
|
|
6704
|
+
...issueTypeToBeUpdated,
|
|
6705
|
+
...issueTypeFields
|
|
6706
|
+
};
|
|
6707
|
+
store.dispatch(updateIssueType(offlineUpdatedIssueType));
|
|
6708
|
+
const promise = this.enqueueRequest({
|
|
6709
|
+
method: HttpMethod.PATCH,
|
|
6710
|
+
url: `/issues/types/${issueTypeFields.offline_id}/`,
|
|
6711
|
+
payload: issueTypeFields,
|
|
6712
|
+
blockers: [issueTypeFields.offline_id],
|
|
6713
|
+
blocks: [issueTypeFields.offline_id]
|
|
6714
|
+
});
|
|
6715
|
+
promise.then((updatedIssueType) => {
|
|
6716
|
+
store.dispatch(setIssueType(updatedIssueType));
|
|
6717
|
+
}).catch(() => {
|
|
6718
|
+
store.dispatch(setIssueType(issueTypeToBeUpdated));
|
|
6719
|
+
});
|
|
6720
|
+
return [offlineUpdatedIssueType, promise];
|
|
6721
|
+
}
|
|
6722
|
+
delete(issueTypeId) {
|
|
6723
|
+
const { store } = this.client;
|
|
6724
|
+
const issueTypeToDelete = store.getState().issueTypeReducer.issueTypes[issueTypeId];
|
|
6725
|
+
if (!issueTypeToDelete) {
|
|
6726
|
+
throw new Error(`IssueType with offline_id ${issueTypeId} does not exist in the store.`);
|
|
6727
|
+
}
|
|
6728
|
+
const issuesOfIssueType = selectIssuesOfIssueType(issueTypeId)(store.getState()) ?? [];
|
|
6729
|
+
store.dispatch(removeIssueType(issueTypeId));
|
|
6730
|
+
store.dispatch(removeIssues(issuesOfIssueType.map((issue) => issue.offline_id)));
|
|
6731
|
+
const promise = this.enqueueRequest({
|
|
6732
|
+
method: HttpMethod.DELETE,
|
|
6733
|
+
url: `/issues/types/${issueTypeId}/`,
|
|
6734
|
+
blockers: [issueTypeId],
|
|
6735
|
+
blocks: []
|
|
6736
|
+
});
|
|
6737
|
+
promise.catch(() => {
|
|
6738
|
+
store.dispatch(setIssueType(issueTypeToDelete));
|
|
6739
|
+
store.dispatch(addIssues(issuesOfIssueType));
|
|
6740
|
+
});
|
|
6741
|
+
return promise;
|
|
6742
|
+
}
|
|
6743
|
+
async refreshStore() {
|
|
6744
|
+
const { store } = this.client;
|
|
6745
|
+
const activeOrganizationId = store.getState().organizationReducer.activeOrganizationId;
|
|
6746
|
+
if (!activeOrganizationId) {
|
|
6747
|
+
throw new Error(`No active organization, got ${activeOrganizationId} for activeOrganizationId.`);
|
|
6748
|
+
}
|
|
6749
|
+
const result = await this.enqueueRequest({
|
|
6750
|
+
method: HttpMethod.GET,
|
|
6751
|
+
url: `/organizations/${activeOrganizationId}/issue-types/`,
|
|
6752
|
+
blockers: [],
|
|
6753
|
+
blocks: []
|
|
6754
|
+
});
|
|
6755
|
+
store.dispatch(setIssueTypes(result));
|
|
6756
|
+
}
|
|
6757
|
+
}
|
|
6506
6758
|
class MainService extends BaseApiService {
|
|
6507
6759
|
async fetchInitialData(replaceExisting, uuid) {
|
|
6508
6760
|
if (replaceExisting) {
|
|
@@ -6678,6 +6930,7 @@ class MainService extends BaseApiService {
|
|
|
6678
6930
|
});
|
|
6679
6931
|
void this.client.documents.refreshStore();
|
|
6680
6932
|
void this.client.issueUpdates.refreshStore();
|
|
6933
|
+
void this.client.issueTypes.refreshStore();
|
|
6681
6934
|
}
|
|
6682
6935
|
store.dispatch(setIsFetchingInitialData(false));
|
|
6683
6936
|
if (overwrite) {
|
|
@@ -7047,7 +7300,7 @@ class UserFormService extends BaseApiService {
|
|
|
7047
7300
|
});
|
|
7048
7301
|
});
|
|
7049
7302
|
}
|
|
7050
|
-
async add(state, initialRevision, url, ownerUser, ownerOrganization, componentTypeId) {
|
|
7303
|
+
async add(state, initialRevision, url, ownerUser, ownerOrganization, componentTypeId, issueTypeId) {
|
|
7051
7304
|
if (!!ownerUser === !!ownerOrganization) {
|
|
7052
7305
|
throw new Error("Exactly one of ownerUser and ownerOrganization must be defined.");
|
|
7053
7306
|
}
|
|
@@ -7067,6 +7320,7 @@ class UserFormService extends BaseApiService {
|
|
|
7067
7320
|
submitted_at: submittedAt,
|
|
7068
7321
|
created_by: currentUser.id,
|
|
7069
7322
|
...componentTypeId && { component_type: componentTypeId },
|
|
7323
|
+
...issueTypeId && { issue_type: issueTypeId },
|
|
7070
7324
|
...ownerAttrs
|
|
7071
7325
|
};
|
|
7072
7326
|
const { payloadWithoutImage, images } = await separateImageFromFields(offlineRevisionPayload);
|
|
@@ -7090,9 +7344,10 @@ class UserFormService extends BaseApiService {
|
|
|
7090
7344
|
payload: {
|
|
7091
7345
|
...offlineFormPayload,
|
|
7092
7346
|
...componentTypeId && { component_type: componentTypeId },
|
|
7347
|
+
...issueTypeId && { issue_type: issueTypeId },
|
|
7093
7348
|
initial_revision: payloadWithoutImage
|
|
7094
7349
|
},
|
|
7095
|
-
blockers: componentTypeId ? [componentTypeId] : [],
|
|
7350
|
+
blockers: componentTypeId ? [componentTypeId] : issueTypeId ? [issueTypeId] : [],
|
|
7096
7351
|
blocks: [offlineFormPayload.offline_id, payloadWithoutImage.offline_id]
|
|
7097
7352
|
});
|
|
7098
7353
|
const attachImagesPromises = this.getAttachImagePromises(images, offlineRevisionPayload.offline_id);
|
|
@@ -7104,7 +7359,7 @@ class UserFormService extends BaseApiService {
|
|
|
7104
7359
|
const settledPromise = Promise.all([formPromise, ...attachImagesPromises]).then(() => formPromise);
|
|
7105
7360
|
return [retForm, retRevision, formPromise, settledPromise];
|
|
7106
7361
|
}
|
|
7107
|
-
async addForOrganization(initialRevision,
|
|
7362
|
+
async addForOrganization(initialRevision, attachedTo) {
|
|
7108
7363
|
const state = this.client.store.getState();
|
|
7109
7364
|
const activeOrganizationId = state.organizationReducer.activeOrganizationId;
|
|
7110
7365
|
if (!activeOrganizationId) {
|
|
@@ -7116,13 +7371,22 @@ class UserFormService extends BaseApiService {
|
|
|
7116
7371
|
`/forms/in-organization/${activeOrganizationId}/`,
|
|
7117
7372
|
void 0,
|
|
7118
7373
|
activeOrganizationId,
|
|
7119
|
-
componentTypeId
|
|
7374
|
+
attachedTo && "componentTypeId" in attachedTo ? attachedTo.componentTypeId : void 0,
|
|
7375
|
+
attachedTo && "issueTypeId" in attachedTo ? attachedTo.issueTypeId : void 0
|
|
7120
7376
|
);
|
|
7121
7377
|
}
|
|
7122
|
-
async addForCurrentUser(initialRevision,
|
|
7378
|
+
async addForCurrentUser(initialRevision, attachedTo) {
|
|
7123
7379
|
const state = this.client.store.getState();
|
|
7124
7380
|
const currentUser = state.userReducer.currentUser;
|
|
7125
|
-
return await this.add(
|
|
7381
|
+
return await this.add(
|
|
7382
|
+
state,
|
|
7383
|
+
initialRevision,
|
|
7384
|
+
"/forms/my-forms/",
|
|
7385
|
+
currentUser.id,
|
|
7386
|
+
void 0,
|
|
7387
|
+
attachedTo && "componentTypeId" in attachedTo ? attachedTo.componentTypeId : void 0,
|
|
7388
|
+
attachedTo && "issueTypeId" in attachedTo ? attachedTo.issueTypeId : void 0
|
|
7389
|
+
);
|
|
7126
7390
|
}
|
|
7127
7391
|
async createRevision(formId2, revision) {
|
|
7128
7392
|
const offlineRevision = offline(revision);
|
|
@@ -8402,6 +8666,7 @@ class OvermapSDK {
|
|
|
8402
8666
|
__publicField(this, "organizations", new OrganizationService(this));
|
|
8403
8667
|
__publicField(this, "organizationAccess", new OrganizationAccessService(this));
|
|
8404
8668
|
__publicField(this, "issues", new IssueService(this));
|
|
8669
|
+
__publicField(this, "issueTypes", new IssueTypeService(this));
|
|
8405
8670
|
__publicField(this, "issueComments", new IssueCommentService(this));
|
|
8406
8671
|
__publicField(this, "issueUpdates", new IssueUpdateService(this));
|
|
8407
8672
|
__publicField(this, "workspaces", new WorkspaceService(this));
|
|
@@ -14844,7 +15109,7 @@ const FormBrowser = memo(
|
|
|
14844
15109
|
}, [filter, maxResults, ownerFilter]);
|
|
14845
15110
|
const userForms = useAppSelector(selectFilteredForms(ownerFilterOptions)) ?? [];
|
|
14846
15111
|
const userFormMapping = useAppSelector(selectFormMapping);
|
|
14847
|
-
const attachableUserForms = userForms.filter((form) => !form.component_type);
|
|
15112
|
+
const attachableUserForms = userForms.filter((form) => !form.component_type && !form.issue_type);
|
|
14848
15113
|
const attachableUserFormMapping = Object.values(userFormMapping).filter(
|
|
14849
15114
|
(form) => !form.component_type
|
|
14850
15115
|
);
|
|
@@ -16298,6 +16563,7 @@ export {
|
|
|
16298
16563
|
IssuePriority,
|
|
16299
16564
|
IssueService,
|
|
16300
16565
|
IssueStatus,
|
|
16566
|
+
IssueTypeService,
|
|
16301
16567
|
IssueUpdateChange,
|
|
16302
16568
|
IssueUpdateService,
|
|
16303
16569
|
LicenseLevel,
|
|
@@ -16382,8 +16648,10 @@ export {
|
|
|
16382
16648
|
addIssueAttachments,
|
|
16383
16649
|
addIssueComment,
|
|
16384
16650
|
addIssueComments,
|
|
16651
|
+
addIssueType,
|
|
16385
16652
|
addIssueUpdate,
|
|
16386
16653
|
addIssueUpdates,
|
|
16654
|
+
addIssues,
|
|
16387
16655
|
addLicenses,
|
|
16388
16656
|
addOrReplaceCategories,
|
|
16389
16657
|
addOrReplaceIssueComment,
|
|
@@ -16400,6 +16668,8 @@ export {
|
|
|
16400
16668
|
addToRecentIssues,
|
|
16401
16669
|
addUsers,
|
|
16402
16670
|
addWorkspace,
|
|
16671
|
+
agentReducer,
|
|
16672
|
+
agentSlice,
|
|
16403
16673
|
areArraysEqual,
|
|
16404
16674
|
authReducer,
|
|
16405
16675
|
authSlice,
|
|
@@ -16495,6 +16765,8 @@ export {
|
|
|
16495
16765
|
issueReducer,
|
|
16496
16766
|
issueSlice,
|
|
16497
16767
|
issueToSearchResult,
|
|
16768
|
+
issueTypeReducer,
|
|
16769
|
+
issueTypeSlice,
|
|
16498
16770
|
licenseReducer,
|
|
16499
16771
|
licenseSlice,
|
|
16500
16772
|
linkStageToForm,
|
|
@@ -16553,8 +16825,10 @@ export {
|
|
|
16553
16825
|
removeIssueAttachment,
|
|
16554
16826
|
removeIssueComment,
|
|
16555
16827
|
removeIssueComments,
|
|
16828
|
+
removeIssueType,
|
|
16556
16829
|
removeIssueUpdate,
|
|
16557
16830
|
removeIssueUpdates,
|
|
16831
|
+
removeIssues,
|
|
16558
16832
|
removeOrganizationAccess,
|
|
16559
16833
|
removeProjectAccess,
|
|
16560
16834
|
removeProjectAccessesOfProject,
|
|
@@ -16636,6 +16910,7 @@ export {
|
|
|
16636
16910
|
selectComponentsByType,
|
|
16637
16911
|
selectComponentsFromComponentType,
|
|
16638
16912
|
selectComponentsMapping,
|
|
16913
|
+
selectConversationId,
|
|
16639
16914
|
selectCreateProjectType,
|
|
16640
16915
|
selectCurrentUser,
|
|
16641
16916
|
selectDeletedRequests,
|
|
@@ -16658,6 +16933,7 @@ export {
|
|
|
16658
16933
|
selectForm,
|
|
16659
16934
|
selectFormMapping,
|
|
16660
16935
|
selectFormOfComponentType,
|
|
16936
|
+
selectFormOfIssueType,
|
|
16661
16937
|
selectFormRevision,
|
|
16662
16938
|
selectFormRevisionMapping,
|
|
16663
16939
|
selectFormRevisions,
|
|
@@ -16666,6 +16942,7 @@ export {
|
|
|
16666
16942
|
selectFormSubmissionAttachmentsMapping,
|
|
16667
16943
|
selectFormSubmissions,
|
|
16668
16944
|
selectFormSubmissionsByComponents,
|
|
16945
|
+
selectFormSubmissionsByFormRevisions,
|
|
16669
16946
|
selectFormSubmissionsMapping,
|
|
16670
16947
|
selectFormSubmissionsOfComponent,
|
|
16671
16948
|
selectFormSubmissionsOfForm,
|
|
@@ -16684,9 +16961,15 @@ export {
|
|
|
16684
16961
|
selectIssueAttachments,
|
|
16685
16962
|
selectIssueCountOfCategory,
|
|
16686
16963
|
selectIssueMapping,
|
|
16964
|
+
selectIssueType,
|
|
16965
|
+
selectIssueTypeMapping,
|
|
16966
|
+
selectIssueTypes,
|
|
16967
|
+
selectIssueTypesOfOrganization,
|
|
16687
16968
|
selectIssueUpdateMapping,
|
|
16688
16969
|
selectIssueUpdatesOfIssue,
|
|
16689
16970
|
selectIssues,
|
|
16971
|
+
selectIssuesOfIssueType,
|
|
16972
|
+
selectIssuesOfIssueTypeCount,
|
|
16690
16973
|
selectLatestFormRevisionByForm,
|
|
16691
16974
|
selectLatestFormRevisionOfForm,
|
|
16692
16975
|
selectLatestFormRevisionsOfComponentTypes,
|
|
@@ -16729,6 +17012,7 @@ export {
|
|
|
16729
17012
|
selectRootDocuments,
|
|
16730
17013
|
selectShowTooltips,
|
|
16731
17014
|
selectSortedEmailDomains,
|
|
17015
|
+
selectSortedFormSubmissionsOfForm,
|
|
16732
17016
|
selectSortedOrganizationLicenses,
|
|
16733
17017
|
selectSortedOrganizationUsers,
|
|
16734
17018
|
selectSortedProjectUsers,
|
|
@@ -16767,6 +17051,7 @@ export {
|
|
|
16767
17051
|
setComponentTypeAttachments,
|
|
16768
17052
|
setComponentTypes,
|
|
16769
17053
|
setComponents,
|
|
17054
|
+
setConversationId,
|
|
16770
17055
|
setCreateProjectType,
|
|
16771
17056
|
setCurrentUser,
|
|
16772
17057
|
setDocumentAttachments,
|
|
@@ -16788,6 +17073,8 @@ export {
|
|
|
16788
17073
|
setIssueAttachments,
|
|
16789
17074
|
setIssueComment,
|
|
16790
17075
|
setIssueComments,
|
|
17076
|
+
setIssueType,
|
|
17077
|
+
setIssueTypes,
|
|
16791
17078
|
setIssueUpdates,
|
|
16792
17079
|
setIssues,
|
|
16793
17080
|
setLicenses,
|
|
@@ -16839,6 +17126,7 @@ export {
|
|
|
16839
17126
|
updateFormSubmissions,
|
|
16840
17127
|
updateIssue,
|
|
16841
17128
|
updateIssueAttachment,
|
|
17129
|
+
updateIssueType,
|
|
16842
17130
|
updateLicense,
|
|
16843
17131
|
updateOrCreateProject,
|
|
16844
17132
|
updateOrganizationAccess,
|