@ynput/ayon-frontend-shared 0.3.2 → 0.3.4

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 (61) hide show
  1. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +1 -1
  2. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  3. package/dist/shared/src/api/queries/entities/updateEntity.es.js +125 -120
  4. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  5. package/dist/shared/src/api/queries/views/getViews.cjs.js +1 -1
  6. package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
  7. package/dist/shared/src/api/queries/views/getViews.es.js +20 -24
  8. package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
  9. package/dist/shared/src/api/queries/views/updateViews.cjs.js +1 -1
  10. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  11. package/dist/shared/src/api/queries/views/updateViews.es.js +177 -118
  12. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  13. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  14. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  15. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +30 -28
  16. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  17. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  18. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  19. package/dist/shared/src/components/LinksManager/LinksManager.es.js +74 -56
  20. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  21. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js +2 -1
  22. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js.map +1 -1
  23. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js +5 -4
  24. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js.map +1 -1
  25. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  26. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  27. package/dist/shared/src/containers/Feed/Feed.es.js +123 -113
  28. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  29. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +3 -3
  30. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  31. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +178 -172
  32. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  33. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  34. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  35. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +42 -41
  36. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  37. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  38. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  39. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +26 -26
  40. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  41. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  42. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  43. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +80 -76
  44. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  45. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  46. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  47. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +95 -52
  48. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  49. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
  50. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  51. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +13 -13
  52. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  53. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  54. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  55. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +55 -38
  56. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  57. package/dist/types/components/LinksManager/LinkManagerItem.d.ts +1 -0
  58. package/dist/types/containers/Views/context/ViewsContext.d.ts +1 -0
  59. package/dist/types/containers/Views/hooks/useBaseViewMutations.d.ts +5 -2
  60. package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +3 -3
  61. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { useCallback as c } from "react";
1
+ import { useCallback as l } from "react";
2
2
  import "../../../api/base/client.es.js";
3
3
  import "../../../api/generated/graphql.es.js";
4
4
  import "../../../api/generated/graphqlLinks.es.js";
@@ -80,95 +80,138 @@ import "../../../api/queries/users/getUsers.es.js";
80
80
  import "../../../api/queries/users/updateUsers.es.js";
81
81
  import "../../../api/queries/users/guests.es.js";
82
82
  import "../../../api/queries/versions/updateVersions.es.js";
83
- import { getScopeTag as n } from "../../../api/queries/views/getViews.es.js";
84
- import { useCreateViewMutation as b, useUpdateViewMutation as y, useDeleteViewMutation as g, viewsQueries as l } from "../../../api/queries/views/updateViews.es.js";
83
+ import { getScopeTag as w } from "../../../api/queries/views/getViews.es.js";
84
+ import { useCreateViewMutation as B, useUpdateViewMutation as F, useDeleteViewMutation as P, useSetDefaultViewMutation as y, viewsQueries as u } from "../../../api/queries/views/updateViews.es.js";
85
85
  import "../../../api/queries/watchers/getWatchers.es.js";
86
86
  import "../../../api/queries/uris/getUris.es.js";
87
- import { toast as s } from "react-toastify";
88
- import { BASE_VIEW_ID as M } from "./useBuildViewMenuItems.es.js";
89
- const io = ({
90
- viewType: i,
91
- projectName: e,
92
- workingSettings: a,
93
- dispatch: p
87
+ import { toast as m } from "react-toastify";
88
+ import { BASE_VIEW_ID as D } from "./useBuildViewMenuItems.es.js";
89
+ const mo = ({
90
+ viewType: e,
91
+ projectName: i,
92
+ workingSettings: p,
93
+ workingView: n,
94
+ dispatch: a
94
95
  }) => {
95
- const [u] = b(), [d] = y(), [w] = g(), v = c(
96
+ const [v] = B(), [c] = F(), [f] = P(), [V] = y(), b = l(
96
97
  async (r) => {
97
98
  try {
98
- const m = await u({
99
+ const s = await v({
99
100
  payload: {
100
- label: M,
101
+ label: D,
101
102
  working: !1,
102
- settings: a || {}
103
+ settings: p || {}
103
104
  },
104
- viewType: i,
105
- projectName: r ? void 0 : e
105
+ viewType: e,
106
+ projectName: r ? void 0 : i
106
107
  }).unwrap();
107
- p(
108
- l.util.invalidateTags([
109
- { type: "view", id: m.id },
110
- n(i, r ? void 0 : e)
108
+ a(
109
+ u.util.invalidateTags([
110
+ { type: "view", id: s.id },
111
+ w(e, r ? void 0 : i)
111
112
  ])
112
113
  );
113
- const $ = r ? "Studio" : "Project";
114
- s.success(`${$} default view created successfully`);
114
+ const d = r ? "Studio" : "Project";
115
+ m.success(`${d} default view created successfully`);
115
116
  } catch (t) {
116
117
  const o = r ? "studio" : "project";
117
- console.error(`Failed to create ${o} base view:`, t), s.error(`Failed to create ${o} base view: ${t?.message || t}`);
118
+ console.error(`Failed to create ${o} base view:`, t), m.error(`Failed to create ${o} base view: ${t?.message || t}`);
118
119
  }
119
120
  },
120
- [u, i, e, a, p]
121
- ), f = c(
121
+ [v, e, i, p, a]
122
+ ), $ = l(
122
123
  async (r, t) => {
123
124
  try {
124
- await d({
125
+ await c({
125
126
  viewId: r,
126
- viewType: i,
127
- projectName: t ? void 0 : e,
128
- payload: { settings: a || {} }
129
- }).unwrap(), p(
130
- l.util.invalidateTags([
127
+ viewType: e,
128
+ projectName: t ? void 0 : i,
129
+ payload: { settings: p || {} }
130
+ }).unwrap(), a(
131
+ u.util.invalidateTags([
131
132
  { type: "view", id: r },
132
- n(i, t ? void 0 : e)
133
+ w(e, t ? void 0 : i)
133
134
  ])
134
135
  );
135
- const m = t ? "Studio" : "Project";
136
- s.success(`${m} default view updated successfully`);
136
+ const s = t ? "Studio" : "Project";
137
+ m.success(`${s} default view updated successfully`);
137
138
  } catch (o) {
138
- const m = t ? "studio" : "project";
139
- console.error(`Failed to update ${m} base view:`, o), s.error(`Failed to update ${m} base view: ${o?.message || o}`);
139
+ const s = t ? "studio" : "project";
140
+ console.error(`Failed to update ${s} base view:`, o), m.error(`Failed to update ${s} base view: ${o?.message || o}`);
140
141
  }
141
142
  },
142
- [d, i, e, a, p]
143
- ), V = c(
143
+ [c, e, i, p, a]
144
+ ), g = l(
144
145
  async (r, t) => {
145
146
  try {
146
- await w({
147
+ await f({
147
148
  viewId: r,
148
- viewType: i,
149
- projectName: t ? void 0 : e
150
- }).unwrap(), p(
151
- l.util.invalidateTags([
149
+ viewType: e,
150
+ projectName: t ? void 0 : i
151
+ }).unwrap(), a(
152
+ u.util.invalidateTags([
152
153
  { type: "view", id: r },
153
- n(i, t ? void 0 : e)
154
+ w(e, t ? void 0 : i)
154
155
  ])
155
156
  );
156
157
  const o = t ? "Studio" : "Project";
157
- s.success(`${o} default view removed successfully`);
158
+ m.success(`${o} default view removed successfully`);
158
159
  } catch (o) {
159
- const m = t ? "studio" : "project";
160
- console.error(`Failed to remove ${m} base view:`, o), s.error(`Failed to remove ${m} base view: ${o?.message || o}`);
160
+ const s = t ? "studio" : "project";
161
+ console.error(`Failed to remove ${s} base view:`, o), m.error(`Failed to remove ${s} base view: ${o?.message || o}`);
161
162
  }
162
163
  },
163
- [w, i, e, p]
164
+ [f, e, i, a]
165
+ ), M = l(
166
+ async (r) => {
167
+ try {
168
+ if (!n?.id)
169
+ throw new Error("No working view available to update");
170
+ const s = (await a(
171
+ u.endpoints.getBaseView.initiate(
172
+ {
173
+ viewType: e,
174
+ projectName: r ? void 0 : i
175
+ },
176
+ { subscribe: !1, forceRefetch: !0 }
177
+ )
178
+ )).data;
179
+ if (!s || !s.settings)
180
+ throw new Error("Base view not found or has no settings");
181
+ await c({
182
+ viewId: n.id,
183
+ viewType: e,
184
+ projectName: i,
185
+ payload: { settings: s.settings }
186
+ }).unwrap(), await V({
187
+ viewType: e,
188
+ projectName: i,
189
+ setDefaultViewRequestModel: { viewId: n.id }
190
+ }).unwrap();
191
+ const d = r ? "Studio" : "Project";
192
+ m.success(`Loaded ${d} default view to working view`);
193
+ } catch (t) {
194
+ const o = r ? "studio" : "project";
195
+ console.error(`Failed to load ${o} base view:`, t), m.error(`Failed to load ${o} base view: ${t?.message || t}`);
196
+ }
197
+ },
198
+ [
199
+ n,
200
+ c,
201
+ V,
202
+ e,
203
+ i,
204
+ a
205
+ ]
164
206
  );
165
207
  return {
166
- onCreateBaseView: v,
167
- onUpdateBaseView: f,
168
- onDeleteBaseView: V
208
+ onCreateBaseView: b,
209
+ onUpdateBaseView: $,
210
+ onDeleteBaseView: g,
211
+ onLoadBaseView: M
169
212
  };
170
213
  };
171
214
  export {
172
- io as useBaseViewMutations
215
+ mo as useBaseViewMutations
173
216
  };
174
217
  //# sourceMappingURL=useBaseViewMutations.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBaseViewMutations.es.js","sources":["../../../../../../src/containers/Views/hooks/useBaseViewMutations.ts"],"sourcesContent":["import { useCallback } from 'react'\nimport {\n useCreateViewMutation,\n useUpdateViewMutation,\n useDeleteViewMutation,\n viewsQueries,\n} from '@shared/api'\nimport { toast } from 'react-toastify'\nimport { getScopeTag } from '@shared/api/queries/views/getViews'\nimport { BASE_VIEW_ID } from './useBuildViewMenuItems'\nimport { ViewSettings } from '../context/ViewsContext'\n\ntype Props = {\n viewType?: string\n projectName?: string\n workingSettings?: ViewSettings\n dispatch?: any\n}\n\nexport type UseBaseViewMutations = {\n onCreateBaseView: (isStudioScope: boolean) => Promise<void>\n onUpdateBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>\n onDeleteBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>\n}\n\nexport const useBaseViewMutations = ({\n viewType,\n projectName,\n workingSettings,\n dispatch,\n}: Props): UseBaseViewMutations => {\n const [createViewMutation] = useCreateViewMutation()\n const [updateViewMutation] = useUpdateViewMutation()\n const [deleteViewMutation] = useDeleteViewMutation()\n\n const onCreateBaseView = useCallback(\n async (isStudioScope: boolean) => {\n try {\n const settings = workingSettings || {}\n const baseViewPayload = {\n label: BASE_VIEW_ID,\n working: false,\n settings,\n } as any\n\n const result = await createViewMutation({\n payload: baseViewPayload,\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n }).unwrap()\n\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'view', id: result.id },\n getScopeTag(viewType as string, isStudioScope ? undefined : projectName),\n ]),\n )\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`${scope} default view created successfully`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to create ${scope} base view:`, error)\n toast.error(`Failed to create ${scope} base view: ${error?.message || error}`)\n }\n },\n [createViewMutation, viewType, projectName, workingSettings, dispatch],\n )\n\n const onUpdateBaseView = useCallback(\n async (baseViewId: string, isStudioScope: boolean) => {\n try {\n const settings = workingSettings || {}\n await updateViewMutation({\n viewId: baseViewId,\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n payload: { settings },\n }).unwrap()\n\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'view', id: baseViewId },\n getScopeTag(viewType as string, isStudioScope ? undefined : projectName),\n ]),\n )\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`${scope} default view updated successfully`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to update ${scope} base view:`, error)\n toast.error(`Failed to update ${scope} base view: ${error?.message || error}`)\n }\n },\n [updateViewMutation, viewType, projectName, workingSettings, dispatch],\n )\n\n const onDeleteBaseView = useCallback(\n async (baseViewId: string, isStudioScope: boolean) => {\n try {\n await deleteViewMutation({\n viewId: baseViewId,\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n }).unwrap()\n\n // Invalidate tags to force refetch - use the same tag format as getBaseView\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'view', id: baseViewId },\n getScopeTag(viewType as string, isStudioScope ? undefined : projectName),\n ]),\n )\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`${scope} default view removed successfully`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to remove ${scope} base view:`, error)\n toast.error(`Failed to remove ${scope} base view: ${error?.message || error}`)\n }\n },\n [deleteViewMutation, viewType, projectName, dispatch],\n )\n\n return {\n onCreateBaseView,\n onUpdateBaseView,\n onDeleteBaseView,\n }\n}\n"],"names":["useBaseViewMutations","viewType","projectName","workingSettings","dispatch","createViewMutation","useCreateViewMutation","updateViewMutation","useUpdateViewMutation","deleteViewMutation","useDeleteViewMutation","onCreateBaseView","useCallback","isStudioScope","result","BASE_VIEW_ID","viewsQueries","getScopeTag","scope","toast","error","onUpdateBaseView","baseViewId","onDeleteBaseView"],"mappings":"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"}
1
+ {"version":3,"file":"useBaseViewMutations.es.js","sources":["../../../../../../src/containers/Views/hooks/useBaseViewMutations.ts"],"sourcesContent":["import { useCallback } from 'react'\nimport {\n useCreateViewMutation,\n useUpdateViewMutation,\n useDeleteViewMutation,\n useSetDefaultViewMutation,\n viewsQueries,\n ViewListItemModel,\n} from '@shared/api'\nimport { toast } from 'react-toastify'\nimport { getScopeTag } from '@shared/api/queries/views/getViews'\nimport { BASE_VIEW_ID } from './useBuildViewMenuItems'\nimport { ViewSettings } from '@shared/containers'\n\ntype Props = {\n viewType?: string\n projectName?: string\n workingSettings?: ViewSettings\n workingView?: ViewListItemModel\n dispatch?: any\n}\n\nexport type UseBaseViewMutations = {\n onCreateBaseView: (isStudioScope: boolean) => Promise<void>\n onUpdateBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>\n onDeleteBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>\n onLoadBaseView: (isStudioScope: boolean) => Promise<void>\n}\n\nexport const useBaseViewMutations = ({\n viewType,\n projectName,\n workingSettings,\n workingView,\n dispatch,\n}: Props): UseBaseViewMutations => {\n const [createViewMutation] = useCreateViewMutation()\n const [updateViewMutation] = useUpdateViewMutation()\n const [deleteViewMutation] = useDeleteViewMutation()\n const [setDefaultViewMutation] = useSetDefaultViewMutation()\n\n const onCreateBaseView = useCallback(\n async (isStudioScope: boolean) => {\n try {\n const settings = workingSettings || {}\n const baseViewPayload = {\n label: BASE_VIEW_ID,\n working: false,\n settings,\n } as any\n\n const result = await createViewMutation({\n payload: baseViewPayload,\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n }).unwrap()\n\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'view', id: result.id },\n getScopeTag(viewType as string, isStudioScope ? undefined : projectName),\n ]),\n )\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`${scope} default view created successfully`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to create ${scope} base view:`, error)\n toast.error(`Failed to create ${scope} base view: ${error?.message || error}`)\n }\n },\n [createViewMutation, viewType, projectName, workingSettings, dispatch],\n )\n\n const onUpdateBaseView = useCallback(\n async (baseViewId: string, isStudioScope: boolean) => {\n try {\n const settings = workingSettings || {}\n await updateViewMutation({\n viewId: baseViewId,\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n payload: { settings },\n }).unwrap()\n\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'view', id: baseViewId },\n getScopeTag(viewType as string, isStudioScope ? undefined : projectName),\n ]),\n )\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`${scope} default view updated successfully`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to update ${scope} base view:`, error)\n toast.error(`Failed to update ${scope} base view: ${error?.message || error}`)\n }\n },\n [updateViewMutation, viewType, projectName, workingSettings, dispatch],\n )\n\n const onDeleteBaseView = useCallback(\n async (baseViewId: string, isStudioScope: boolean) => {\n try {\n await deleteViewMutation({\n viewId: baseViewId,\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n }).unwrap()\n\n // Invalidate tags to force refetch - use the same tag format as getBaseView\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'view', id: baseViewId },\n getScopeTag(viewType as string, isStudioScope ? undefined : projectName),\n ]),\n )\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`${scope} default view removed successfully`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to remove ${scope} base view:`, error)\n toast.error(`Failed to remove ${scope} base view: ${error?.message || error}`)\n }\n },\n [deleteViewMutation, viewType, projectName, dispatch],\n )\n\n const onLoadBaseView = useCallback(\n async (isStudioScope: boolean) => {\n try {\n if (!workingView?.id) {\n throw new Error('No working view available to update')\n }\n\n // Fetch the specific base view (project or studio)\n const baseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n {\n viewType: viewType as string,\n projectName: isStudioScope ? undefined : projectName,\n },\n { subscribe: false, forceRefetch: true }\n )\n )\n const baseViewResult = await baseViewPromise\n const baseView = baseViewResult.data\n\n if (!baseView || !baseView.settings) {\n throw new Error('Base view not found or has no settings')\n }\n\n // Update the working view with the base view settings\n await updateViewMutation({\n viewId: workingView.id,\n viewType: viewType as string,\n projectName,\n payload: { settings: baseView.settings },\n }).unwrap()\n\n // Set the working view as the default view\n await setDefaultViewMutation({\n viewType: viewType as string,\n projectName,\n setDefaultViewRequestModel: { viewId: workingView.id },\n }).unwrap()\n\n const scope = isStudioScope ? 'Studio' : 'Project'\n toast.success(`Loaded ${scope} default view to working view`)\n } catch (error: any) {\n const scope = isStudioScope ? 'studio' : 'project'\n console.error(`Failed to load ${scope} base view:`, error)\n toast.error(`Failed to load ${scope} base view: ${error?.message || error}`)\n }\n },\n [\n workingView,\n updateViewMutation,\n setDefaultViewMutation,\n viewType,\n projectName,\n dispatch,\n ],\n )\n\n return {\n onCreateBaseView,\n onUpdateBaseView,\n onDeleteBaseView,\n onLoadBaseView,\n }\n}\n"],"names":["useBaseViewMutations","viewType","projectName","workingSettings","workingView","dispatch","createViewMutation","useCreateViewMutation","updateViewMutation","useUpdateViewMutation","deleteViewMutation","useDeleteViewMutation","setDefaultViewMutation","useSetDefaultViewMutation","onCreateBaseView","useCallback","isStudioScope","result","BASE_VIEW_ID","viewsQueries","getScopeTag","scope","toast","error","onUpdateBaseView","baseViewId","onDeleteBaseView","onLoadBaseView","baseView"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");const s=require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const g=require("react"),W=require("react-redux"),D=require("../utils/generateWorkingView.cjs.js"),S=require("react-toastify"),E=({viewType:e,projectName:r,viewsList:j,onCreate:f,onDelete:h,onUpdate:b})=>{const o=W.useDispatch(),[q]=s.useCreateViewMutation(),[B]=s.useDeleteViewMutation(),[n]=s.useUpdateViewMutation(),[R]=s.useSetDefaultViewMutation(),p=g.useCallback(async(i,t)=>{if(!e)throw new Error("viewType are required for creating a view");try{await q({viewType:e,projectName:t?void 0:r,payload:i}).unwrap(),f&&f(i)}catch(u){throw console.error("Failed to create view:",u),u}},[q,e,r,f]),y=g.useCallback(async(i,t,u)=>{if(!e)throw new Error("viewType are required for updating a view");try{await n({viewId:i,viewType:e,projectName:u?void 0:r,payload:t}).unwrap(),b&&b({...t,id:i})}catch(a){throw console.error("Failed to update view:",a),a}},[n,e,r,b]),C=g.useCallback(async(i,t)=>{if(!e)throw new Error("viewType are required for deleting a view");try{await B({viewType:e,projectName:t?void 0:r,viewId:i}).unwrap(),h&&h(i)}catch(u){throw console.error("Failed to delete view:",u),u}},[B,e,r,h]),F=g.useCallback(async i=>{const{existingWorkingViewId:t,selectedViewId:u,setSelectedView:a,setSettingsChanged:M,notify:v}=i||{};if(!e)throw new Error("viewType are required for resetting a view");try{o(s.viewsQueries.util.invalidateTags([{type:"Views",id:`base-${e}-${r}`},{type:"Views",id:`base-${e}`}]));const w=(await o(s.viewsQueries.endpoints.getBaseView.initiate({viewType:e,projectName:r},{subscribe:!1,forceRefetch:!0}))).data;let c={},d="default";if(w&&w.settings&&Object.keys(w.settings).length>0)c=w.settings,d="project";else{const V=(await o(s.viewsQueries.endpoints.getBaseView.initiate({viewType:e},{subscribe:!1,forceRefetch:!0}))).data;V&&V.settings&&Object.keys(V.settings).length>0&&(c=V.settings,d="studio")}const l=t??D.generateWorkingView().id;if(t?await n({viewId:t,viewType:e,projectName:r,payload:{settings:c}}).unwrap():await q({viewType:e,projectName:r,payload:{id:l,label:"Working",working:!0,settings:c}}).unwrap(),await R({viewType:e,projectName:r,setDefaultViewRequestModel:{viewId:l}}).unwrap(),a&&a(l),M&&M(!1),v){const P=d==="project"?"View reset to project base view":d==="studio"?"View reset to studio base view":"View reset to default settings";S.toast.success(P)}return l}catch(k){throw console.error("Failed to reset working view:",k),v&&S.toast.error("Failed to reset view to default"),k}},[q,n,R,e,r,o]);return{onCreateView:p,onUpdateView:y,onDeleteView:C,onResetWorkingView:F}};exports.useViewsMutations=E;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");const s=require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const f=require("react"),W=require("react-redux"),D=require("../utils/generateWorkingView.cjs.js"),S=require("react-toastify"),E=({viewType:e,projectName:r,viewsList:j,onCreate:g,onDelete:h,onUpdate:b})=>{const o=W.useDispatch(),[q]=s.useCreateViewMutation(),[B]=s.useDeleteViewMutation(),[n]=s.useUpdateViewMutation(),[R]=s.useSetDefaultViewMutation(),p=f.useCallback(async(i,t)=>{if(!e)throw new Error("viewType are required for creating a view");try{await q({viewType:e,projectName:t?void 0:r,payload:i}).unwrap(),g&&g(i)}catch(u){throw console.error("Failed to create view:",u),u}},[q,e,r,g]),y=f.useCallback(async(i,t,u)=>{if(!e)throw new Error("viewType are required for updating a view");try{await n({viewId:i,viewType:e,projectName:u?void 0:r,payload:t}).unwrap(),b&&b({...t,id:i})}catch(a){throw console.error("Failed to update view:",a),a}},[n,e,r,b]),C=f.useCallback(async(i,t)=>{if(!e)throw new Error("viewType are required for deleting a view");try{await B({viewType:e,projectName:t?void 0:r,viewId:i}).unwrap(),h&&h(i)}catch(u){throw console.error("Failed to delete view:",u),u}},[B,e,r,h]),F=f.useCallback(async i=>{const{existingWorkingViewId:t,selectedViewId:u,setSelectedView:a,setSettingsChanged:M,notify:v}=i||{};if(!e)throw new Error("viewType are required for resetting a view");try{o(s.viewsQueries.util.invalidateTags([{type:"Views",id:`base-${e}-${r}`},{type:"Views",id:`base-${e}`}]));const w=(await o(s.viewsQueries.endpoints.getBaseView.initiate({viewType:e,projectName:r},{subscribe:!1,forceRefetch:!0}))).data;let c={},d="default";if(w&&w.settings&&Object.keys(w.settings).length>0)c=w.settings,d="project";else{const V=(await o(s.viewsQueries.endpoints.getBaseView.initiate({viewType:e},{subscribe:!1,forceRefetch:!0}))).data;V&&V.settings&&Object.keys(V.settings).length>0&&(c=V.settings,d="studio")}const l=t??D.generateWorkingView().id;if(t?await n({viewId:t,viewType:e,projectName:r,payload:{settings:c}}).unwrap():await q({viewType:e,projectName:r,payload:{id:l,label:"Working",working:!0,settings:c}}).unwrap(),await R({viewType:e,projectName:r,setDefaultViewRequestModel:{viewId:l}}).unwrap(),a&&a(l),M&&M(!1),v){const P=d==="project"?"View reset to project default view":d==="studio"?"View reset to studio default view":"View reset to default settings";S.toast.success(P)}return l}catch(k){throw console.error("Failed to reset working view:",k),v&&S.toast.error("Failed to reset view to default"),k}},[q,n,R,e,r,o]);return{onCreateView:p,onUpdateView:y,onDeleteView:C,onResetWorkingView:F}};exports.useViewsMutations=E;
2
2
  //# sourceMappingURL=useViewsMutations.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useViewsMutations.cjs.js","sources":["../../../../../../src/containers/Views/hooks/useViewsMutations.ts"],"sourcesContent":["import {\n CreateViewApiArg,\n useCreateViewMutation,\n useDeleteViewMutation,\n useUpdateViewMutation,\n useSetDefaultViewMutation,\n ViewListItemModel,\n viewsQueries,\n} from '@shared/api'\nimport { useCallback } from 'react'\nimport { useDispatch } from 'react-redux'\nimport type { AnyAction, ThunkDispatch } from '@reduxjs/toolkit'\nimport { ViewData } from '../context/ViewsContext'\nimport { generateWorkingView } from '../utils/generateWorkingView'\nimport { toast } from 'react-toastify'\n\ntype Props = {\n viewType?: string\n projectName?: string\n viewsList?: ViewListItemModel[]\n onCreate?: (view: ViewData) => void\n onUpdate?: (view: ViewData) => void\n onDelete?: (viewId: string) => void\n}\n\nexport type UseViewMutations = {\n onCreateView: (payload: CreateViewApiArg['payload'], isStudioScope: boolean) => Promise<void>\n onDeleteView: (viewId: string, isStudioScope: boolean) => Promise<void>\n onUpdateView: (\n viewId: string,\n payload: Partial<ViewData>,\n isStudioScope: boolean,\n ) => Promise<void>\n onResetWorkingView: (args?: {\n existingWorkingViewId?: string\n selectedViewId?: string\n setSelectedView?: (id: string) => void\n setSettingsChanged?: (changed: boolean) => void\n notify?: boolean\n }) => Promise<string>\n}\ntype R = UseViewMutations\n\nexport const useViewsMutations = ({\n viewType,\n projectName,\n viewsList,\n onCreate,\n onDelete,\n onUpdate,\n}: Props): UseViewMutations => {\n // forward mutations to the dialog\n const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\n const [createView] = useCreateViewMutation()\n const [deleteView] = useDeleteViewMutation()\n const [updateView] = useUpdateViewMutation()\n const [setDefaultView] = useSetDefaultViewMutation()\n\n\n const onCreateView = useCallback<R['onCreateView']>(\n async (payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for creating a view')\n }\n\n try {\n await createView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onCreate) {\n onCreate(payload as ViewData)\n }\n } catch (error) {\n console.error('Failed to create view:', error)\n throw error\n }\n },\n [createView, viewType, projectName, onCreate],\n )\n\n const onUpdateView = useCallback<R['onUpdateView']>(\n async (viewId, payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for updating a view')\n }\n\n try {\n await updateView({\n viewId,\n viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onUpdate) {\n onUpdate({ ...payload, id: viewId } as ViewData)\n }\n } catch (error) {\n console.error('Failed to update view:', error)\n throw error\n }\n },\n [updateView, viewType, projectName, onUpdate],\n )\n\n const onDeleteView = useCallback<R['onDeleteView']>(\n async (viewId, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for deleting a view')\n }\n\n try {\n await deleteView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n viewId,\n }).unwrap()\n\n if (onDelete) {\n onDelete(viewId)\n }\n } catch (error) {\n console.error('Failed to delete view:', error)\n throw error\n }\n },\n [deleteView, viewType, projectName, onDelete],\n )\n\n const onResetWorkingView = useCallback<R['onResetWorkingView']>(\n async (args) => {\n const { existingWorkingViewId, selectedViewId, setSelectedView, setSettingsChanged, notify } =\n args || {}\n if (!viewType) {\n throw new Error('viewType are required for resetting a view')\n }\n\n try {\n // Priority order: project base view → studio base view → default (empty settings)\n\n // Invalidate base view cache to ensure fresh data\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'Views', id: `base-${viewType}-${projectName}` },\n { type: 'Views', id: `base-${viewType}` }\n ])\n )\n\n // 1. Try to fetch project base view first (force fresh fetch, no subscription)\n const projectBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType, projectName },\n { subscribe: false, forceRefetch: true }\n )\n )\n const projectBaseViewResult = await projectBaseViewPromise\n const projectBaseView = projectBaseViewResult.data\n\n let templateSettings = {}\n let baseViewSource = 'default'\n\n // Check if project base view exists and has settings\n if (projectBaseView && projectBaseView.settings && Object.keys(projectBaseView.settings).length > 0) {\n templateSettings = projectBaseView.settings\n baseViewSource = 'project'\n } else {\n // 2. If no project base view, try studio base view (force fresh fetch, no subscription)\n const studioBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType },\n { subscribe: false, forceRefetch: true }\n )\n )\n const studioBaseViewResult = await studioBaseViewPromise\n const studioBaseView = studioBaseViewResult.data\n\n // Check if studio base view exists and has settings\n if (studioBaseView && studioBaseView.settings && Object.keys(studioBaseView.settings).length > 0) {\n templateSettings = studioBaseView.settings\n baseViewSource = 'studio'\n }\n // 3. Otherwise, use default (empty settings) - already initialized above\n }\n\n // Determine the view ID to use - use existing working view ID or generate new one\n const viewId: string = existingWorkingViewId ?? generateWorkingView().id as string\n\n // Prepare the working view payload with base view settings\n const workingViewPayload = {\n id: viewId,\n label: 'Working',\n working: true,\n settings: templateSettings,\n }\n\n // Update existing working view or create a new one\n if (existingWorkingViewId) {\n await updateView({\n viewId: existingWorkingViewId,\n viewType,\n projectName,\n payload: { settings: templateSettings },\n }).unwrap()\n } else {\n await createView({\n viewType,\n projectName,\n payload: workingViewPayload,\n }).unwrap()\n }\n\n // Set this working view as the user's default view\n await setDefaultView({\n viewType,\n projectName,\n setDefaultViewRequestModel: { viewId },\n }).unwrap()\n\n // Always switch to the working view after reset\n if (setSelectedView) {\n setSelectedView(viewId)\n }\n\n // Clear settings changed flag when resetting (don't prompt to save previous view)\n if (setSettingsChanged) {\n setSettingsChanged(false)\n }\n\n if (notify) {\n const message =\n baseViewSource === 'project' ? 'View reset to project base view' :\n baseViewSource === 'studio' ? 'View reset to studio base view' :\n 'View reset to default settings'\n toast.success(message)\n }\n\n return viewId\n } catch (error) {\n console.error('Failed to reset working view:', error)\n if (notify) toast.error('Failed to reset view to default')\n throw error\n }\n },\n [createView, updateView, setDefaultView, viewType, projectName, dispatch],\n )\n\n return {\n onCreateView,\n onUpdateView,\n onDeleteView,\n onResetWorkingView,\n }\n}\n"],"names":["useViewsMutations","viewType","projectName","viewsList","onCreate","onDelete","onUpdate","dispatch","useDispatch","createView","useCreateViewMutation","deleteView","useDeleteViewMutation","updateView","useUpdateViewMutation","setDefaultView","useSetDefaultViewMutation","onCreateView","useCallback","payload","isStudioScope","error","onUpdateView","viewId","onDeleteView","onResetWorkingView","args","existingWorkingViewId","selectedViewId","setSelectedView","setSettingsChanged","notify","viewsQueries","projectBaseView","templateSettings","baseViewSource","studioBaseView","generateWorkingView","message","toast"],"mappings":"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"}
1
+ {"version":3,"file":"useViewsMutations.cjs.js","sources":["../../../../../../src/containers/Views/hooks/useViewsMutations.ts"],"sourcesContent":["import {\n CreateViewApiArg,\n useCreateViewMutation,\n useDeleteViewMutation,\n useUpdateViewMutation,\n useSetDefaultViewMutation,\n ViewListItemModel,\n viewsQueries,\n} from '@shared/api'\nimport { useCallback } from 'react'\nimport { useDispatch } from 'react-redux'\nimport type { AnyAction, ThunkDispatch } from '@reduxjs/toolkit'\nimport { ViewData } from '../context/ViewsContext'\nimport { generateWorkingView } from '../utils/generateWorkingView'\nimport { toast } from 'react-toastify'\n\ntype Props = {\n viewType?: string\n projectName?: string\n viewsList?: ViewListItemModel[]\n onCreate?: (view: ViewData) => void\n onUpdate?: (view: ViewData) => void\n onDelete?: (viewId: string) => void\n}\n\nexport type UseViewMutations = {\n onCreateView: (payload: CreateViewApiArg['payload'], isStudioScope: boolean) => Promise<void>\n onDeleteView: (viewId: string, isStudioScope: boolean) => Promise<void>\n onUpdateView: (\n viewId: string,\n payload: Partial<ViewData>,\n isStudioScope: boolean,\n ) => Promise<void>\n onResetWorkingView: (args?: {\n existingWorkingViewId?: string\n selectedViewId?: string\n setSelectedView?: (id: string) => void\n setSettingsChanged?: (changed: boolean) => void\n notify?: boolean\n }) => Promise<string>\n}\ntype R = UseViewMutations\n\nexport const useViewsMutations = ({\n viewType,\n projectName,\n viewsList,\n onCreate,\n onDelete,\n onUpdate,\n}: Props): UseViewMutations => {\n // forward mutations to the dialog\n const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\n const [createView] = useCreateViewMutation()\n const [deleteView] = useDeleteViewMutation()\n const [updateView] = useUpdateViewMutation()\n const [setDefaultView] = useSetDefaultViewMutation()\n\n\n const onCreateView = useCallback<R['onCreateView']>(\n async (payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for creating a view')\n }\n\n try {\n await createView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onCreate) {\n onCreate(payload as ViewData)\n }\n } catch (error) {\n console.error('Failed to create view:', error)\n throw error\n }\n },\n [createView, viewType, projectName, onCreate],\n )\n\n const onUpdateView = useCallback<R['onUpdateView']>(\n async (viewId, payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for updating a view')\n }\n\n try {\n await updateView({\n viewId,\n viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onUpdate) {\n onUpdate({ ...payload, id: viewId } as ViewData)\n }\n } catch (error) {\n console.error('Failed to update view:', error)\n throw error\n }\n },\n [updateView, viewType, projectName, onUpdate],\n )\n\n const onDeleteView = useCallback<R['onDeleteView']>(\n async (viewId, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for deleting a view')\n }\n\n try {\n await deleteView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n viewId,\n }).unwrap()\n\n if (onDelete) {\n onDelete(viewId)\n }\n } catch (error) {\n console.error('Failed to delete view:', error)\n throw error\n }\n },\n [deleteView, viewType, projectName, onDelete],\n )\n\n const onResetWorkingView = useCallback<R['onResetWorkingView']>(\n async (args) => {\n const { existingWorkingViewId, selectedViewId, setSelectedView, setSettingsChanged, notify } =\n args || {}\n if (!viewType) {\n throw new Error('viewType are required for resetting a view')\n }\n\n try {\n // Priority order: project base view → studio base view → default (empty settings)\n\n // Invalidate base view cache to ensure fresh data\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'Views', id: `base-${viewType}-${projectName}` },\n { type: 'Views', id: `base-${viewType}` }\n ])\n )\n\n // 1. Try to fetch project base view first (force fresh fetch, no subscription)\n const projectBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType, projectName },\n { subscribe: false, forceRefetch: true }\n )\n )\n const projectBaseViewResult = await projectBaseViewPromise\n const projectBaseView = projectBaseViewResult.data\n\n let templateSettings = {}\n let baseViewSource = 'default'\n\n // Check if project base view exists and has settings\n if (projectBaseView && projectBaseView.settings && Object.keys(projectBaseView.settings).length > 0) {\n templateSettings = projectBaseView.settings\n baseViewSource = 'project'\n } else {\n // 2. If no project base view, try studio base view (force fresh fetch, no subscription)\n const studioBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType },\n { subscribe: false, forceRefetch: true }\n )\n )\n const studioBaseViewResult = await studioBaseViewPromise\n const studioBaseView = studioBaseViewResult.data\n\n // Check if studio base view exists and has settings\n if (studioBaseView && studioBaseView.settings && Object.keys(studioBaseView.settings).length > 0) {\n templateSettings = studioBaseView.settings\n baseViewSource = 'studio'\n }\n // 3. Otherwise, use default (empty settings) - already initialized above\n }\n\n // Determine the view ID to use - use existing working view ID or generate new one\n const viewId: string = existingWorkingViewId ?? generateWorkingView().id as string\n\n // Prepare the working view payload with base view settings\n const workingViewPayload = {\n id: viewId,\n label: 'Working',\n working: true,\n settings: templateSettings,\n }\n\n // Update existing working view or create a new one\n if (existingWorkingViewId) {\n await updateView({\n viewId: existingWorkingViewId,\n viewType,\n projectName,\n payload: { settings: templateSettings },\n }).unwrap()\n } else {\n await createView({\n viewType,\n projectName,\n payload: workingViewPayload,\n }).unwrap()\n }\n\n // Set this working view as the user's default view\n await setDefaultView({\n viewType,\n projectName,\n setDefaultViewRequestModel: { viewId },\n }).unwrap()\n\n // Always switch to the working view after reset\n if (setSelectedView) {\n setSelectedView(viewId)\n }\n\n // Clear settings changed flag when resetting (don't prompt to save previous view)\n if (setSettingsChanged) {\n setSettingsChanged(false)\n }\n\n if (notify) {\n const message =\n baseViewSource === 'project' ? 'View reset to project default view' :\n baseViewSource === 'studio' ? 'View reset to studio default view' :\n 'View reset to default settings'\n toast.success(message)\n }\n\n return viewId\n } catch (error) {\n console.error('Failed to reset working view:', error)\n if (notify) toast.error('Failed to reset view to default')\n throw error\n }\n },\n [createView, updateView, setDefaultView, viewType, projectName, dispatch],\n )\n\n return {\n onCreateView,\n onUpdateView,\n onDeleteView,\n onResetWorkingView,\n }\n}\n"],"names":["useViewsMutations","viewType","projectName","viewsList","onCreate","onDelete","onUpdate","dispatch","useDispatch","createView","useCreateViewMutation","deleteView","useDeleteViewMutation","updateView","useUpdateViewMutation","setDefaultView","useSetDefaultViewMutation","onCreateView","useCallback","payload","isStudioScope","error","onUpdateView","viewId","onDeleteView","onResetWorkingView","args","existingWorkingViewId","selectedViewId","setSelectedView","setSettingsChanged","notify","viewsQueries","projectBaseView","templateSettings","baseViewSource","studioBaseView","generateWorkingView","message","toast"],"mappings":"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"}
@@ -80,7 +80,7 @@ import "../../../api/queries/users/updateUsers.es.js";
80
80
  import "../../../api/queries/users/guests.es.js";
81
81
  import "../../../api/queries/versions/updateVersions.es.js";
82
82
  import "../../../api/queries/views/getViews.es.js";
83
- import { useCreateViewMutation as E, useDeleteViewMutation as W, useUpdateViewMutation as $, useSetDefaultViewMutation as j, viewsQueries as b } from "../../../api/queries/views/updateViews.es.js";
83
+ import { useCreateViewMutation as E, useDeleteViewMutation as W, useUpdateViewMutation as $, useSetDefaultViewMutation as j, viewsQueries as B } from "../../../api/queries/views/updateViews.es.js";
84
84
  import "../../../api/queries/watchers/getWatchers.es.js";
85
85
  import "../../../api/queries/uris/getUris.es.js";
86
86
  import { useCallback as l } from "react";
@@ -91,11 +91,11 @@ const ki = ({
91
91
  viewType: t,
92
92
  projectName: i,
93
93
  viewsList: C,
94
- onCreate: V,
95
- onDelete: f,
94
+ onCreate: f,
95
+ onDelete: V,
96
96
  onUpdate: g
97
97
  }) => {
98
- const a = x(), [p] = E(), [B] = W(), [m] = $(), [k] = j(), F = l(
98
+ const a = x(), [p] = E(), [b] = W(), [m] = $(), [k] = j(), F = l(
99
99
  async (r, e) => {
100
100
  if (!t)
101
101
  throw new Error("viewType are required for creating a view");
@@ -104,12 +104,12 @@ const ki = ({
104
104
  viewType: t,
105
105
  projectName: e ? void 0 : i,
106
106
  payload: r
107
- }).unwrap(), V && V(r);
107
+ }).unwrap(), f && f(r);
108
108
  } catch (o) {
109
109
  throw console.error("Failed to create view:", o), o;
110
110
  }
111
111
  },
112
- [p, t, i, V]
112
+ [p, t, i, f]
113
113
  ), S = l(
114
114
  async (r, e, o) => {
115
115
  if (!t)
@@ -131,16 +131,16 @@ const ki = ({
131
131
  if (!t)
132
132
  throw new Error("viewType are required for deleting a view");
133
133
  try {
134
- await B({
134
+ await b({
135
135
  viewType: t,
136
136
  projectName: e ? void 0 : i,
137
137
  viewId: r
138
- }).unwrap(), f && f(r);
138
+ }).unwrap(), V && V(r);
139
139
  } catch (o) {
140
140
  throw console.error("Failed to delete view:", o), o;
141
141
  }
142
142
  },
143
- [B, t, i, f]
143
+ [b, t, i, V]
144
144
  ), D = l(
145
145
  async (r) => {
146
146
  const { existingWorkingViewId: e, selectedViewId: o, setSelectedView: s, setSettingsChanged: R, notify: M } = r || {};
@@ -148,13 +148,13 @@ const ki = ({
148
148
  throw new Error("viewType are required for resetting a view");
149
149
  try {
150
150
  a(
151
- b.util.invalidateTags([
151
+ B.util.invalidateTags([
152
152
  { type: "Views", id: `base-${t}-${i}` },
153
153
  { type: "Views", id: `base-${t}` }
154
154
  ])
155
155
  );
156
156
  const n = (await a(
157
- b.endpoints.getBaseView.initiate(
157
+ B.endpoints.getBaseView.initiate(
158
158
  { viewType: t, projectName: i },
159
159
  { subscribe: !1, forceRefetch: !0 }
160
160
  )
@@ -164,7 +164,7 @@ const ki = ({
164
164
  w = n.settings, u = "project";
165
165
  else {
166
166
  const d = (await a(
167
- b.endpoints.getBaseView.initiate(
167
+ B.endpoints.getBaseView.initiate(
168
168
  { viewType: t },
169
169
  { subscribe: !1, forceRefetch: !0 }
170
170
  )
@@ -191,7 +191,7 @@ const ki = ({
191
191
  projectName: i,
192
192
  setDefaultViewRequestModel: { viewId: c }
193
193
  }).unwrap(), s && s(c), R && R(!1), M) {
194
- const P = u === "project" ? "View reset to project base view" : u === "studio" ? "View reset to studio base view" : "View reset to default settings";
194
+ const P = u === "project" ? "View reset to project default view" : u === "studio" ? "View reset to studio default view" : "View reset to default settings";
195
195
  q.success(P);
196
196
  }
197
197
  return c;
@@ -1 +1 @@
1
- {"version":3,"file":"useViewsMutations.es.js","sources":["../../../../../../src/containers/Views/hooks/useViewsMutations.ts"],"sourcesContent":["import {\n CreateViewApiArg,\n useCreateViewMutation,\n useDeleteViewMutation,\n useUpdateViewMutation,\n useSetDefaultViewMutation,\n ViewListItemModel,\n viewsQueries,\n} from '@shared/api'\nimport { useCallback } from 'react'\nimport { useDispatch } from 'react-redux'\nimport type { AnyAction, ThunkDispatch } from '@reduxjs/toolkit'\nimport { ViewData } from '../context/ViewsContext'\nimport { generateWorkingView } from '../utils/generateWorkingView'\nimport { toast } from 'react-toastify'\n\ntype Props = {\n viewType?: string\n projectName?: string\n viewsList?: ViewListItemModel[]\n onCreate?: (view: ViewData) => void\n onUpdate?: (view: ViewData) => void\n onDelete?: (viewId: string) => void\n}\n\nexport type UseViewMutations = {\n onCreateView: (payload: CreateViewApiArg['payload'], isStudioScope: boolean) => Promise<void>\n onDeleteView: (viewId: string, isStudioScope: boolean) => Promise<void>\n onUpdateView: (\n viewId: string,\n payload: Partial<ViewData>,\n isStudioScope: boolean,\n ) => Promise<void>\n onResetWorkingView: (args?: {\n existingWorkingViewId?: string\n selectedViewId?: string\n setSelectedView?: (id: string) => void\n setSettingsChanged?: (changed: boolean) => void\n notify?: boolean\n }) => Promise<string>\n}\ntype R = UseViewMutations\n\nexport const useViewsMutations = ({\n viewType,\n projectName,\n viewsList,\n onCreate,\n onDelete,\n onUpdate,\n}: Props): UseViewMutations => {\n // forward mutations to the dialog\n const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\n const [createView] = useCreateViewMutation()\n const [deleteView] = useDeleteViewMutation()\n const [updateView] = useUpdateViewMutation()\n const [setDefaultView] = useSetDefaultViewMutation()\n\n\n const onCreateView = useCallback<R['onCreateView']>(\n async (payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for creating a view')\n }\n\n try {\n await createView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onCreate) {\n onCreate(payload as ViewData)\n }\n } catch (error) {\n console.error('Failed to create view:', error)\n throw error\n }\n },\n [createView, viewType, projectName, onCreate],\n )\n\n const onUpdateView = useCallback<R['onUpdateView']>(\n async (viewId, payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for updating a view')\n }\n\n try {\n await updateView({\n viewId,\n viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onUpdate) {\n onUpdate({ ...payload, id: viewId } as ViewData)\n }\n } catch (error) {\n console.error('Failed to update view:', error)\n throw error\n }\n },\n [updateView, viewType, projectName, onUpdate],\n )\n\n const onDeleteView = useCallback<R['onDeleteView']>(\n async (viewId, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for deleting a view')\n }\n\n try {\n await deleteView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n viewId,\n }).unwrap()\n\n if (onDelete) {\n onDelete(viewId)\n }\n } catch (error) {\n console.error('Failed to delete view:', error)\n throw error\n }\n },\n [deleteView, viewType, projectName, onDelete],\n )\n\n const onResetWorkingView = useCallback<R['onResetWorkingView']>(\n async (args) => {\n const { existingWorkingViewId, selectedViewId, setSelectedView, setSettingsChanged, notify } =\n args || {}\n if (!viewType) {\n throw new Error('viewType are required for resetting a view')\n }\n\n try {\n // Priority order: project base view → studio base view → default (empty settings)\n\n // Invalidate base view cache to ensure fresh data\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'Views', id: `base-${viewType}-${projectName}` },\n { type: 'Views', id: `base-${viewType}` }\n ])\n )\n\n // 1. Try to fetch project base view first (force fresh fetch, no subscription)\n const projectBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType, projectName },\n { subscribe: false, forceRefetch: true }\n )\n )\n const projectBaseViewResult = await projectBaseViewPromise\n const projectBaseView = projectBaseViewResult.data\n\n let templateSettings = {}\n let baseViewSource = 'default'\n\n // Check if project base view exists and has settings\n if (projectBaseView && projectBaseView.settings && Object.keys(projectBaseView.settings).length > 0) {\n templateSettings = projectBaseView.settings\n baseViewSource = 'project'\n } else {\n // 2. If no project base view, try studio base view (force fresh fetch, no subscription)\n const studioBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType },\n { subscribe: false, forceRefetch: true }\n )\n )\n const studioBaseViewResult = await studioBaseViewPromise\n const studioBaseView = studioBaseViewResult.data\n\n // Check if studio base view exists and has settings\n if (studioBaseView && studioBaseView.settings && Object.keys(studioBaseView.settings).length > 0) {\n templateSettings = studioBaseView.settings\n baseViewSource = 'studio'\n }\n // 3. Otherwise, use default (empty settings) - already initialized above\n }\n\n // Determine the view ID to use - use existing working view ID or generate new one\n const viewId: string = existingWorkingViewId ?? generateWorkingView().id as string\n\n // Prepare the working view payload with base view settings\n const workingViewPayload = {\n id: viewId,\n label: 'Working',\n working: true,\n settings: templateSettings,\n }\n\n // Update existing working view or create a new one\n if (existingWorkingViewId) {\n await updateView({\n viewId: existingWorkingViewId,\n viewType,\n projectName,\n payload: { settings: templateSettings },\n }).unwrap()\n } else {\n await createView({\n viewType,\n projectName,\n payload: workingViewPayload,\n }).unwrap()\n }\n\n // Set this working view as the user's default view\n await setDefaultView({\n viewType,\n projectName,\n setDefaultViewRequestModel: { viewId },\n }).unwrap()\n\n // Always switch to the working view after reset\n if (setSelectedView) {\n setSelectedView(viewId)\n }\n\n // Clear settings changed flag when resetting (don't prompt to save previous view)\n if (setSettingsChanged) {\n setSettingsChanged(false)\n }\n\n if (notify) {\n const message =\n baseViewSource === 'project' ? 'View reset to project base view' :\n baseViewSource === 'studio' ? 'View reset to studio base view' :\n 'View reset to default settings'\n toast.success(message)\n }\n\n return viewId\n } catch (error) {\n console.error('Failed to reset working view:', error)\n if (notify) toast.error('Failed to reset view to default')\n throw error\n }\n },\n [createView, updateView, setDefaultView, viewType, projectName, dispatch],\n )\n\n return {\n onCreateView,\n onUpdateView,\n onDeleteView,\n onResetWorkingView,\n }\n}\n"],"names":["useViewsMutations","viewType","projectName","viewsList","onCreate","onDelete","onUpdate","dispatch","useDispatch","createView","useCreateViewMutation","deleteView","useDeleteViewMutation","updateView","useUpdateViewMutation","setDefaultView","useSetDefaultViewMutation","onCreateView","useCallback","payload","isStudioScope","error","onUpdateView","viewId","onDeleteView","onResetWorkingView","args","existingWorkingViewId","selectedViewId","setSelectedView","setSettingsChanged","notify","viewsQueries","projectBaseView","templateSettings","baseViewSource","studioBaseView","generateWorkingView","message","toast"],"mappings":"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"}
1
+ {"version":3,"file":"useViewsMutations.es.js","sources":["../../../../../../src/containers/Views/hooks/useViewsMutations.ts"],"sourcesContent":["import {\n CreateViewApiArg,\n useCreateViewMutation,\n useDeleteViewMutation,\n useUpdateViewMutation,\n useSetDefaultViewMutation,\n ViewListItemModel,\n viewsQueries,\n} from '@shared/api'\nimport { useCallback } from 'react'\nimport { useDispatch } from 'react-redux'\nimport type { AnyAction, ThunkDispatch } from '@reduxjs/toolkit'\nimport { ViewData } from '../context/ViewsContext'\nimport { generateWorkingView } from '../utils/generateWorkingView'\nimport { toast } from 'react-toastify'\n\ntype Props = {\n viewType?: string\n projectName?: string\n viewsList?: ViewListItemModel[]\n onCreate?: (view: ViewData) => void\n onUpdate?: (view: ViewData) => void\n onDelete?: (viewId: string) => void\n}\n\nexport type UseViewMutations = {\n onCreateView: (payload: CreateViewApiArg['payload'], isStudioScope: boolean) => Promise<void>\n onDeleteView: (viewId: string, isStudioScope: boolean) => Promise<void>\n onUpdateView: (\n viewId: string,\n payload: Partial<ViewData>,\n isStudioScope: boolean,\n ) => Promise<void>\n onResetWorkingView: (args?: {\n existingWorkingViewId?: string\n selectedViewId?: string\n setSelectedView?: (id: string) => void\n setSettingsChanged?: (changed: boolean) => void\n notify?: boolean\n }) => Promise<string>\n}\ntype R = UseViewMutations\n\nexport const useViewsMutations = ({\n viewType,\n projectName,\n viewsList,\n onCreate,\n onDelete,\n onUpdate,\n}: Props): UseViewMutations => {\n // forward mutations to the dialog\n const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\n const [createView] = useCreateViewMutation()\n const [deleteView] = useDeleteViewMutation()\n const [updateView] = useUpdateViewMutation()\n const [setDefaultView] = useSetDefaultViewMutation()\n\n\n const onCreateView = useCallback<R['onCreateView']>(\n async (payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for creating a view')\n }\n\n try {\n await createView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onCreate) {\n onCreate(payload as ViewData)\n }\n } catch (error) {\n console.error('Failed to create view:', error)\n throw error\n }\n },\n [createView, viewType, projectName, onCreate],\n )\n\n const onUpdateView = useCallback<R['onUpdateView']>(\n async (viewId, payload, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for updating a view')\n }\n\n try {\n await updateView({\n viewId,\n viewType,\n projectName: isStudioScope ? undefined : projectName,\n payload,\n }).unwrap()\n\n if (onUpdate) {\n onUpdate({ ...payload, id: viewId } as ViewData)\n }\n } catch (error) {\n console.error('Failed to update view:', error)\n throw error\n }\n },\n [updateView, viewType, projectName, onUpdate],\n )\n\n const onDeleteView = useCallback<R['onDeleteView']>(\n async (viewId, isStudioScope) => {\n if (!viewType) {\n throw new Error('viewType are required for deleting a view')\n }\n\n try {\n await deleteView({\n viewType: viewType,\n projectName: isStudioScope ? undefined : projectName,\n viewId,\n }).unwrap()\n\n if (onDelete) {\n onDelete(viewId)\n }\n } catch (error) {\n console.error('Failed to delete view:', error)\n throw error\n }\n },\n [deleteView, viewType, projectName, onDelete],\n )\n\n const onResetWorkingView = useCallback<R['onResetWorkingView']>(\n async (args) => {\n const { existingWorkingViewId, selectedViewId, setSelectedView, setSettingsChanged, notify } =\n args || {}\n if (!viewType) {\n throw new Error('viewType are required for resetting a view')\n }\n\n try {\n // Priority order: project base view → studio base view → default (empty settings)\n\n // Invalidate base view cache to ensure fresh data\n dispatch(\n viewsQueries.util.invalidateTags([\n { type: 'Views', id: `base-${viewType}-${projectName}` },\n { type: 'Views', id: `base-${viewType}` }\n ])\n )\n\n // 1. Try to fetch project base view first (force fresh fetch, no subscription)\n const projectBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType, projectName },\n { subscribe: false, forceRefetch: true }\n )\n )\n const projectBaseViewResult = await projectBaseViewPromise\n const projectBaseView = projectBaseViewResult.data\n\n let templateSettings = {}\n let baseViewSource = 'default'\n\n // Check if project base view exists and has settings\n if (projectBaseView && projectBaseView.settings && Object.keys(projectBaseView.settings).length > 0) {\n templateSettings = projectBaseView.settings\n baseViewSource = 'project'\n } else {\n // 2. If no project base view, try studio base view (force fresh fetch, no subscription)\n const studioBaseViewPromise = dispatch(\n viewsQueries.endpoints.getBaseView.initiate(\n { viewType },\n { subscribe: false, forceRefetch: true }\n )\n )\n const studioBaseViewResult = await studioBaseViewPromise\n const studioBaseView = studioBaseViewResult.data\n\n // Check if studio base view exists and has settings\n if (studioBaseView && studioBaseView.settings && Object.keys(studioBaseView.settings).length > 0) {\n templateSettings = studioBaseView.settings\n baseViewSource = 'studio'\n }\n // 3. Otherwise, use default (empty settings) - already initialized above\n }\n\n // Determine the view ID to use - use existing working view ID or generate new one\n const viewId: string = existingWorkingViewId ?? generateWorkingView().id as string\n\n // Prepare the working view payload with base view settings\n const workingViewPayload = {\n id: viewId,\n label: 'Working',\n working: true,\n settings: templateSettings,\n }\n\n // Update existing working view or create a new one\n if (existingWorkingViewId) {\n await updateView({\n viewId: existingWorkingViewId,\n viewType,\n projectName,\n payload: { settings: templateSettings },\n }).unwrap()\n } else {\n await createView({\n viewType,\n projectName,\n payload: workingViewPayload,\n }).unwrap()\n }\n\n // Set this working view as the user's default view\n await setDefaultView({\n viewType,\n projectName,\n setDefaultViewRequestModel: { viewId },\n }).unwrap()\n\n // Always switch to the working view after reset\n if (setSelectedView) {\n setSelectedView(viewId)\n }\n\n // Clear settings changed flag when resetting (don't prompt to save previous view)\n if (setSettingsChanged) {\n setSettingsChanged(false)\n }\n\n if (notify) {\n const message =\n baseViewSource === 'project' ? 'View reset to project default view' :\n baseViewSource === 'studio' ? 'View reset to studio default view' :\n 'View reset to default settings'\n toast.success(message)\n }\n\n return viewId\n } catch (error) {\n console.error('Failed to reset working view:', error)\n if (notify) toast.error('Failed to reset view to default')\n throw error\n }\n },\n [createView, updateView, setDefaultView, viewType, projectName, dispatch],\n )\n\n return {\n onCreateView,\n onUpdateView,\n onDeleteView,\n onResetWorkingView,\n }\n}\n"],"names":["useViewsMutations","viewType","projectName","viewsList","onCreate","onDelete","onUpdate","dispatch","useDispatch","createView","useCreateViewMutation","deleteView","useDeleteViewMutation","updateView","useUpdateViewMutation","setDefaultView","useSetDefaultViewMutation","onCreateView","useCallback","payload","isStudioScope","error","onUpdateView","viewId","onDeleteView","onResetWorkingView","args","existingWorkingViewId","selectedViewId","setSelectedView","setSettingsChanged","notify","viewsQueries","projectBaseView","templateSettings","baseViewSource","studioBaseView","generateWorkingView","message","toast"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");const k=require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const S=require("./generateWorkingView.cjs.js"),c=require("react-toastify"),w=require("react"),C=require("../context/ViewsContext.cjs.js"),g=async(i,e,u,q={},r,n)=>{try{if(!n)throw"Insufficient arguments provided to updateViewSettings";const{viewSettings:t,viewType:s,projectName:d,selectedView:o,setSelectedView:p,workingView:V,onSettingsChanged:l}=r;if(!s)throw"No view type provided for updating view settings";e(u);const y={...t,...i},a=S.generateWorkingView(y),f=V?.id||a.id,v=n({payload:a,viewType:s,projectName:d});o&&!o.working&&l(!0),p(f),await v,e(null),q.successMessage&&c.toast.success(q.successMessage)}catch(t){e(null),console.error(t);const s=q.errorMessage||`Failed to update view settings: ${t}`;c.toast.error(s)}},M=()=>{const[i]=k.useCreateViewMutation(),e=C.useViewsContext(),u=w.useCallback(async r=>await i(r).unwrap(),[i]);return{updateViewSettings:w.useCallback(async(...r)=>await g(...r,e,u),[e]),onCreateView:u}};exports.updateViewSettings=g;exports.useViewUpdateHelper=M;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");const y=require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const M=require("./generateWorkingView.cjs.js"),f=require("react-toastify"),v=require("react"),b=require("../context/ViewsContext.cjs.js"),C=async(n,u,o,i={},w,e)=>{const{viewSettings:a,viewType:t,projectName:d,selectedView:r,setSelectedView:p,workingView:h,onSettingsChanged:l}=w;if(!t)throw new Error("No view type provided for updating view settings");const g=r?.id,V=r?.working;try{u(o);const q={...a,...n},s=M.generateWorkingView(q),c=h?.id;c&&(s.id=c);const S=s.id,k=e({payload:c?{settings:q}:s,viewType:t,projectName:d},c);V||(r&&l(!0),p(S)),await k,u(null),i.successMessage&&f.toast.success(i.successMessage)}catch(q){u(null),g&&p(g),r&&!V&&l(!1),console.error(q);const s=i.errorMessage||`Failed to update view settings: ${q}`;f.toast.error(s)}},m=()=>{const[n]=y.useCreateViewMutation(),[u]=y.useUpdateViewMutation(),o=b.useViewsContext(),i=v.useCallback(async(e,a)=>{if(a){const t={};return["label","owner","settings"].forEach(r=>{e.payload[r]!==void 0&&(t[r]=e.payload[r])}),await u({viewType:e.viewType,projectName:e.projectName,viewId:a,payload:t}).unwrap()}else return await n(e).unwrap()},[n,u]);return{updateViewSettings:v.useCallback(async(...e)=>await C(...e,o,i),[o,i]),onCreateView:i}};exports.updateViewSettings=C;exports.useViewUpdateHelper=m;
2
2
  //# sourceMappingURL=viewUpdateHelper.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewUpdateHelper.cjs.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * This helper provides common functionality used by view settings hooks:\n * - Optimistic local state updates for immediate UI response\n * - Background API calls to persist changes\n * - Error handling with state reversion\n * - Working view management\n */\n\nimport { CreateViewApiArg, EntityIdResponse, useCreateViewMutation } from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onCreateView: (payload: CreateViewApiArg) => Promise<EntityIdResponse>,\n): Promise<void> => {\n try {\n // check the correct number of arguments are provided\n if (!onCreateView) {\n throw 'Insufficient arguments provided to updateViewSettings'\n }\n\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n if (!viewType) throw 'No view type provided for updating view settings'\n\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Create settings with updates\n const newSettings = { ...viewSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n // only use the generated ID if there is no working view already\n const newWorkingViewId = workingView?.id || newWorkingView.id\n\n // Make API call in background\n const promise = onCreateView({\n payload: newWorkingView,\n viewType: viewType,\n projectName: projectName,\n })\n\n // if not working: set that the settings have been changed to show the little blue save button\n if (selectedView && !selectedView.working) {\n onSettingsChanged(true)\n }\n // Always switch to the working view after updating anything\n setSelectedView(newWorkingViewId as string)\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n\n const viewContext = useViewsContext()\n\n const onCreateView = useCallback(\n async (payload: CreateViewApiArg) => await createView(payload).unwrap(),\n [createView],\n )\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) => await updateViewSettings(...args, viewContext, onCreateView),\n [viewContext],\n )\n\n return { updateViewSettings: updateViewSettingsHandler, onCreateView }\n}\n"],"names":["updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onCreateView","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","newSettings","newWorkingView","generateWorkingView","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","useViewsContext","useCallback","payload","args"],"mappings":"s2JA4BaA,EAAqB,MAChCC,EACAC,EACAC,EACAC,EAAyB,CAAA,EACzBC,EACAC,IACkB,CAClB,GAAI,CAEF,GAAI,CAACA,EACH,KAAM,wDAGR,KAAM,CACJ,aAAAC,EACA,SAAAC,EACA,YAAAC,EACA,aAAAC,EACA,gBAAAC,EACA,YAAAC,EACA,kBAAAC,CAAA,EACER,EACJ,GAAI,CAACG,EAAU,KAAM,mDAGrBN,EAAiBC,CAAa,EAG9B,MAAMW,EAAc,CAAE,GAAGP,EAAc,GAAGN,CAAA,EAGpCc,EAAiBC,EAAAA,oBAAoBF,CAAW,EAEhDG,EAAmBL,GAAa,IAAMG,EAAe,GAGrDG,EAAUZ,EAAa,CAC3B,QAASS,EACT,SAAAP,EACA,YAAAC,CAAA,CACD,EAGGC,GAAgB,CAACA,EAAa,SAChCG,EAAkB,EAAI,EAGxBF,EAAgBM,CAA0B,EAE1C,MAAMC,EAGNhB,EAAiB,IAAI,EAEjBE,EAAQ,gBACVe,QAAM,QAAQf,EAAQ,cAAc,CAExC,OAASgB,EAAO,CAEdlB,EAAiB,IAAI,EACrB,QAAQ,MAAMkB,CAAK,EACnB,MAAMC,EAAWjB,EAAQ,cAAgB,mCAAmCgB,CAAK,GACjFD,EAAAA,MAAM,MAAME,CAAQ,CACtB,CACF,EAEaC,EAAsB,IAAM,CACvC,KAAM,CAACC,CAAU,EAAIC,wBAAA,EAEfnB,EAAcoB,EAAAA,gBAAA,EAEdnB,EAAeoB,EAAAA,YACnB,MAAOC,GAA8B,MAAMJ,EAAWI,CAAO,EAAE,OAAA,EAC/D,CAACJ,CAAU,CAAA,EAQb,MAAO,CAAE,mBALyBG,EAAAA,YAChC,SAAUE,IAAS,MAAM5B,EAAmB,GAAG4B,EAAMvB,EAAaC,CAAY,EAC9E,CAACD,CAAW,CAAA,EAG0C,aAAAC,CAAA,CAC1D"}
1
+ {"version":3,"file":"viewUpdateHelper.cjs.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * This helper provides common functionality used by view settings hooks:\n * - Optimistic local state updates for immediate UI response\n * - Background API calls to persist changes\n * - Error handling with state reversion\n * - Working view management\n */\n\nimport {\n CreateViewApiArg,\n EntityIdResponse,\n useCreateViewMutation,\n useUpdateViewMutation,\n} from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onApplyViewChanges: (arg: any, viewId?: string) => Promise<EntityIdResponse | void>,\n): Promise<void> => {\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n\n if (!viewType) throw new Error('No view type provided for updating view settings')\n\n const previousSelectedViewId = selectedView?.id\n const wasWorking = selectedView?.working\n\n try {\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Create settings with updates\n const newSettings = { ...viewSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n\n // Ensure the payload uses the consistent ID if we already have a working view\n const viewId = workingView?.id\n if (viewId) {\n newWorkingView.id = viewId\n }\n const newWorkingViewId = newWorkingView.id\n\n // Make API call in background\n // only include the fields that are updating (just settings)\n const payload = viewId ? { settings: newSettings } : newWorkingView\n\n const promise = onApplyViewChanges(\n {\n payload,\n viewType: viewType,\n projectName: projectName,\n },\n viewId,\n )\n\n // if not already on the working view: set that the settings have been changed to show the little blue save button and switch to the working view\n if (!wasWorking) {\n if (selectedView) {\n onSettingsChanged(true)\n }\n setSelectedView(newWorkingViewId as string)\n }\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n\n if (previousSelectedViewId) {\n setSelectedView(previousSelectedViewId)\n }\n\n if (selectedView && !wasWorking) {\n onSettingsChanged(false)\n }\n\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n const [updateView] = useUpdateViewMutation()\n\n const viewContext = useViewsContext()\n\n const onApplyViewChanges = useCallback(\n async (arg: any, viewId?: string) => {\n if (viewId) {\n // Filter the payload to only include valid patch fields\n // and ideally only include fields that are actually being updated.\n // Expecting the caller to provide only the fields they want to update in the payload.\n const patchPayload: any = {}\n const patchFields = ['label', 'owner', 'settings']\n patchFields.forEach((key) => {\n if (arg.payload[key] !== undefined) {\n patchPayload[key] = arg.payload[key]\n }\n })\n\n return await updateView({\n viewType: arg.viewType,\n projectName: arg.projectName,\n viewId,\n payload: patchPayload,\n }).unwrap()\n } else {\n return await createView(arg).unwrap()\n }\n },\n [createView, updateView],\n )\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) => await updateViewSettings(...args, viewContext, onApplyViewChanges),\n [viewContext, onApplyViewChanges],\n )\n\n return { updateViewSettings: updateViewSettingsHandler, onCreateView: onApplyViewChanges }\n}\n"],"names":["updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onApplyViewChanges","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","previousSelectedViewId","wasWorking","newSettings","newWorkingView","generateWorkingView","viewId","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","updateView","useUpdateViewMutation","useViewsContext","useCallback","arg","patchPayload","key","args"],"mappings":"s2JAiCaA,EAAqB,MAChCC,EACAC,EACAC,EACAC,EAAyB,CAAA,EACzBC,EACAC,IACkB,CAClB,KAAM,CACJ,aAAAC,EACA,SAAAC,EACA,YAAAC,EACA,aAAAC,EACA,gBAAAC,EACA,YAAAC,EACA,kBAAAC,CAAA,EACER,EAEJ,GAAI,CAACG,EAAU,MAAM,IAAI,MAAM,kDAAkD,EAEjF,MAAMM,EAAyBJ,GAAc,GACvCK,EAAaL,GAAc,QAEjC,GAAI,CAEFR,EAAiBC,CAAa,EAG9B,MAAMa,EAAc,CAAE,GAAGT,EAAc,GAAGN,CAAA,EAGpCgB,EAAiBC,EAAAA,oBAAoBF,CAAW,EAGhDG,EAASP,GAAa,GACxBO,IACFF,EAAe,GAAKE,GAEtB,MAAMC,EAAmBH,EAAe,GAMlCI,EAAUf,EACd,CACE,QAJYa,EAAS,CAAE,SAAUH,GAAgBC,EAKjD,SAAAT,EACA,YAAAC,CAAA,EAEFU,CAAA,EAIGJ,IACCL,GACFG,EAAkB,EAAI,EAExBF,EAAgBS,CAA0B,GAG5C,MAAMC,EAGNnB,EAAiB,IAAI,EAEjBE,EAAQ,gBACVkB,QAAM,QAAQlB,EAAQ,cAAc,CAExC,OAASmB,EAAO,CAEdrB,EAAiB,IAAI,EAEjBY,GACFH,EAAgBG,CAAsB,EAGpCJ,GAAgB,CAACK,GACnBF,EAAkB,EAAK,EAGzB,QAAQ,MAAMU,CAAK,EACnB,MAAMC,EAAWpB,EAAQ,cAAgB,mCAAmCmB,CAAK,GACjFD,EAAAA,MAAM,MAAME,CAAQ,CACtB,CACF,EAEaC,EAAsB,IAAM,CACvC,KAAM,CAACC,CAAU,EAAIC,wBAAA,EACf,CAACC,CAAU,EAAIC,wBAAA,EAEfxB,EAAcyB,EAAAA,gBAAA,EAEdxB,EAAqByB,EAAAA,YACzB,MAAOC,EAAUb,IAAoB,CACnC,GAAIA,EAAQ,CAIV,MAAMc,EAAoB,CAAA,EAE1B,MADoB,CAAC,QAAS,QAAS,UAAU,EACrC,QAASC,GAAQ,CACvBF,EAAI,QAAQE,CAAG,IAAM,SACvBD,EAAaC,CAAG,EAAIF,EAAI,QAAQE,CAAG,EAEvC,CAAC,EAEM,MAAMN,EAAW,CACtB,SAAUI,EAAI,SACd,YAAaA,EAAI,YACjB,OAAAb,EACA,QAASc,CAAA,CACV,EAAE,OAAA,CACL,KACE,QAAO,MAAMP,EAAWM,CAAG,EAAE,OAAA,CAEjC,EACA,CAACN,EAAYE,CAAU,CAAA,EAQzB,MAAO,CAAE,mBALyBG,EAAAA,YAChC,SAAUI,IAAS,MAAMnC,EAAmB,GAAGmC,EAAM9B,EAAaC,CAAkB,EACpF,CAACD,EAAaC,CAAkB,CAAA,EAGsB,aAAcA,CAAA,CACxE"}