synapse-react-client 4.0.5-b → 4.0.6

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.
Files changed (109) hide show
  1. package/dist/SWC.index.d.ts +2 -0
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +47 -41
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/assets/DefaultColorfulPortalCardBackground.svg +50 -12
  6. package/dist/assets/DefaultColorfulPortalCardBackground.svg.js +4 -4
  7. package/dist/assets/DefaultColorfulPortalCardBackground.svg.js.map +1 -1
  8. package/dist/components/CreateProjectModal/CreateProjectModal.d.ts +2 -1
  9. package/dist/components/CreateProjectModal/CreateProjectModal.d.ts.map +1 -1
  10. package/dist/components/CreateProjectModal/CreateProjectModal.js +35 -30
  11. package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
  12. package/dist/components/DataGrid/DataGridWebSocket.d.ts +4 -0
  13. package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
  14. package/dist/components/DataGrid/DataGridWebSocket.js +47 -37
  15. package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
  16. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  17. package/dist/components/DataGrid/SynapseGrid.js +193 -152
  18. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  19. package/dist/components/DataGrid/useDataGridWebsocket.d.ts +6 -1
  20. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  21. package/dist/components/DataGrid/useDataGridWebsocket.js +78 -69
  22. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  23. package/dist/components/SynapseTable/SynapseTable.d.ts +6 -1
  24. package/dist/components/SynapseTable/SynapseTable.d.ts.map +1 -1
  25. package/dist/components/SynapseTable/SynapseTable.js +123 -93
  26. package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
  27. package/dist/components/TextField/TextField.css +1 -0
  28. package/dist/components/TextField/TextField.d.ts +1 -1
  29. package/dist/components/TextField/TextField.d.ts.map +1 -1
  30. package/dist/components/TextField/TextField.js +30 -28
  31. package/dist/components/TextField/TextField.js.map +1 -1
  32. package/dist/components/TextField/TextField.module.scss +18 -0
  33. package/dist/components/TextField/TextField.module.scss.js +12 -0
  34. package/dist/components/TextField/TextField.module.scss.js.map +1 -0
  35. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts +5 -2
  36. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
  37. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +180 -36
  38. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  39. package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
  40. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +52 -27
  41. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  42. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts +7 -0
  43. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts.map +1 -0
  44. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +323 -0
  45. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -0
  46. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.d.ts +7 -1
  47. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.d.ts.map +1 -1
  48. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js +7 -7
  49. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
  50. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts +9 -5
  51. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts.map +1 -1
  52. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js +79 -16
  53. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
  54. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.d.ts +12 -0
  55. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.d.ts.map +1 -0
  56. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js +20 -0
  57. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -0
  58. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts +3 -3
  59. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
  60. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +54 -41
  61. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
  62. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts +2 -2
  63. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts.map +1 -1
  64. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js +11 -4
  65. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
  66. package/dist/features/entity/metadata-task/utils/taskHasAssignee.d.ts +3 -0
  67. package/dist/features/entity/metadata-task/utils/taskHasAssignee.d.ts.map +1 -0
  68. package/dist/features/entity/metadata-task/utils/taskHasAssignee.js +7 -0
  69. package/dist/features/entity/metadata-task/utils/taskHasAssignee.js.map +1 -0
  70. package/dist/mocks/curation/mockCurationTask.d.ts +10 -0
  71. package/dist/mocks/curation/mockCurationTask.d.ts.map +1 -0
  72. package/dist/mocks/curation/mockCurationTask.js +24 -0
  73. package/dist/mocks/curation/mockCurationTask.js.map +1 -0
  74. package/dist/synapse-queries/KeyFactory.d.ts +8 -3
  75. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  76. package/dist/synapse-queries/KeyFactory.js +22 -7
  77. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  78. package/dist/synapse-queries/curation/task/useCurationTask.d.ts +6 -3
  79. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  80. package/dist/synapse-queries/curation/task/useCurationTask.js +62 -18
  81. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  82. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts +2 -0
  83. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts.map +1 -1
  84. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  85. package/dist/synapse-queries/grid/useGridSession.d.ts +17 -2
  86. package/dist/synapse-queries/grid/useGridSession.d.ts.map +1 -1
  87. package/dist/synapse-queries/grid/useGridSession.js +63 -30
  88. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  89. package/dist/synapse-queries/index.js +103 -99
  90. package/dist/synapse-queries/team/index.js +18 -15
  91. package/dist/synapse-queries/team/useTeamMembers.d.ts +34 -0
  92. package/dist/synapse-queries/team/useTeamMembers.d.ts.map +1 -1
  93. package/dist/synapse-queries/team/useTeamMembers.js +110 -69
  94. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  95. package/dist/synapse-queries/types.d.ts +13 -0
  96. package/dist/synapse-queries/types.d.ts.map +1 -0
  97. package/dist/synapse-queries/types.js +2 -0
  98. package/dist/synapse-queries/types.js.map +1 -0
  99. package/dist/synapse-queries/user/index.js +12 -11
  100. package/dist/synapse-queries/user/useUserGroupHeader.d.ts +5 -0
  101. package/dist/synapse-queries/user/useUserGroupHeader.d.ts.map +1 -1
  102. package/dist/synapse-queries/user/useUserGroupHeader.js +28 -21
  103. package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
  104. package/dist/tsconfig.build.tsbuildinfo +1 -1
  105. package/dist/utils/hooks/useOverlay.d.ts +2 -2
  106. package/dist/utils/hooks/useOverlay.d.ts.map +1 -1
  107. package/dist/utils/hooks/useOverlay.js +41 -41
  108. package/dist/utils/hooks/useOverlay.js.map +1 -1
  109. package/package.json +7 -7
@@ -0,0 +1,323 @@
1
+ import { jsx as t, jsxs as r } from "react/jsx-runtime";
2
+ import { ConfirmationDialog as T } from "../../../../components/ConfirmationDialog/ConfirmationDialog.js";
3
+ import w from "../../../../components/UserOrTeamBadge/UserOrTeamBadge.js";
4
+ import b from "../../../../components/UserSearchBox/UserSearchBox.js";
5
+ import "../../../../assets/icons/error_page/maintenance.svg.js";
6
+ import "../../../../assets/icons/error_page/no-access.svg.js";
7
+ import "../../../../assets/icons/error_page/unavailable.svg.js";
8
+ import "../../../../utils/PermissionLevelToAccessType.js";
9
+ import "../../../../utils/SynapseConstants.js";
10
+ import { useState as e, useCallback as I } from "react";
11
+ import "../../../../synapse-client/SynapseClient.js";
12
+ import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
13
+ import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
14
+ import "@sage-bionetworks/synapse-client/util/SynapseClientError";
15
+ import { TYPE_FILTER as A } from "@sage-bionetworks/synapse-types";
16
+ import "../../../../utils/functions/EntityTypeUtils.js";
17
+ import "lodash-es";
18
+ import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
19
+ import "../../../../utils/context/SynapseContext.js";
20
+ import "use-deep-compare-effect";
21
+ import "@tanstack/react-query";
22
+ import "@tanstack/query-core";
23
+ import "lodash-es/isEmpty";
24
+ import "lodash-es/isEqual";
25
+ import "lodash-es/xorWith";
26
+ import { Stack as d, Typography as S, Alert as P, Box as B, IconButton as x } from "@mui/material";
27
+ import "@sage-bionetworks/synapse-client";
28
+ import "../../../../utils/types/IsType.js";
29
+ import "../../../../utils/hooks/useCookiePreferences.js";
30
+ import "../../../../utils/hooks/useSourceAppConfigs.js";
31
+ import "universal-cookie";
32
+ import "../../../../utils/AppUtils/session/ApplicationSessionContext.js";
33
+ import "../../../../utils/context/FullContextProvider.js";
34
+ import "../../../../utils/context/DocumentMetadataContext.js";
35
+ import '../../../../components/Plot/SynapsePlot.css';import '../../../../components/FullWidthAlert/FullWidthAlert.css';import '../../../../style/components/_spinner.css';/* empty css */
36
+ import "react-router";
37
+ import { displayToast as E } from "../../../../components/ToastMessage/ToastMessage.js";
38
+ import "@sage-bionetworks/synapse-client/generated/models/DoiObjectType";
39
+ import { EditTwoTone as U } from "@mui/icons-material";
40
+ import "react-error-boundary";
41
+ /* empty css */
42
+ import "../../../../components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js";
43
+ import "@mui/icons-material/ContentCopy";
44
+ import "../../../../components/styled/StyledFormControl.js";
45
+ import "../../../../assets/icons/account-certified.svg.js";
46
+ import "../../../../assets/icons/account-enabled-mfa.svg.js";
47
+ import "../../../../assets/icons/account-validated.svg.js";
48
+ import "../../../../utils/functions/DateFormatter.js";
49
+ import "@react-hookz/web";
50
+ import "dayjs";
51
+ import "../../../../assets/ArcusBioIcon.svg.js";
52
+ import "@mui/material/SvgIcon";
53
+ import "../../../../assets/icons/AccessPending.svg.js";
54
+ import "../../../../assets/icons/AccessPendingCloud.svg.js";
55
+ import "../../../../assets/icons/FileWithShield.svg.js";
56
+ import "../../../../assets/icons/MultiFile.svg.js";
57
+ import "../../../../assets/icons/UnpackagableFile.svg.js";
58
+ import "../../../../assets/icons/bioChemicalPhysical.svg.js";
59
+ import "../../../../assets/icons/computationalTool.svg.js";
60
+ import "../../../../assets/icons/dataReuse.svg.js";
61
+ import "../../../../assets/icons/inSilicoModel.svg.js";
62
+ import "../../../../assets/icons/modelSystem.svg.js";
63
+ import "../../../../assets/mui_components/PackagableFile.svg.js";
64
+ import "../../../../assets/icons/spatialProfiling.svg.js";
65
+ import "../../../../components/Authentication/AuthenticationMethodSelection.js";
66
+ import "mui-one-time-password-input";
67
+ import "../../../../components/Authentication/TwoFactorEnrollmentForm.js";
68
+ import "../../../../components/styled/LeftRightPanel.js";
69
+ import "../../../../components/Authentication/RecoveryCodeGrid.js";
70
+ import "../../../../components/GenericCard/GenericCardActionButton.js";
71
+ import "@mui/material/Link";
72
+ import "@mui/material/Skeleton";
73
+ import "@mui/material/Tooltip";
74
+ import "@mui/material/Typography";
75
+ import "../../../../assets/icons/chart2.svg.js";
76
+ import "../../../../assets/icons/Data2.svg.js";
77
+ import "../../../../assets/icons/DNA_Two.svg.js";
78
+ import "../../../../assets/icons/file.svg.js";
79
+ import "../../../../assets/icons/institution.svg.js";
80
+ import "../../../../assets/icons/mouse.svg.js";
81
+ import "../../../../assets/icons/organizations.svg.js";
82
+ import "../../../../assets/icons/person.svg.js";
83
+ import "../../../../assets/icons/study-active.svg.js";
84
+ import "../../../../assets/icons/study-complete.svg.js";
85
+ import "../../../../assets/icons/translational.svg.js";
86
+ import "../../../../assets/icons/tree_horizontal.svg.js";
87
+ import "../../../../assets/icons/standardDataModel.svg.js";
88
+ import "../../../../assets/icons/Challenge.svg.js";
89
+ import "react-intersection-observer";
90
+ import "@mui/icons-material/Close";
91
+ import "../../../../components/styled/StyledPopover.js";
92
+ import "../../../../components/Markdown/MarkdownSynapse.js";
93
+ import "@rjsf/utils";
94
+ import "../../../../components/SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js";
95
+ import "@mui/material/TextField";
96
+ import "jsonpath-plus";
97
+ import "@mui/material/ListItem";
98
+ import "@mui/material/FormHelperText";
99
+ import "@mui/material/List";
100
+ import "../../../../components/DateTimePicker/DateTimePicker.js";
101
+ import "../../../../components/JsonSchemaForm/widgets/SelectWidget.js";
102
+ import "@rjsf/mui";
103
+ import "@rjsf/validator-ajv8";
104
+ import "../../../../utils/context/GlobalIsEditingContext.js";
105
+ import "../../../../assets/icons/DoubleQuotes.svg.js";
106
+ import "../../../../components/EntityDownloadConfirmation/EntityDownloadConfirmation.js";
107
+ import "../../../../components/QueryContext/QueryContext.js";
108
+ import "../../../../components/QueryVisualizationWrapper/QueryVisualizationContext.js";
109
+ import "react-share";
110
+ import "../../../../components/GenericCard/GenericCard.js";
111
+ import "@mui/system";
112
+ import "../../../../components/GenericCard/Linkify.js";
113
+ import "jotai";
114
+ import "lodash-es/noop";
115
+ import "../../../../components/QueryWrapper/TableRowSelectionState.js";
116
+ import "../../../../components/styled/WideButton.js";
117
+ import "pluralize";
118
+ import "react-select";
119
+ import "../../../../components/AccessRequirementList/AccessRequirementList.js";
120
+ import "../../../../components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js";
121
+ import "../../../../components/EntityAclEditor/EntityAclEditor.js";
122
+ import "../../../../components/SynapseTable/SynapseTable.js";
123
+ import "../../../../components/styled/StyledTableContainer.js";
124
+ import "@mui/icons-material/ExitToApp";
125
+ import "../../../../components/ChallengeTeamWizard/CreateChallengeTeam.js";
126
+ import "../../../../components/ChallengeTeamWizard/MembershipRequestForm.js";
127
+ import "@mui/x-data-grid";
128
+ import "@mui/material/InputBase";
129
+ import "@mui/icons-material/Search";
130
+ import "@mui/icons-material/AddCircleTwoTone";
131
+ import "../../../../components/EntityFinder/details/configurations/EntityChildrenDetails.js";
132
+ import "../../../../components/EntityFinder/details/view/DetailsView.js";
133
+ import "immutable";
134
+ import "../../../../components/styled/LightTooltip.js";
135
+ import "../../../../assets/illustrations/challenges_illustration.svg.js";
136
+ import "../../../../assets/illustrations/cohort_builder_illustration.svg.js";
137
+ import "../../../../assets/illustrations/data_access_management_illustration.svg.js";
138
+ import "../../../../assets/illustrations/datasets_illustration.svg.js";
139
+ import "../../../../assets/illustrations/discussions_illustration.svg.js";
140
+ import "../../../../assets/illustrations/docker_illustration.svg.js";
141
+ import "../../../../assets/illustrations/favorites_illustration.svg.js";
142
+ import "../../../../assets/illustrations/files_illustration.svg.js";
143
+ import "../../../../assets/illustrations/following_illustration.svg.js";
144
+ import "../../../../assets/illustrations/projects_illustration.svg.js";
145
+ import "../../../../assets/illustrations/tables_illustration.svg.js";
146
+ import "../../../../assets/illustrations/teams_illustration.svg.js";
147
+ import "../../../../assets/illustrations/trash_can_illustration.svg.js";
148
+ import "../../../../assets/illustrations/wikis_illustration.svg.js";
149
+ import "../../../../assets/illustrations/donation_illustration.svg.js";
150
+ import "../../../../assets/illustrations/left_dot_blob_illustration.svg.js";
151
+ import "../../../../assets/illustrations/right_dot_blob_illustration.svg.js";
152
+ import "../../../../assets/illustrations/left_dot_blob_dark_illustration.svg.js";
153
+ import "../../../../assets/illustrations/right_dot_blob_dark_illustration.svg.js";
154
+ import "../../../../assets/illustrations/underconstruction_illustration.svg.js";
155
+ import "../../../../components/DownloadCart/DownloadListTable.js";
156
+ import "@hyperjump/json-schema";
157
+ import "@hyperjump/json-schema/draft-07";
158
+ import "@hyperjump/json-schema/annotated-instance/experimental";
159
+ import "@hyperjump/json-schema/annotations/experimental";
160
+ import "@rjsf/core";
161
+ import "../../../../components/EntityFinder/EntityFinder.js";
162
+ import "shortid";
163
+ import "../../../../components/Evaluation/EvaluationRoundEditor.js";
164
+ import "react-switch";
165
+ import "../../../../components/Plot/Plot.js";
166
+ import "../../../../components/ColorGradient/ColorGradient.js";
167
+ import "@mui/x-date-pickers";
168
+ import "@mui/x-date-pickers/AdapterDayjs";
169
+ import "@mui/x-date-pickers/LocalizationProvider";
170
+ import "../../../../components/FeaturedDataTabs/FacetPlotsCardGrid.js";
171
+ import "../../../../components/Forum/ForumTable.js";
172
+ import "@mui/icons-material/NavigateNext";
173
+ import "@react-google-maps/api";
174
+ import "../../../../components/Markdown/MarkdownUtils.js";
175
+ import "../../../../components/OAuthClientManagement/OAuthManagement.js";
176
+ import "../../../../components/OrientationBanner/OrientationBanner.js";
177
+ import "lodash-es/cloneDeep";
178
+ import "lodash-es/uniq";
179
+ import "lodash-es/countBy";
180
+ import "lodash-es/first";
181
+ import "lodash-es/orderBy";
182
+ import "../../../../components/styled/LargeButton.js";
183
+ import "../../../../assets/illustrations/diagonalLinePattern.svg.js";
184
+ import "@upsetjs/react";
185
+ /* empty css */
186
+ import "reactflow";
187
+ import "../../../../components/ProvenanceGraph/ProvenanceUtils.js";
188
+ import "reactflow/dist/style.css";
189
+ import "../../../../components/download_list/DownloadDetails.js";
190
+ import "react-transition-group";
191
+ import "../../../../components/WizardChoiceButton/WizardChoiceButton.js";
192
+ import "../../../../components/SynapseTable/export/ExternalAnalysisPlatformsConstants.js";
193
+ import "react-hot-toast";
194
+ import "../../../../components/styled/InlineBadge.js";
195
+ import "../../../../components/AccessRequirementAclEditor/AccessRequirementAclEditor.js";
196
+ import "../../../../components/RssFeedCards/RssFeedCards.js";
197
+ import "../../../../components/styled/InputSizedButton.js";
198
+ import "../../../../components/SubsectionRowRenderer/SubsectionRowRenderer.js";
199
+ import "@apidevtools/json-schema-ref-parser";
200
+ import "json-rules-engine";
201
+ import "lodash-es/find";
202
+ import "lodash-es/findIndex";
203
+ import "lodash-es/get";
204
+ import "lodash-es/isUndefined";
205
+ import "lodash-es/keys";
206
+ import "lodash-es/pick";
207
+ import "lodash-es/remove";
208
+ import "lodash-es/set";
209
+ import "lodash-es/trimStart";
210
+ import "../../../../components/SynapseForm/SynapseFormSubmissionGrid.js";
211
+ import "../../../../components/SynapseChat/AccessLevelMenu.js";
212
+ import "react-draggable";
213
+ import "../../../../components/TimelinePlot/phasesQueryResponseData.js";
214
+ import "../../../../components/EntityHeaderTable/EntityHeaderTable.js";
215
+ import "../../../../components/MuiContainer.js";
216
+ import "@mui/material/Grid";
217
+ import "@mui/icons-material/ArrowForwardIos";
218
+ import "../../../../components/PortalAclEditor/PortalAclEditor.js";
219
+ import "../../../../components/SynapseHomepageV2/HomepageStyles.js";
220
+ import "../../../../assets/icons/Checkbox/Checked.svg.js";
221
+ import "../../../../assets/icons/Checkbox/Indeterminate.svg.js";
222
+ import "../../../../assets/icons/Checkbox/Unchecked.svg.js";
223
+ import "../../../../theme/palette/Palettes.js";
224
+ import "@mui/material/styles";
225
+ import "@mui/utils";
226
+ import "../../../../components/Webhook/WebhookDashboard.js";
227
+ import "../../../../mocks/query/mock_query_data.js";
228
+ import "../../../../mocks/realm/mockRealmPrincipal.js";
229
+ import { useUpdateCurationTask as D } from "../../../../synapse-queries/curation/task/useCurationTask.js";
230
+ import L from "../utils/taskHasAssignee.js";
231
+ function Xr(u) {
232
+ const { taskBundle: s, canEdit: g } = u, o = s.task, { assigneePrincipalId: m } = o, [n, p] = e(!1), [h, f] = e(
233
+ m ?? null
234
+ ), [k, a] = e(!1), { mutateAsync: l, isPending: y } = D({
235
+ onError: (i) => {
236
+ E("Error updating task assignee: " + i.message, "danger");
237
+ }
238
+ });
239
+ let c = /* @__PURE__ */ t(
240
+ B,
241
+ {
242
+ component: "span",
243
+ sx: { flexGrow: 1, fontStyle: "italic", color: "grey.700" },
244
+ children: "Unassigned"
245
+ }
246
+ );
247
+ L(o) && (c = /* @__PURE__ */ t(w, { principalId: m }));
248
+ const v = I(
249
+ async (i) => {
250
+ await l({
251
+ ...o,
252
+ assigneePrincipalId: i
253
+ }), p(!1);
254
+ },
255
+ [o, l]
256
+ ), C = /* @__PURE__ */ t(
257
+ T,
258
+ {
259
+ title: "Set Assignee",
260
+ open: n,
261
+ content: /* @__PURE__ */ r(d, { gap: 2, children: [
262
+ /* @__PURE__ */ t(S, { variant: "body1", gutterBottom: !0, children: "Assign this task to a team or an individual user. All members of a team will be able to collaborate in the same Curator session." }),
263
+ /* @__PURE__ */ t(
264
+ b,
265
+ {
266
+ defaultValue: m,
267
+ onChange: (i) => f(i),
268
+ typeFilter: A.ALL
269
+ },
270
+ n.toString()
271
+ ),
272
+ s.status?.executionDetails?.activeSessionId && /* @__PURE__ */ r(P, { severity: "warning", children: [
273
+ "This task has an active Curator session. If you change the assignee, these effects could happen:",
274
+ /* @__PURE__ */ r("ul", { children: [
275
+ /* @__PURE__ */ t("li", { children: "Current assignee(s) may lose access to the session, unsaved changes will be lost, and they may not be able to complete their work." }),
276
+ /* @__PURE__ */ t("li", { children: "New assignee(s) may not have permission to access the current session" })
277
+ ] }),
278
+ "To avoid these issues, a data manager should create a new task."
279
+ ] })
280
+ ] }),
281
+ confirmButtonProps: {
282
+ children: "Save",
283
+ loading: y
284
+ },
285
+ onConfirm: () => {
286
+ v(h ?? void 0);
287
+ },
288
+ onCancel: () => p(!1)
289
+ }
290
+ );
291
+ return /* @__PURE__ */ r(
292
+ d,
293
+ {
294
+ direction: "row",
295
+ alignItems: "center",
296
+ justifyContent: "space-between",
297
+ spacing: 1,
298
+ onMouseOver: () => {
299
+ a(!0);
300
+ },
301
+ onMouseLeave: () => {
302
+ a(!1);
303
+ },
304
+ children: [
305
+ /* @__PURE__ */ t("span", { style: { overflow: "hidden" }, children: c }),
306
+ k && g && /* @__PURE__ */ t("div", { children: /* @__PURE__ */ t(
307
+ x,
308
+ {
309
+ "aria-label": "Edit assignee",
310
+ size: "small",
311
+ onClick: () => p(!0),
312
+ children: /* @__PURE__ */ t(U, { fontSize: "inherit" })
313
+ }
314
+ ) }),
315
+ C
316
+ ]
317
+ }
318
+ );
319
+ }
320
+ export {
321
+ Xr as default
322
+ };
323
+ //# sourceMappingURL=MetadataTasksTableAssigneeCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetadataTasksTableAssigneeCell.js","sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport UserOrTeamBadge from '@/components/UserOrTeamBadge/UserOrTeamBadge'\nimport UserSearchBox from '@/components/UserSearchBox/UserSearchBox'\nimport { displayToast } from '@/index'\nimport { useUpdateCurationTask } from '@/synapse-queries/curation/task/useCurationTask'\nimport { EditTwoTone } from '@mui/icons-material'\nimport { Alert, Box, IconButton, Stack, Typography } from '@mui/material'\nimport { TaskBundle } from '@sage-bionetworks/synapse-client'\nimport { TYPE_FILTER } from '@sage-bionetworks/synapse-types'\nimport { useCallback, useState } from 'react'\nimport taskHasAssignee from '../utils/taskHasAssignee'\n\nexport type MetadataTasksTableAssigneeCellProps = {\n taskBundle: TaskBundle\n canEdit: boolean\n}\n\nexport default function MetadataTasksTableAssigneeCell(\n props: MetadataTasksTableAssigneeCellProps,\n) {\n const { taskBundle, canEdit } = props\n const curationTask = taskBundle.task!\n const { assigneePrincipalId } = curationTask\n const [showUserPicker, setShowUserPicker] = useState(false)\n const [selectedPrincipalId, setSelectedPrincipalId] = useState<string | null>(\n assigneePrincipalId ?? null,\n )\n const [isHoveringOnCell, setIsHoveringOnCell] = useState(false)\n\n const { mutateAsync: updateCurationTask, isPending: updateTaskIsPending } =\n useUpdateCurationTask({\n onError: error => {\n displayToast('Error updating task assignee: ' + error.message, 'danger')\n },\n })\n\n let assigneeDisplay = (\n <Box\n component=\"span\"\n sx={{ flexGrow: 1, fontStyle: 'italic', color: 'grey.700' }}\n >\n Unassigned\n </Box>\n )\n\n const hasAssignee = taskHasAssignee(curationTask)\n if (hasAssignee) {\n assigneeDisplay = <UserOrTeamBadge principalId={assigneePrincipalId} />\n }\n\n const onConfirmUpdateAssignee = useCallback(\n async (assigneeId: string | undefined) => {\n await updateCurationTask({\n ...curationTask,\n assigneePrincipalId: assigneeId,\n })\n setShowUserPicker(false)\n },\n [curationTask, updateCurationTask],\n )\n\n const editDialog = (\n <ConfirmationDialog\n title=\"Set Assignee\"\n open={showUserPicker}\n content={\n <Stack gap={2}>\n <Typography variant=\"body1\" gutterBottom>\n Assign this task to a team or an individual user. All members of a\n team will be able to collaborate in the same Curator session.\n </Typography>\n <UserSearchBox\n key={showUserPicker.toString()}\n defaultValue={assigneePrincipalId}\n onChange={principalId => setSelectedPrincipalId(principalId)}\n typeFilter={TYPE_FILTER.ALL}\n />\n {taskBundle.status?.executionDetails?.activeSessionId && (\n <Alert severity=\"warning\">\n This task has an active Curator session. If you change the\n assignee, these effects could happen:\n <ul>\n <li>\n Current assignee(s) may lose access to the session, unsaved\n changes will be lost, and they may not be able to complete\n their work.\n </li>\n <li>\n New assignee(s) may not have permission to access the current\n session\n </li>\n </ul>\n To avoid these issues, a data manager should create a new task.\n </Alert>\n )}\n </Stack>\n }\n confirmButtonProps={{\n children: 'Save',\n loading: updateTaskIsPending,\n }}\n onConfirm={() => {\n onConfirmUpdateAssignee(selectedPrincipalId ?? undefined)\n }}\n onCancel={() => setShowUserPicker(false)}\n />\n )\n\n const editButton = (\n <div>\n <IconButton\n aria-label=\"Edit assignee\"\n size=\"small\"\n onClick={() => setShowUserPicker(true)}\n >\n <EditTwoTone fontSize=\"inherit\" />\n </IconButton>\n </div>\n )\n\n return (\n <Stack\n direction={'row'}\n alignItems={'center'}\n justifyContent={'space-between'}\n spacing={1}\n onMouseOver={() => {\n setIsHoveringOnCell(true)\n }}\n onMouseLeave={() => {\n setIsHoveringOnCell(false)\n }}\n >\n <span style={{ overflow: 'hidden' }}>{assigneeDisplay}</span>\n {isHoveringOnCell && canEdit && editButton}\n {editDialog}\n </Stack>\n )\n}\n"],"names":["MetadataTasksTableAssigneeCell","props","taskBundle","canEdit","curationTask","assigneePrincipalId","showUserPicker","setShowUserPicker","useState","selectedPrincipalId","setSelectedPrincipalId","isHoveringOnCell","setIsHoveringOnCell","updateCurationTask","updateTaskIsPending","useUpdateCurationTask","error","displayToast","assigneeDisplay","jsx","Box","taskHasAssignee","UserOrTeamBadge","onConfirmUpdateAssignee","useCallback","assigneeId","editDialog","ConfirmationDialog","jsxs","Stack","Typography","UserSearchBox","principalId","TYPE_FILTER","Alert","IconButton","EditTwoTone"],"mappings":"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"}
@@ -1,5 +1,11 @@
1
1
  import { CreateGridRequest, GridSession, SynapseClientError } from '@sage-bionetworks/synapse-client';
2
- export default function useGetOrCreateGridSessionForSource(): import("@tanstack/react-query").UseMutationResult<GridSession, SynapseClientError, {
2
+ /**
3
+ * Given a source ID, retrieve the latest grid session owned by the user that uses that source. If no grid session
4
+ * exists, a new one is created.
5
+ * @deprecated Functionality to retrieve grid sessions has been replaced by tasks. This hook only remains to enable a legacy
6
+ * scenario that will be removed in the future.
7
+ */
8
+ export default function useGetOrCreateGridSessionForSource_legacy(): import("@tanstack/react-query").UseMutationResult<GridSession, SynapseClientError, {
3
9
  sourceId: string;
4
10
  createRequest: CreateGridRequest;
5
11
  }, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"useGetOrCreateGridSessionForSource.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EACnB,MAAM,kCAAkC,CAAA;AAGzC,MAAM,CAAC,OAAO,UAAU,kCAAkC;cAS1C,MAAM;mBAAiB,iBAAiB;YAcvD"}
1
+ {"version":3,"file":"useGetOrCreateGridSessionForSource.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EACnB,MAAM,kCAAkC,CAAA;AAGzC;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,yCAAyC;cASjD,MAAM;mBAAiB,iBAAiB;YAcvD"}
@@ -1,10 +1,10 @@
1
1
  import { getLatestGridSessionForSource as i } from "../utils/getLatestGridSessionForSource.js";
2
- import { useCreateGridSession as u } from "../../../../synapse-queries/grid/useGridSession.js";
3
- import { useSynapseContext as a } from "../../../../utils/context/SynapseContext.js";
4
- import { useQueryClient as m, useMutation as c } from "@tanstack/react-query";
5
- function y() {
6
- const t = m(), r = a(), { mutateAsync: o } = u();
7
- return c({
2
+ import { useCreateGridSession as a } from "../../../../synapse-queries/grid/useGridSession.js";
3
+ import { useSynapseContext as u } from "../../../../utils/context/SynapseContext.js";
4
+ import { useQueryClient as c, useMutation as m } from "@tanstack/react-query";
5
+ function p() {
6
+ const t = c(), r = u(), { mutateAsync: o } = a();
7
+ return m({
8
8
  mutationFn: async ({ sourceId: s, createRequest: n }) => {
9
9
  const e = await i(s, {
10
10
  queryClient: t,
@@ -15,6 +15,6 @@ function y() {
15
15
  });
16
16
  }
17
17
  export {
18
- y as default
18
+ p as default
19
19
  };
20
20
  //# sourceMappingURL=useGetOrCreateGridSessionForSource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGetOrCreateGridSessionForSource.js","sources":["../../../../../src/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.ts"],"sourcesContent":["import { getLatestGridSessionForSource } from '@/features/entity/metadata-task/utils/getLatestGridSessionForSource'\nimport { useCreateGridSession } from '@/synapse-queries/grid/useGridSession'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n CreateGridRequest,\n GridSession,\n SynapseClientError,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation, useQueryClient } from '@tanstack/react-query'\n\nexport default function useGetOrCreateGridSessionForSource() {\n const queryClient = useQueryClient()\n const synapseContext = useSynapseContext()\n\n const { mutateAsync: createGridSession } = useCreateGridSession()\n\n return useMutation<\n GridSession,\n SynapseClientError,\n { sourceId: string; createRequest: CreateGridRequest }\n >({\n mutationFn: async ({ sourceId, createRequest }) => {\n const maybeGridSession = await getLatestGridSessionForSource(sourceId, {\n queryClient,\n synapseContext,\n })\n\n if (maybeGridSession != null) {\n return maybeGridSession\n }\n return (await createGridSession(createRequest)).gridSession!\n },\n })\n}\n"],"names":["useGetOrCreateGridSessionForSource","queryClient","useQueryClient","synapseContext","useSynapseContext","createGridSession","useCreateGridSession","useMutation","sourceId","createRequest","maybeGridSession","getLatestGridSessionForSource"],"mappings":";;;;AAUA,SAAwBA,IAAqC;AAC3D,QAAMC,IAAcC,EAAA,GACdC,IAAiBC,EAAA,GAEjB,EAAE,aAAaC,EAAA,IAAsBC,EAAA;AAE3C,SAAOC,EAIL;AAAA,IACA,YAAY,OAAO,EAAE,UAAAC,GAAU,eAAAC,QAAoB;AACjD,YAAMC,IAAmB,MAAMC,EAA8BH,GAAU;AAAA,QACrE,aAAAP;AAAA,QACA,gBAAAE;AAAA,MAAA,CACD;AAED,aAAIO,MAGI,MAAML,EAAkBI,CAAa,GAAG;AAAA,IAClD;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"useGetOrCreateGridSessionForSource.js","sources":["../../../../../src/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.ts"],"sourcesContent":["import { getLatestGridSessionForSource } from '@/features/entity/metadata-task/utils/getLatestGridSessionForSource'\nimport { useCreateGridSession } from '@/synapse-queries/grid/useGridSession'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n CreateGridRequest,\n GridSession,\n SynapseClientError,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation, useQueryClient } from '@tanstack/react-query'\n\n/**\n * Given a source ID, retrieve the latest grid session owned by the user that uses that source. If no grid session\n * exists, a new one is created.\n * @deprecated Functionality to retrieve grid sessions has been replaced by tasks. This hook only remains to enable a legacy\n * scenario that will be removed in the future.\n */\nexport default function useGetOrCreateGridSessionForSource_legacy() {\n const queryClient = useQueryClient()\n const synapseContext = useSynapseContext()\n\n const { mutateAsync: createGridSession } = useCreateGridSession()\n\n return useMutation<\n GridSession,\n SynapseClientError,\n { sourceId: string; createRequest: CreateGridRequest }\n >({\n mutationFn: async ({ sourceId, createRequest }) => {\n const maybeGridSession = await getLatestGridSessionForSource(sourceId, {\n queryClient,\n synapseContext,\n })\n\n if (maybeGridSession != null) {\n return maybeGridSession\n }\n return (await createGridSession(createRequest)).gridSession!\n },\n })\n}\n"],"names":["useGetOrCreateGridSessionForSource_legacy","queryClient","useQueryClient","synapseContext","useSynapseContext","createGridSession","useCreateGridSession","useMutation","sourceId","createRequest","maybeGridSession","getLatestGridSessionForSource"],"mappings":";;;;AAgBA,SAAwBA,IAA4C;AAClE,QAAMC,IAAcC,EAAA,GACdC,IAAiBC,EAAA,GAEjB,EAAE,aAAaC,EAAA,IAAsBC,EAAA;AAE3C,SAAOC,EAIL;AAAA,IACA,YAAY,OAAO,EAAE,UAAAC,GAAU,eAAAC,QAAoB;AACjD,YAAMC,IAAmB,MAAMC,EAA8BH,GAAU;AAAA,QACrE,aAAAP;AAAA,QACA,gBAAAE;AAAA,MAAA,CACD;AAED,aAAIO,MAGI,MAAML,EAAkBI,CAAa,GAAG;AAAA,IAClD;AAAA,EAAA,CACD;AACH;"}
@@ -1,11 +1,15 @@
1
- import { CurationTask, GridSession, SynapseClientError } from '@sage-bionetworks/synapse-client';
1
+ import { GridSession, SynapseClientError, TaskBundle } from '@sage-bionetworks/synapse-client';
2
+ export type UseGridSessionForCurationTaskResult = {
3
+ gridSession: GridSession;
4
+ gridSessionOwnerMatchesTaskAssignee: boolean;
5
+ };
2
6
  /**
3
7
  * A hook to get or create a GridSession for a given CurationTask. If an appropriate GridSession exists, it will be returned.
4
8
  * If not, a new GridSession will be created based on the CurationTask's properties.
5
9
  *
6
- * @returns A mutation object with a function to get or create a GridSession for a CurationTask.
10
+ * @returns A mutation object with a function to get or create a GridSession for a CurationTask. The response will also indicate
11
+ * if the GridSession owner matches the task assignee (if there is one).
12
+ * @throws SynapseClientError with status 403 if the user does not have permission to access an existing GridSession
7
13
  */
8
- export default function useGridSessionForCurationTask(): import("@tanstack/react-query").UseMutationResult<GridSession, SynapseClientError, {
9
- curationTask: CurationTask;
10
- }, unknown>;
14
+ export default function useGridSessionForCurationTask(): import("@tanstack/react-query").UseMutationResult<UseGridSessionForCurationTaskResult, SynapseClientError, TaskBundle, unknown>;
11
15
  //# sourceMappingURL=useGridSessionForCurationTask.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGridSessionForCurationTask.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/hooks/useGridSessionForCurationTask.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,kBAAkB,EACnB,MAAM,kCAAkC,CAAA;AAMzC;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,6BAA6B;kBAOjC,YAAY;YAkB/B"}
1
+ {"version":3,"file":"useGridSessionForCurationTask.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/hooks/useGridSessionForCurationTask.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,UAAU,EACX,MAAM,kCAAkC,CAAA;AAKzC,MAAM,MAAM,mCAAmC,GAAG;IAChD,WAAW,EAAE,WAAW,CAAA;IACxB,mCAAmC,EAAE,OAAO,CAAA;CAC7C,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,6BAA6B,oIA6FpD"}
@@ -1,23 +1,86 @@
1
- import { useMutation as i } from "@tanstack/react-query";
2
- import { getCreateGridRequestForMetadataTask as a } from "../utils/getCreateGridRequestForMetadataTask.js";
3
- import { getGridSourceIdForTask as n } from "../utils/getGridSourceIdForTask.js";
4
- import u from "./useGetOrCreateGridSessionForSource.js";
5
- function f() {
6
- const { mutateAsync: t } = u();
7
- return i({
8
- mutationFn: async ({ curationTask: r }) => {
9
- const e = r.taskProperties;
10
- if (e == null)
1
+ import { useUpdateCurationTaskStatus as S } from "../../../../synapse-queries/curation/task/useCurationTask.js";
2
+ import { useCreateGridSession as k, useDeleteGridSession as w, getGridSessionQuery as f } from "../../../../synapse-queries/grid/useGridSession.js";
3
+ import "../../../../utils/PermissionLevelToAccessType.js";
4
+ import "../../../../utils/SynapseConstants.js";
5
+ import "react";
6
+ import "../../../../synapse-client/SynapseClient.js";
7
+ import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
8
+ import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
9
+ import "@sage-bionetworks/synapse-client/util/SynapseClientError";
10
+ import "@sage-bionetworks/synapse-types";
11
+ import "../../../../utils/functions/EntityTypeUtils.js";
12
+ import "lodash-es";
13
+ import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
14
+ import { useSynapseContext as y } from "../../../../utils/context/SynapseContext.js";
15
+ import "use-deep-compare-effect";
16
+ import { useQueryClient as h, useMutation as C } from "@tanstack/react-query";
17
+ import "@tanstack/query-core";
18
+ import "lodash-es/isEmpty";
19
+ import "lodash-es/isEqual";
20
+ import "lodash-es/xorWith";
21
+ import "@mui/material";
22
+ import { SynapseClientError as a } from "@sage-bionetworks/synapse-client";
23
+ import "../../../../utils/types/IsType.js";
24
+ import "react/jsx-runtime";
25
+ import "../../../../utils/hooks/useCookiePreferences.js";
26
+ import "../../../../utils/hooks/useSourceAppConfigs.js";
27
+ import "universal-cookie";
28
+ import "../../../../utils/AppUtils/session/ApplicationSessionContext.js";
29
+ import "../../../../utils/context/FullContextProvider.js";
30
+ import "../../../../utils/context/DocumentMetadataContext.js";
31
+ import '../../../../style/components/_spinner.css';/* empty css */
32
+ import "react-router";
33
+ import { getCreateGridRequestForMetadataTask as G } from "../utils/getCreateGridRequestForMetadataTask.js";
34
+ import T from "../utils/taskHasAssignee.js";
35
+ function nt() {
36
+ const { mutateAsync: p } = k(), { mutateAsync: m } = S(), { mutateAsync: c } = w(), u = y(), r = h();
37
+ return C({
38
+ mutationFn: async (d) => {
39
+ const { task: e, status: s } = d;
40
+ if (!e || !s)
41
+ throw new Error("CurationTaskBundle is missing task or status");
42
+ const o = T(e), n = s?.executionDetails?.activeSessionId;
43
+ if (n)
44
+ try {
45
+ const t = await r.fetchQuery({
46
+ ...f(n, {
47
+ ...u,
48
+ queryClient: r
49
+ }),
50
+ staleTime: 0
51
+ }), g = o && t.ownerPrincipalId == e.assigneePrincipalId;
52
+ return {
53
+ gridSession: t,
54
+ gridSessionOwnerMatchesTaskAssignee: g
55
+ };
56
+ } catch (t) {
57
+ if (!(t instanceof a && t.status === 404)) throw t;
58
+ }
59
+ if (e.taskProperties == null)
11
60
  throw new Error("CurationTask is missing taskProperties");
12
- const o = n(r), s = a(e);
13
- return await t({
14
- sourceId: o,
15
- createRequest: s
16
- });
61
+ const l = G(e), i = (await p(l)).gridSession;
62
+ try {
63
+ await m({
64
+ ...s,
65
+ executionDetails: {
66
+ ...s.executionDetails,
67
+ activeSessionId: i.sessionId,
68
+ concreteType: "org.sagebionetworks.repo.model.curation.execution.GridExecutionDetails"
69
+ }
70
+ });
71
+ } catch (t) {
72
+ throw t instanceof a && t.status === 412 ? (await c(i.sessionId), new Error(
73
+ "Failed to link Grid session to Curation Task. The task was updated since it was last retrieved. Please refresh and try again."
74
+ )) : t;
75
+ }
76
+ return {
77
+ gridSession: i,
78
+ gridSessionOwnerMatchesTaskAssignee: o
79
+ };
17
80
  }
18
81
  });
19
82
  }
20
83
  export {
21
- f as default
84
+ nt as default
22
85
  };
23
86
  //# sourceMappingURL=useGridSessionForCurationTask.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGridSessionForCurationTask.js","sources":["../../../../../src/features/entity/metadata-task/hooks/useGridSessionForCurationTask.ts"],"sourcesContent":["import {\n CurationTask,\n GridSession,\n SynapseClientError,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation } from '@tanstack/react-query'\nimport { getCreateGridRequestForMetadataTask } from '../utils/getCreateGridRequestForMetadataTask'\nimport { getGridSourceIdForTask } from '../utils/getGridSourceIdForTask'\nimport useGetOrCreateGridSessionForSource from './useGetOrCreateGridSessionForSource'\n\n/**\n * A hook to get or create a GridSession for a given CurationTask. If an appropriate GridSession exists, it will be returned.\n * If not, a new GridSession will be created based on the CurationTask's properties.\n *\n * @returns A mutation object with a function to get or create a GridSession for a CurationTask.\n */\nexport default function useGridSessionForCurationTask() {\n const { mutateAsync: getOrCreateGridSession } =\n useGetOrCreateGridSessionForSource()\n\n return useMutation<\n GridSession,\n SynapseClientError,\n { curationTask: CurationTask }\n >({\n mutationFn: async ({ curationTask }) => {\n const taskProperties = curationTask.taskProperties\n if (taskProperties == null) {\n throw new Error('CurationTask is missing taskProperties')\n }\n\n const gridSourceId = getGridSourceIdForTask(curationTask)\n\n const createGridRequest =\n getCreateGridRequestForMetadataTask(taskProperties)\n return await getOrCreateGridSession({\n sourceId: gridSourceId,\n createRequest: createGridRequest,\n })\n },\n })\n}\n"],"names":["useGridSessionForCurationTask","getOrCreateGridSession","useGetOrCreateGridSessionForSource","useMutation","curationTask","taskProperties","gridSourceId","getGridSourceIdForTask","createGridRequest","getCreateGridRequestForMetadataTask"],"mappings":";;;;AAgBA,SAAwBA,IAAgC;AACtD,QAAM,EAAE,aAAaC,EAAA,IACnBC,EAAA;AAEF,SAAOC,EAIL;AAAA,IACA,YAAY,OAAO,EAAE,cAAAC,QAAmB;AACtC,YAAMC,IAAiBD,EAAa;AACpC,UAAIC,KAAkB;AACpB,cAAM,IAAI,MAAM,wCAAwC;AAG1D,YAAMC,IAAeC,EAAuBH,CAAY,GAElDI,IACJC,EAAoCJ,CAAc;AACpD,aAAO,MAAMJ,EAAuB;AAAA,QAClC,UAAUK;AAAA,QACV,eAAeE;AAAA,MAAA,CAChB;AAAA,IACH;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"useGridSessionForCurationTask.js","sources":["../../../../../src/features/entity/metadata-task/hooks/useGridSessionForCurationTask.ts"],"sourcesContent":["import { useUpdateCurationTaskStatus } from '@/synapse-queries/curation/task/useCurationTask'\nimport {\n getGridSessionQuery,\n useCreateGridSession,\n useDeleteGridSession,\n} from '@/synapse-queries/grid/useGridSession'\nimport { useSynapseContext } from '@/utils'\nimport {\n GridSession,\n SynapseClientError,\n TaskBundle,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation, useQueryClient } from '@tanstack/react-query'\nimport { getCreateGridRequestForMetadataTask } from '../utils/getCreateGridRequestForMetadataTask'\nimport taskHasAssignee from '../utils/taskHasAssignee'\n\nexport type UseGridSessionForCurationTaskResult = {\n gridSession: GridSession\n gridSessionOwnerMatchesTaskAssignee: boolean\n}\n\n/**\n * A hook to get or create a GridSession for a given CurationTask. If an appropriate GridSession exists, it will be returned.\n * If not, a new GridSession will be created based on the CurationTask's properties.\n *\n * @returns A mutation object with a function to get or create a GridSession for a CurationTask. The response will also indicate\n * if the GridSession owner matches the task assignee (if there is one).\n * @throws SynapseClientError with status 403 if the user does not have permission to access an existing GridSession\n */\nexport default function useGridSessionForCurationTask() {\n const { mutateAsync: createGridSession } = useCreateGridSession()\n const { mutateAsync: updateCurationTaskStatus } =\n useUpdateCurationTaskStatus()\n const { mutateAsync: deleteGridSession } = useDeleteGridSession()\n\n const synapseContext = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useMutation<\n UseGridSessionForCurationTaskResult,\n SynapseClientError,\n TaskBundle\n >({\n mutationFn: async curationTaskBundle => {\n const { task, status } = curationTaskBundle\n if (!task || !status) {\n throw new Error('CurationTaskBundle is missing task or status')\n }\n\n const hasAssignee = taskHasAssignee(task)\n\n const gridSessionId = status?.executionDetails?.activeSessionId\n if (gridSessionId) {\n try {\n // Verify the session is still active before returning it\n const gridSession = await queryClient.fetchQuery({\n ...getGridSessionQuery(gridSessionId, {\n ...synapseContext,\n queryClient,\n }),\n staleTime: 0,\n })\n\n const assigneeMatchesGridSessionOwner =\n hasAssignee &&\n gridSession.ownerPrincipalId == task.assigneePrincipalId\n\n return {\n gridSession,\n gridSessionOwnerMatchesTaskAssignee:\n assigneeMatchesGridSessionOwner,\n }\n } catch (e) {\n if (e instanceof SynapseClientError && e.status === 404) {\n // Session not found, will create a new one\n } else {\n throw e\n }\n }\n }\n // Create a session and link it to the task\n const taskProperties = task.taskProperties\n if (taskProperties == null) {\n throw new Error('CurationTask is missing taskProperties')\n }\n\n const createGridRequest = getCreateGridRequestForMetadataTask(task)\n const createGridResponse = await createGridSession(createGridRequest)\n const gridSession = createGridResponse.gridSession!\n\n // Associate the new session with the task\n try {\n await updateCurationTaskStatus({\n ...status,\n executionDetails: {\n ...status.executionDetails,\n activeSessionId: gridSession.sessionId!,\n concreteType:\n 'org.sagebionetworks.repo.model.curation.execution.GridExecutionDetails',\n },\n })\n } catch (e) {\n if (e instanceof SynapseClientError && e.status === 412) {\n // etag mismatch -- possible race condition.\n // Delete the session we just created to avoid orphaned sessions, and throw an error to notify the user that they may need to refresh and try again.\n await deleteGridSession(gridSession.sessionId!)\n throw new Error(\n 'Failed to link Grid session to Curation Task. The task was updated since it was last retrieved. Please refresh and try again.',\n )\n } else {\n // Rethrow any other error\n throw e\n }\n }\n\n // Since we just created the session, the user must have access, and the owner must match the assignee (if there is one).\n return {\n gridSession,\n gridSessionOwnerMatchesTaskAssignee: hasAssignee,\n }\n },\n })\n}\n"],"names":["useGridSessionForCurationTask","createGridSession","useCreateGridSession","updateCurationTaskStatus","useUpdateCurationTaskStatus","deleteGridSession","useDeleteGridSession","synapseContext","useSynapseContext","queryClient","useQueryClient","useMutation","curationTaskBundle","task","status","hasAssignee","taskHasAssignee","gridSessionId","gridSession","getGridSessionQuery","assigneeMatchesGridSessionOwner","e","SynapseClientError","createGridRequest","getCreateGridRequestForMetadataTask"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,SAAwBA,KAAgC;AACtD,QAAM,EAAE,aAAaC,EAAA,IAAsBC,EAAA,GACrC,EAAE,aAAaC,EAAA,IACnBC,EAAA,GACI,EAAE,aAAaC,EAAA,IAAsBC,EAAA,GAErCC,IAAiBC,EAAA,GACjBC,IAAcC,EAAA;AAEpB,SAAOC,EAIL;AAAA,IACA,YAAY,OAAMC,MAAsB;AACtC,YAAM,EAAE,MAAAC,GAAM,QAAAC,EAAA,IAAWF;AACzB,UAAI,CAACC,KAAQ,CAACC;AACZ,cAAM,IAAI,MAAM,8CAA8C;AAGhE,YAAMC,IAAcC,EAAgBH,CAAI,GAElCI,IAAgBH,GAAQ,kBAAkB;AAChD,UAAIG;AACF,YAAI;AAEF,gBAAMC,IAAc,MAAMT,EAAY,WAAW;AAAA,YAC/C,GAAGU,EAAoBF,GAAe;AAAA,cACpC,GAAGV;AAAA,cACH,aAAAE;AAAA,YAAA,CACD;AAAA,YACD,WAAW;AAAA,UAAA,CACZ,GAEKW,IACJL,KACAG,EAAY,oBAAoBL,EAAK;AAEvC,iBAAO;AAAA,YACL,aAAAK;AAAAA,YACA,qCACEE;AAAA,UAAA;AAAA,QAEN,SAASC,GAAG;AACV,cAAI,EAAAA,aAAaC,KAAsBD,EAAE,WAAW,KAGlD,OAAMA;AAAA,QAEV;AAIF,UADuBR,EAAK,kBACN;AACpB,cAAM,IAAI,MAAM,wCAAwC;AAG1D,YAAMU,IAAoBC,EAAoCX,CAAI,GAE5DK,KADqB,MAAMjB,EAAkBsB,CAAiB,GAC7B;AAGvC,UAAI;AACF,cAAMpB,EAAyB;AAAA,UAC7B,GAAGW;AAAA,UACH,kBAAkB;AAAA,YAChB,GAAGA,EAAO;AAAA,YACV,iBAAiBI,EAAY;AAAA,YAC7B,cACE;AAAA,UAAA;AAAA,QACJ,CACD;AAAA,MACH,SAASG,GAAG;AACV,cAAIA,aAAaC,KAAsBD,EAAE,WAAW,OAGlD,MAAMhB,EAAkBa,EAAY,SAAU,GACxC,IAAI;AAAA,UACR;AAAA,QAAA,KAIIG;AAAA,MAEV;AAGA,aAAO;AAAA,QACL,aAAAH;AAAA,QACA,qCAAqCH;AAAA,MAAA;AAAA,IAEzC;AAAA,EAAA,CACD;AACH;"}
@@ -0,0 +1,12 @@
1
+ import { CurationTask, GridSession, SynapseClientError } from '@sage-bionetworks/synapse-client';
2
+ /**
3
+ * A hook to get or create a GridSession for an unassigned CurationTask. The session will be owned by the calling user.
4
+ *
5
+ * @returns A mutation object with a function to get or create a GridSession for a CurationTask.
6
+ * @deprecated This functionality is preserved to ensure users are not blocked from doing work, but enables a critical
7
+ * data loss scenario, so we must aim to remove it.
8
+ */
9
+ export default function useGridSessionForCurationTask_legacy(): import("@tanstack/react-query").UseMutationResult<GridSession, SynapseClientError, {
10
+ curationTask: CurationTask;
11
+ }, unknown>;
12
+ //# sourceMappingURL=useGridSessionForCurationTask_legacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGridSessionForCurationTask_legacy.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,kBAAkB,EACnB,MAAM,kCAAkC,CAAA;AAMzC;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,oCAAoC;kBAOxC,YAAY;YAa/B"}
@@ -0,0 +1,20 @@
1
+ import { useMutation as s } from "@tanstack/react-query";
2
+ import { getCreateGridRequestForMetadataTask as a } from "../utils/getCreateGridRequestForMetadataTask.js";
3
+ import { getGridSourceIdForTask as i } from "../utils/getGridSourceIdForTask.js";
4
+ import u from "./useGetOrCreateGridSessionForSource.js";
5
+ function G() {
6
+ const { mutateAsync: r } = u();
7
+ return s({
8
+ mutationFn: async ({ curationTask: e }) => {
9
+ const t = i(e), o = a(e);
10
+ return await r({
11
+ sourceId: t,
12
+ createRequest: o
13
+ });
14
+ }
15
+ });
16
+ }
17
+ export {
18
+ G as default
19
+ };
20
+ //# sourceMappingURL=useGridSessionForCurationTask_legacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGridSessionForCurationTask_legacy.js","sources":["../../../../../src/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.ts"],"sourcesContent":["import {\n CurationTask,\n GridSession,\n SynapseClientError,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation } from '@tanstack/react-query'\nimport { getCreateGridRequestForMetadataTask } from '../utils/getCreateGridRequestForMetadataTask'\nimport { getGridSourceIdForTask } from '../utils/getGridSourceIdForTask'\nimport useGetOrCreateGridSessionForSource from './useGetOrCreateGridSessionForSource'\n\n/**\n * A hook to get or create a GridSession for an unassigned CurationTask. The session will be owned by the calling user.\n *\n * @returns A mutation object with a function to get or create a GridSession for a CurationTask.\n * @deprecated This functionality is preserved to ensure users are not blocked from doing work, but enables a critical\n * data loss scenario, so we must aim to remove it.\n */\nexport default function useGridSessionForCurationTask_legacy() {\n const { mutateAsync: getOrCreateGridSession } =\n useGetOrCreateGridSessionForSource()\n\n return useMutation<\n GridSession,\n SynapseClientError,\n { curationTask: CurationTask }\n >({\n mutationFn: async ({ curationTask }) => {\n const gridSourceId = getGridSourceIdForTask(curationTask)\n\n const createGridRequest =\n getCreateGridRequestForMetadataTask(curationTask)\n return await getOrCreateGridSession({\n sourceId: gridSourceId,\n createRequest: createGridRequest,\n })\n },\n })\n}\n"],"names":["useGridSessionForCurationTask_legacy","getOrCreateGridSession","useGetOrCreateGridSessionForSource","useMutation","curationTask","gridSourceId","getGridSourceIdForTask","createGridRequest","getCreateGridRequestForMetadataTask"],"mappings":";;;;AAiBA,SAAwBA,IAAuC;AAC7D,QAAM,EAAE,aAAaC,EAAA,IACnBC,EAAA;AAEF,SAAOC,EAIL;AAAA,IACA,YAAY,OAAO,EAAE,cAAAC,QAAmB;AACtC,YAAMC,IAAeC,EAAuBF,CAAY,GAElDG,IACJC,EAAoCJ,CAAY;AAClD,aAAO,MAAMH,EAAuB;AAAA,QAClC,UAAUI;AAAA,QACV,eAAeE;AAAA,MAAA,CAChB;AAAA,IACH;AAAA,EAAA,CACD;AACH;"}