@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.
- package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +1 -1
- package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/updateEntity.es.js +125 -120
- package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
- package/dist/shared/src/api/queries/views/getViews.cjs.js +1 -1
- package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/views/getViews.es.js +20 -24
- package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
- package/dist/shared/src/api/queries/views/updateViews.cjs.js +1 -1
- package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/views/updateViews.es.js +177 -118
- package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +30 -28
- package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.es.js +74 -56
- package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js +2 -1
- package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js +5 -4
- package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.es.js +123 -113
- package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +3 -3
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +178 -172
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +42 -41
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +26 -26
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js +80 -76
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +95 -52
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +13 -13
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +55 -38
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
- package/dist/types/components/LinksManager/LinkManagerItem.d.ts +1 -0
- package/dist/types/containers/Views/context/ViewsContext.d.ts +1 -0
- package/dist/types/containers/Views/hooks/useBaseViewMutations.d.ts +5 -2
- package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +3 -3
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback as
|
|
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
|
|
84
|
-
import { useCreateViewMutation as
|
|
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
|
|
88
|
-
import { BASE_VIEW_ID as
|
|
89
|
-
const
|
|
90
|
-
viewType:
|
|
91
|
-
projectName:
|
|
92
|
-
workingSettings:
|
|
93
|
-
|
|
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 [
|
|
96
|
+
const [v] = B(), [c] = F(), [f] = P(), [V] = y(), b = l(
|
|
96
97
|
async (r) => {
|
|
97
98
|
try {
|
|
98
|
-
const
|
|
99
|
+
const s = await v({
|
|
99
100
|
payload: {
|
|
100
|
-
label:
|
|
101
|
+
label: D,
|
|
101
102
|
working: !1,
|
|
102
|
-
settings:
|
|
103
|
+
settings: p || {}
|
|
103
104
|
},
|
|
104
|
-
viewType:
|
|
105
|
-
projectName: r ? void 0 :
|
|
105
|
+
viewType: e,
|
|
106
|
+
projectName: r ? void 0 : i
|
|
106
107
|
}).unwrap();
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
{ type: "view", id:
|
|
110
|
-
|
|
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
|
|
114
|
-
|
|
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),
|
|
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
|
-
[
|
|
121
|
-
),
|
|
121
|
+
[v, e, i, p, a]
|
|
122
|
+
), $ = l(
|
|
122
123
|
async (r, t) => {
|
|
123
124
|
try {
|
|
124
|
-
await
|
|
125
|
+
await c({
|
|
125
126
|
viewId: r,
|
|
126
|
-
viewType:
|
|
127
|
-
projectName: t ? void 0 :
|
|
128
|
-
payload: { settings:
|
|
129
|
-
}).unwrap(),
|
|
130
|
-
|
|
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
|
-
|
|
133
|
+
w(e, t ? void 0 : i)
|
|
133
134
|
])
|
|
134
135
|
);
|
|
135
|
-
const
|
|
136
|
-
|
|
136
|
+
const s = t ? "Studio" : "Project";
|
|
137
|
+
m.success(`${s} default view updated successfully`);
|
|
137
138
|
} catch (o) {
|
|
138
|
-
const
|
|
139
|
-
console.error(`Failed to update ${
|
|
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
|
-
[
|
|
143
|
-
),
|
|
143
|
+
[c, e, i, p, a]
|
|
144
|
+
), g = l(
|
|
144
145
|
async (r, t) => {
|
|
145
146
|
try {
|
|
146
|
-
await
|
|
147
|
+
await f({
|
|
147
148
|
viewId: r,
|
|
148
|
-
viewType:
|
|
149
|
-
projectName: t ? void 0 :
|
|
150
|
-
}).unwrap(),
|
|
151
|
-
|
|
149
|
+
viewType: e,
|
|
150
|
+
projectName: t ? void 0 : i
|
|
151
|
+
}).unwrap(), a(
|
|
152
|
+
u.util.invalidateTags([
|
|
152
153
|
{ type: "view", id: r },
|
|
153
|
-
|
|
154
|
+
w(e, t ? void 0 : i)
|
|
154
155
|
])
|
|
155
156
|
);
|
|
156
157
|
const o = t ? "Studio" : "Project";
|
|
157
|
-
|
|
158
|
+
m.success(`${o} default view removed successfully`);
|
|
158
159
|
} catch (o) {
|
|
159
|
-
const
|
|
160
|
-
console.error(`Failed to remove ${
|
|
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
|
-
[
|
|
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:
|
|
167
|
-
onUpdateBaseView:
|
|
168
|
-
onDeleteBaseView:
|
|
208
|
+
onCreateBaseView: b,
|
|
209
|
+
onUpdateBaseView: $,
|
|
210
|
+
onDeleteBaseView: g,
|
|
211
|
+
onLoadBaseView: M
|
|
169
212
|
};
|
|
170
213
|
};
|
|
171
214
|
export {
|
|
172
|
-
|
|
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
|
|
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":"01JA2CaA,EAAoB,CAAC,CAChC,SAAAC,EACA,YAAAC,EACA,UAAAC,EACA,SAAAC,EACA,SAAAC,EACA,SAAAC,CACF,IAA+B,CAE7B,MAAMC,EAAWC,EAAAA,YAAA,EACX,CAACC,CAAU,EAAIC,wBAAA,EACf,CAACC,CAAU,EAAIC,wBAAA,EACf,CAACC,CAAU,EAAIC,wBAAA,EACf,CAACC,CAAc,EAAIC,4BAAA,EAGnBC,EAAeC,EAAAA,YACnB,MAAOC,EAASC,IAAkB,CAChC,GAAI,CAACnB,EACH,MAAM,IAAI,MAAM,2CAA2C,EAG7D,GAAI,CACF,MAAMQ,EAAW,CACf,SAAAR,EACA,YAAamB,EAAgB,OAAYlB,EACzC,QAAAiB,CAAA,CACD,EAAE,OAAA,EAECf,GACFA,EAASe,CAAmB,CAEhC,OAASE,EAAO,CACd,cAAQ,MAAM,yBAA0BA,CAAK,EACvCA,CACR,CACF,EACA,CAACZ,EAAYR,EAAUC,EAAaE,CAAQ,CAAA,EAGxCkB,EAAeJ,EAAAA,YACnB,MAAOK,EAAQJ,EAASC,IAAkB,CACxC,GAAI,CAACnB,EACH,MAAM,IAAI,MAAM,2CAA2C,EAG7D,GAAI,CACF,MAAMY,EAAW,CACf,OAAAU,EACA,SAAAtB,EACA,YAAamB,EAAgB,OAAYlB,EACzC,QAAAiB,CAAA,CACD,EAAE,OAAA,EAECb,GACFA,EAAS,CAAE,GAAGa,EAAS,GAAII,EAAoB,CAEnD,OAASF,EAAO,CACd,cAAQ,MAAM,yBAA0BA,CAAK,EACvCA,CACR,CACF,EACA,CAACR,EAAYZ,EAAUC,EAAaI,CAAQ,CAAA,EAGxCkB,EAAeN,EAAAA,YACnB,MAAOK,EAAQH,IAAkB,CAC/B,GAAI,CAACnB,EACH,MAAM,IAAI,MAAM,2CAA2C,EAG7D,GAAI,CACF,MAAMU,EAAW,CACf,SAAAV,EACA,YAAamB,EAAgB,OAAYlB,EACzC,OAAAqB,CAAA,CACD,EAAE,OAAA,EAEClB,GACFA,EAASkB,CAAM,CAEnB,OAASF,EAAO,CACd,cAAQ,MAAM,yBAA0BA,CAAK,EACvCA,CACR,CACF,EACA,CAACV,EAAYV,EAAUC,EAAaG,CAAQ,CAAA,EAGxCoB,EAAqBP,EAAAA,YACzB,MAAOQ,GAAS,CACd,KAAM,CAAE,sBAAAC,EAAuB,eAAAC,EAAgB,gBAAAC,EAAiB,mBAAAC,EAAoB,OAAAC,CAAA,EAClFL,GAAQ,CAAA,EACV,GAAI,CAACzB,EACH,MAAM,IAAI,MAAM,4CAA4C,EAG9D,GAAI,CAIFM,EACEyB,EAAAA,aAAa,KAAK,eAAe,CAC/B,CAAE,KAAM,QAAS,GAAI,QAAQ/B,CAAQ,IAAIC,CAAW,EAAA,EACpD,CAAE,KAAM,QAAS,GAAI,QAAQD,CAAQ,EAAA,CAAG,CACzC,CAAA,EAWH,MAAMgC,GADwB,MANC1B,EAC7ByB,eAAa,UAAU,YAAY,SACjC,CAAE,SAAA/B,EAAU,YAAAC,CAAA,EACZ,CAAE,UAAW,GAAO,aAAc,EAAA,CAAK,CACzC,GAG4C,KAE9C,IAAIgC,EAAmB,CAAA,EACnBC,EAAiB,UAGrB,GAAIF,GAAmBA,EAAgB,UAAY,OAAO,KAAKA,EAAgB,QAAQ,EAAE,OAAS,EAChGC,EAAmBD,EAAgB,SACnCE,EAAiB,cACZ,CASL,MAAMC,GADuB,MANC7B,EAC5ByB,eAAa,UAAU,YAAY,SACjC,CAAE,SAAA/B,CAAA,EACF,CAAE,UAAW,GAAO,aAAc,EAAA,CAAK,CACzC,GAG0C,KAGxCmC,GAAkBA,EAAe,UAAY,OAAO,KAAKA,EAAe,QAAQ,EAAE,OAAS,IAC7FF,EAAmBE,EAAe,SAClCD,EAAiB,SAGrB,CAGA,MAAMZ,EAAiBI,GAAyBU,EAAAA,oBAAA,EAAsB,GA2CtE,GAhCIV,EACF,MAAMd,EAAW,CACf,OAAQc,EACR,SAAA1B,EACA,YAAAC,EACA,QAAS,CAAE,SAAUgC,CAAA,CAAiB,CACvC,EAAE,OAAA,EAEH,MAAMzB,EAAW,CACf,SAAAR,EACA,YAAAC,EACA,QAnBuB,CACzB,GAAIqB,EACJ,MAAO,UACP,QAAS,GACT,SAAUW,CAAA,CAeC,CACV,EAAE,OAAA,EAIL,MAAMnB,EAAe,CACnB,SAAAd,EACA,YAAAC,EACA,2BAA4B,CAAE,OAAAqB,CAAA,CAAO,CACtC,EAAE,OAAA,EAGCM,GACFA,EAAgBN,CAAM,EAIpBO,GACFA,EAAmB,EAAK,EAGtBC,EAAQ,CACV,MAAMO,EACJH,IAAmB,UAAY,kCAC/BA,IAAmB,SAAW,iCAC9B,iCACFI,EAAAA,MAAM,QAAQD,CAAO,CACvB,CAEA,OAAOf,CACT,OAASF,EAAO,CACd,cAAQ,MAAM,gCAAiCA,CAAK,EAChDU,GAAQQ,EAAAA,MAAM,MAAM,iCAAiC,EACnDlB,CACR,CACF,EACA,CAACZ,EAAYI,EAAYE,EAAgBd,EAAUC,EAAaK,CAAQ,CAAA,EAG1E,MAAO,CACL,aAAAU,EACA,aAAAK,EACA,aAAAE,EACA,mBAAAC,CAAA,CAEJ"}
|
|
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
|
|
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:
|
|
95
|
-
onDelete:
|
|
94
|
+
onCreate: f,
|
|
95
|
+
onDelete: V,
|
|
96
96
|
onUpdate: g
|
|
97
97
|
}) => {
|
|
98
|
-
const a = x(), [p] = E(), [
|
|
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(),
|
|
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,
|
|
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
|
|
134
|
+
await b({
|
|
135
135
|
viewType: t,
|
|
136
136
|
projectName: e ? void 0 : i,
|
|
137
137
|
viewId: r
|
|
138
|
-
}).unwrap(),
|
|
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
|
-
[
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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 {
|
|
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"}
|