@ynput/ayon-frontend-shared 0.3.2 → 0.3.3
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/_virtual/index.cjs10.js +1 -1
- package/dist/_virtual/index.cjs11.js +1 -1
- package/dist/_virtual/index.cjs12.js +1 -1
- package/dist/_virtual/index.es10.js +3 -3
- package/dist/_virtual/index.es11.js +5 -5
- package/dist/_virtual/index.es12.js +5 -5
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- 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/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 +68 -63
- 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 +53 -51
- 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 +38 -37
- 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/package.json +1 -1
|
@@ -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":"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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
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CO,MAAMA,KAAoB,CAAC;AAAA,EAChC,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AACF,MAA+B;AAE7B,QAAMC,IAAWC,EAAA,GACX,CAACC,CAAU,IAAIC,EAAA,GACf,CAACC,CAAU,IAAIC,EAAA,GACf,CAACC,CAAU,IAAIC,EAAA,GACf,CAACC,CAAc,IAAIC,EAAA,GAGnBC,IAAeC;AAAA,IACnB,OAAOC,GAASC,MAAkB;AAChC,UAAI,CAACnB;AACH,cAAM,IAAI,MAAM,2CAA2C;AAG7D,UAAI;AACF,cAAMQ,EAAW;AAAA,UACf,UAAAR;AAAA,UACA,aAAamB,IAAgB,SAAYlB;AAAA,UACzC,SAAAiB;AAAA,QAAA,CACD,EAAE,OAAA,GAECf,KACFA,EAASe,CAAmB;AAAA,MAEhC,SAASE,GAAO;AACd,sBAAQ,MAAM,0BAA0BA,CAAK,GACvCA;AAAA,MACR;AAAA,IACF;AAAA,IACA,CAACZ,GAAYR,GAAUC,GAAaE,CAAQ;AAAA,EAAA,GAGxCkB,IAAeJ;AAAA,IACnB,OAAOK,GAAQJ,GAASC,MAAkB;AACxC,UAAI,CAACnB;AACH,cAAM,IAAI,MAAM,2CAA2C;AAG7D,UAAI;AACF,cAAMY,EAAW;AAAA,UACf,QAAAU;AAAA,UACA,UAAAtB;AAAA,UACA,aAAamB,IAAgB,SAAYlB;AAAA,UACzC,SAAAiB;AAAA,QAAA,CACD,EAAE,OAAA,GAECb,KACFA,EAAS,EAAE,GAAGa,GAAS,IAAII,GAAoB;AAAA,MAEnD,SAASF,GAAO;AACd,sBAAQ,MAAM,0BAA0BA,CAAK,GACvCA;AAAA,MACR;AAAA,IACF;AAAA,IACA,CAACR,GAAYZ,GAAUC,GAAaI,CAAQ;AAAA,EAAA,GAGxCkB,IAAeN;AAAA,IACnB,OAAOK,GAAQH,MAAkB;AAC/B,UAAI,CAACnB;AACH,cAAM,IAAI,MAAM,2CAA2C;AAG7D,UAAI;AACF,cAAMU,EAAW;AAAA,UACf,UAAAV;AAAA,UACA,aAAamB,IAAgB,SAAYlB;AAAA,UACzC,QAAAqB;AAAA,QAAA,CACD,EAAE,OAAA,GAEClB,KACFA,EAASkB,CAAM;AAAA,MAEnB,SAASF,GAAO;AACd,sBAAQ,MAAM,0BAA0BA,CAAK,GACvCA;AAAA,MACR;AAAA,IACF;AAAA,IACA,CAACV,GAAYV,GAAUC,GAAaG,CAAQ;AAAA,EAAA,GAGxCoB,IAAqBP;AAAA,IACzB,OAAOQ,MAAS;AACd,YAAM,EAAE,uBAAAC,GAAuB,gBAAAC,GAAgB,iBAAAC,GAAiB,oBAAAC,GAAoB,QAAAC,EAAA,IAClFL,KAAQ,CAAA;AACV,UAAI,CAACzB;AACH,cAAM,IAAI,MAAM,4CAA4C;AAG9D,UAAI;AAIF,QAAAM;AAAA,UACEyB,EAAa,KAAK,eAAe;AAAA,YAC/B,EAAE,MAAM,SAAS,IAAI,QAAQ/B,CAAQ,IAAIC,CAAW,GAAA;AAAA,YACpD,EAAE,MAAM,SAAS,IAAI,QAAQD,CAAQ,GAAA;AAAA,UAAG,CACzC;AAAA,QAAA;AAWH,cAAMgC,KADwB,MANC1B;AAAA,UAC7ByB,EAAa,UAAU,YAAY;AAAA,YACjC,EAAE,UAAA/B,GAAU,aAAAC,EAAA;AAAA,YACZ,EAAE,WAAW,IAAO,cAAc,GAAA;AAAA,UAAK;AAAA,QACzC,GAG4C;AAE9C,YAAIgC,IAAmB,CAAA,GACnBC,IAAiB;AAGrB,YAAIF,KAAmBA,EAAgB,YAAY,OAAO,KAAKA,EAAgB,QAAQ,EAAE,SAAS;AAChG,UAAAC,IAAmBD,EAAgB,UACnCE,IAAiB;AAAA,aACZ;AASL,gBAAMC,KADuB,MANC7B;AAAA,YAC5ByB,EAAa,UAAU,YAAY;AAAA,cACjC,EAAE,UAAA/B,EAAA;AAAA,cACF,EAAE,WAAW,IAAO,cAAc,GAAA;AAAA,YAAK;AAAA,UACzC,GAG0C;AAG5C,UAAImC,KAAkBA,EAAe,YAAY,OAAO,KAAKA,EAAe,QAAQ,EAAE,SAAS,MAC7FF,IAAmBE,EAAe,UAClCD,IAAiB;AAAA,QAGrB;AAGA,cAAMZ,IAAiBI,KAAyBU,EAAA,EAAsB;AA2CtE,YAhCIV,IACF,MAAMd,EAAW;AAAA,UACf,QAAQc;AAAA,UACR,UAAA1B;AAAA,UACA,aAAAC;AAAA,UACA,SAAS,EAAE,UAAUgC,EAAA;AAAA,QAAiB,CACvC,EAAE,OAAA,IAEH,MAAMzB,EAAW;AAAA,UACf,UAAAR;AAAA,UACA,aAAAC;AAAA,UACA,SAnBuB;AAAA,YACzB,IAAIqB;AAAA,YACJ,OAAO;AAAA,YACP,SAAS;AAAA,YACT,UAAUW;AAAA,UAAA;AAAA,QAeC,CACV,EAAE,OAAA,GAIL,MAAMnB,EAAe;AAAA,UACnB,UAAAd;AAAA,UACA,aAAAC;AAAA,UACA,4BAA4B,EAAE,QAAAqB,EAAA;AAAA,QAAO,CACtC,EAAE,OAAA,GAGCM,KACFA,EAAgBN,CAAM,GAIpBO,KACFA,EAAmB,EAAK,GAGtBC,GAAQ;AACV,gBAAMO,IACJH,MAAmB,YAAY,oCAC/BA,MAAmB,WAAW,mCAC9B;AACF,UAAAI,EAAM,QAAQD,CAAO;AAAA,QACvB;AAEA,eAAOf;AAAA,MACT,SAASF,GAAO;AACd,sBAAQ,MAAM,iCAAiCA,CAAK,GAChDU,KAAQQ,EAAM,MAAM,iCAAiC,GACnDlB;AAAA,MACR;AAAA,IACF;AAAA,IACA,CAACZ,GAAYI,GAAYE,GAAgBd,GAAUC,GAAaK,CAAQ;AAAA,EAAA;AAG1E,SAAO;AAAA,IACL,cAAAU;AAAA,IACA,cAAAK;AAAA,IACA,cAAAE;AAAA,IACA,oBAAAC;AAAA,EAAA;AAEJ;"}
|
|
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 S=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"),V=require("react-toastify"),p=require("react"),W=require("../context/ViewsContext.cjs.js"),l=async(u,e,q,t={},r,f)=>{const{viewSettings:y,viewType:o,projectName:k,selectedView:s,setSelectedView:a,workingView:c,onSettingsChanged:w}=r;if(!o)throw new Error("No view type provided for updating view settings");const d=s?.id,g=s?.working;try{e(q);const n={...y,...u},i=M.generateWorkingView(n);c?.id&&(i.id=c.id);const v=i.id,C=f({payload:i,viewType:o,projectName:k});s&&!g&&w(!0),a(v),await C,e(null),t.successMessage&&V.toast.success(t.successMessage)}catch(n){e(null),d&&a(d),s&&!g&&w(!1),console.error(n);const i=t.errorMessage||`Failed to update view settings: ${n}`;V.toast.error(i)}},b=()=>{const[u]=S.useCreateViewMutation(),e=W.useViewsContext(),q=p.useCallback(async r=>await u(r).unwrap(),[u]);return{updateViewSettings:p.useCallback(async(...r)=>await l(...r,e,q),[e]),onCreateView:q}};exports.updateViewSettings=l;exports.useViewUpdateHelper=b;
|
|
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
|
|
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 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 if (workingView?.id) {\n newWorkingView.id = workingView.id\n }\n const newWorkingViewId = 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 && !wasWorking) {\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\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\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","previousSelectedViewId","wasWorking","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,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,EAGlDJ,GAAa,KACfK,EAAe,GAAKL,EAAY,IAElC,MAAMO,EAAmBF,EAAe,GAGlCG,EAAUd,EAAa,CAC3B,QAASW,EACT,SAAAT,EACA,YAAAC,CAAA,CACD,EAGGC,GAAgB,CAACK,GACnBF,EAAkB,EAAI,EAGxBF,EAAgBQ,CAA0B,EAE1C,MAAMC,EAGNlB,EAAiB,IAAI,EAEjBE,EAAQ,gBACViB,QAAM,QAAQjB,EAAQ,cAAc,CAExC,OAASkB,EAAO,CAEdpB,EAAiB,IAAI,EAEjBY,GACFH,EAAgBG,CAAsB,EAGpCJ,GAAgB,CAACK,GACnBF,EAAkB,EAAK,EAGzB,QAAQ,MAAMS,CAAK,EACnB,MAAMC,EAAWnB,EAAQ,cAAgB,mCAAmCkB,CAAK,GACjFD,EAAAA,MAAM,MAAME,CAAQ,CACtB,CACF,EAEaC,EAAsB,IAAM,CACvC,KAAM,CAACC,CAAU,EAAIC,wBAAA,EAEfrB,EAAcsB,EAAAA,gBAAA,EAEdrB,EAAesB,EAAAA,YACnB,MAAOC,GAA8B,MAAMJ,EAAWI,CAAO,EAAE,OAAA,EAC/D,CAACJ,CAAU,CAAA,EAQb,MAAO,CAAE,mBALyBG,EAAAA,YAChC,SAAUE,IAAS,MAAM9B,EAAmB,GAAG8B,EAAMzB,EAAaC,CAAY,EAC9E,CAACD,CAAW,CAAA,EAG0C,aAAAC,CAAA,CAC1D"}
|
|
@@ -80,51 +80,52 @@ 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
|
|
83
|
+
import { useCreateViewMutation as C } 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
|
-
import { generateWorkingView as
|
|
87
|
-
import { toast as
|
|
88
|
-
import { useCallback as
|
|
89
|
-
import { useViewsContext as
|
|
90
|
-
const
|
|
86
|
+
import { generateWorkingView as M } from "./generateWorkingView.es.js";
|
|
87
|
+
import { toast as u } from "react-toastify";
|
|
88
|
+
import { useCallback as V } from "react";
|
|
89
|
+
import { useViewsContext as S } from "../context/ViewsContext.es.js";
|
|
90
|
+
const W = async (o, t, p, m = {}, i, f) => {
|
|
91
|
+
const {
|
|
92
|
+
viewSettings: l,
|
|
93
|
+
viewType: n,
|
|
94
|
+
projectName: v,
|
|
95
|
+
selectedView: e,
|
|
96
|
+
setSelectedView: a,
|
|
97
|
+
workingView: w,
|
|
98
|
+
onSettingsChanged: c
|
|
99
|
+
} = i;
|
|
100
|
+
if (!n) throw new Error("No view type provided for updating view settings");
|
|
101
|
+
const d = e?.id, g = e?.working;
|
|
91
102
|
try {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
setSelectedView: d,
|
|
100
|
-
workingView: u,
|
|
101
|
-
onSettingsChanged: V
|
|
102
|
-
} = i;
|
|
103
|
-
if (!e) throw "No view type provided for updating view settings";
|
|
104
|
-
t(o);
|
|
105
|
-
const f = { ...m, ...r }, a = k(f), l = u?.id || a.id, v = s({
|
|
106
|
-
payload: a,
|
|
107
|
-
viewType: e,
|
|
108
|
-
projectName: g
|
|
103
|
+
t(p);
|
|
104
|
+
const s = { ...l, ...o }, r = M(s);
|
|
105
|
+
w?.id && (r.id = w.id);
|
|
106
|
+
const k = r.id, y = f({
|
|
107
|
+
payload: r,
|
|
108
|
+
viewType: n,
|
|
109
|
+
projectName: v
|
|
109
110
|
});
|
|
110
|
-
|
|
111
|
-
} catch (
|
|
112
|
-
t(null), console.error(
|
|
113
|
-
const
|
|
114
|
-
|
|
111
|
+
e && !g && c(!0), a(k), await y, t(null), m.successMessage && u.success(m.successMessage);
|
|
112
|
+
} catch (s) {
|
|
113
|
+
t(null), d && a(d), e && !g && c(!1), console.error(s);
|
|
114
|
+
const r = m.errorMessage || `Failed to update view settings: ${s}`;
|
|
115
|
+
u.error(r);
|
|
115
116
|
}
|
|
116
|
-
},
|
|
117
|
-
const [
|
|
118
|
-
async (i) => await
|
|
119
|
-
[
|
|
117
|
+
}, ei = () => {
|
|
118
|
+
const [o] = C(), t = S(), p = V(
|
|
119
|
+
async (i) => await o(i).unwrap(),
|
|
120
|
+
[o]
|
|
120
121
|
);
|
|
121
|
-
return { updateViewSettings:
|
|
122
|
-
async (...i) => await
|
|
122
|
+
return { updateViewSettings: V(
|
|
123
|
+
async (...i) => await W(...i, t, p),
|
|
123
124
|
[t]
|
|
124
|
-
), onCreateView:
|
|
125
|
+
), onCreateView: p };
|
|
125
126
|
};
|
|
126
127
|
export {
|
|
127
|
-
|
|
128
|
-
|
|
128
|
+
W as updateViewSettings,
|
|
129
|
+
ei as useViewUpdateHelper
|
|
129
130
|
};
|
|
130
131
|
//# sourceMappingURL=viewUpdateHelper.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewUpdateHelper.es.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
|
|
1
|
+
{"version":3,"file":"viewUpdateHelper.es.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 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 if (workingView?.id) {\n newWorkingView.id = workingView.id\n }\n const newWorkingViewId = 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 && !wasWorking) {\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\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\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","previousSelectedViewId","wasWorking","newSettings","newWorkingView","generateWorkingView","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","useViewsContext","useCallback","payload","args"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,MAAMA,IAAqB,OAChCC,GACAC,GACAC,GACAC,IAAyB,CAAA,GACzBC,GACAC,MACkB;AAClB,QAAM;AAAA,IACJ,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,mBAAAC;AAAA,EAAA,IACER;AAEJ,MAAI,CAACG,EAAU,OAAM,IAAI,MAAM,kDAAkD;AAEjF,QAAMM,IAAyBJ,GAAc,IACvCK,IAAaL,GAAc;AAEjC,MAAI;AAEF,IAAAR,EAAiBC,CAAa;AAG9B,UAAMa,IAAc,EAAE,GAAGT,GAAc,GAAGN,EAAA,GAGpCgB,IAAiBC,EAAoBF,CAAW;AAGtD,IAAIJ,GAAa,OACfK,EAAe,KAAKL,EAAY;AAElC,UAAMO,IAAmBF,EAAe,IAGlCG,IAAUd,EAAa;AAAA,MAC3B,SAASW;AAAA,MACT,UAAAT;AAAA,MACA,aAAAC;AAAA,IAAA,CACD;AAGD,IAAIC,KAAgB,CAACK,KACnBF,EAAkB,EAAI,GAGxBF,EAAgBQ,CAA0B,GAE1C,MAAMC,GAGNlB,EAAiB,IAAI,GAEjBE,EAAQ,kBACViB,EAAM,QAAQjB,EAAQ,cAAc;AAAA,EAExC,SAASkB,GAAO;AAEd,IAAApB,EAAiB,IAAI,GAEjBY,KACFH,EAAgBG,CAAsB,GAGpCJ,KAAgB,CAACK,KACnBF,EAAkB,EAAK,GAGzB,QAAQ,MAAMS,CAAK;AACnB,UAAMC,IAAWnB,EAAQ,gBAAgB,mCAAmCkB,CAAK;AACjF,IAAAD,EAAM,MAAME,CAAQ;AAAA,EACtB;AACF,GAEaC,KAAsB,MAAM;AACvC,QAAM,CAACC,CAAU,IAAIC,EAAA,GAEfrB,IAAcsB,EAAA,GAEdrB,IAAesB;AAAA,IACnB,OAAOC,MAA8B,MAAMJ,EAAWI,CAAO,EAAE,OAAA;AAAA,IAC/D,CAACJ,CAAU;AAAA,EAAA;AAQb,SAAO,EAAE,oBALyBG;AAAA,IAChC,UAAUE,MAAS,MAAM9B,EAAmB,GAAG8B,GAAMzB,GAAaC,CAAY;AAAA,IAC9E,CAACD,CAAW;AAAA,EAAA,GAG0C,cAAAC,EAAA;AAC1D;"}
|
|
@@ -5,5 +5,6 @@ export interface LinkManagerItemProps {
|
|
|
5
5
|
isSelected?: boolean;
|
|
6
6
|
onEntityClick?: (entityId: string, entityType: string) => void;
|
|
7
7
|
onRemove: (e: React.MouseEvent<HTMLButtonElement>, link: LinkEntity) => void;
|
|
8
|
+
isManager?: boolean;
|
|
8
9
|
}
|
|
9
10
|
export declare const LinkManagerItem: FC<LinkManagerItemProps>;
|
|
@@ -41,6 +41,7 @@ export interface ViewsContextValue {
|
|
|
41
41
|
onCreateBaseView: (isStudioScope: boolean) => Promise<void>;
|
|
42
42
|
onUpdateBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>;
|
|
43
43
|
onDeleteBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>;
|
|
44
|
+
onLoadBaseView: (isStudioScope: boolean) => Promise<void>;
|
|
44
45
|
resetWorkingView: () => Promise<void>;
|
|
45
46
|
api: typeof viewsQueries;
|
|
46
47
|
dispatch: any;
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ViewListItemModel } from '../../../api';
|
|
2
|
+
import { ViewSettings } from '../..';
|
|
2
3
|
type Props = {
|
|
3
4
|
viewType?: string;
|
|
4
5
|
projectName?: string;
|
|
5
6
|
workingSettings?: ViewSettings;
|
|
7
|
+
workingView?: ViewListItemModel;
|
|
6
8
|
dispatch?: any;
|
|
7
9
|
};
|
|
8
10
|
export type UseBaseViewMutations = {
|
|
9
11
|
onCreateBaseView: (isStudioScope: boolean) => Promise<void>;
|
|
10
12
|
onUpdateBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>;
|
|
11
13
|
onDeleteBaseView: (baseViewId: string, isStudioScope: boolean) => Promise<void>;
|
|
14
|
+
onLoadBaseView: (isStudioScope: boolean) => Promise<void>;
|
|
12
15
|
};
|
|
13
|
-
export declare const useBaseViewMutations: ({ viewType, projectName, workingSettings, dispatch, }: Props) => UseBaseViewMutations;
|
|
16
|
+
export declare const useBaseViewMutations: ({ viewType, projectName, workingSettings, workingView, dispatch, }: Props) => UseBaseViewMutations;
|
|
14
17
|
export {};
|