@ynput/ayon-frontend-shared 0.2.18 → 0.2.19
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/DetailsPanel.cjs.js +6 -6
- package/dist/DetailsPanel.es.js +7 -7
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/ProjectTreeTable.cjs.js +6 -0
- package/dist/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/ProjectTreeTable.es.js +6 -0
- package/dist/ProjectTreeTable.es.js.map +1 -1
- package/dist/api.cjs.js +6 -0
- package/dist/api.cjs.js.map +1 -1
- package/dist/api.es.js +10 -4
- package/dist/index.cjs.js +6 -5
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +6 -5
- package/dist/index.es.js.map +1 -1
- package/dist/shared/src/api/generated/folders.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/folders.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +38 -0
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +38 -0
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/queries/actions/getActions.cjs.js +9 -1
- package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/actions/getActions.es.js +9 -1
- package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +2 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +2 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +12 -8
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +12 -8
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +67 -0
- package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.es.js +68 -1
- package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +19 -3
- package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/updateLists.es.js +19 -3
- package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +13 -0
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.es.js +13 -0
- package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.cjs.js +2 -0
- package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.es.js +2 -0
- package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
- package/dist/shared/src/api/queries/versions/updateVersions.cjs.js +3 -1
- package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/versions/updateVersions.es.js +3 -1
- package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +5 -5
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +5 -5
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +2 -2
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +2 -2
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +15 -14
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +15 -14
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
- package/dist/shared/src/components/PlayableIcon/PlayableIcon.cjs.js +43 -0
- package/dist/shared/src/components/PlayableIcon/PlayableIcon.cjs.js.map +1 -0
- package/dist/shared/src/components/PlayableIcon/PlayableIcon.es.js +43 -0
- package/dist/shared/src/components/PlayableIcon/PlayableIcon.es.js.map +1 -0
- package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +15 -15
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +15 -15
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +6 -5
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +6 -5
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +6 -5
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +6 -5
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +6 -5
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +6 -5
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js +2 -2
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js +2 -2
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +6 -5
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +6 -5
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +6 -5
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +6 -5
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +6 -5
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -5
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js +8 -2
- package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.es.js +8 -2
- package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +10 -3
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +10 -3
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js +14 -0
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js +14 -0
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +6 -5
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +6 -5
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +5 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +5 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +6 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +6 -4
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +7 -5
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js +1 -31
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js +1 -31
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js +2 -2
- package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.es.js +2 -2
- package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +48 -4
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +50 -6
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +47 -11
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +47 -11
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js +5 -3
- package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js +5 -3
- package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.cjs.js +106 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.es.js +106 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +14 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +14 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +15 -3
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +15 -3
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +106 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +106 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +26 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +26 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +135 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +135 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +8 -6
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +8 -6
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js +1 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js +1 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +88 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +88 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.es.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +35 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +35 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +88 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +88 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +90 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +90 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.cjs.js +19 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.es.js +19 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.cjs.js +26 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.es.js +26 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +9 -8
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +10 -9
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +8 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +8 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +190 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +190 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +4 -147
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +2 -145
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +12 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +6 -5
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +6 -5
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +5 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +5 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/util/confirmDelete.cjs.js +1 -0
- package/dist/shared/src/util/confirmDelete.cjs.js.map +1 -1
- package/dist/shared/src/util/confirmDelete.es.js +2 -0
- package/dist/shared/src/util/confirmDelete.es.js.map +1 -1
- package/dist/types/SimpleTable/SimpleTable.d.ts +1 -0
- package/dist/types/SimpleTable/SimpleTableRowTemplate.d.ts +1 -1
- package/dist/types/SimpleTable/context/SimpleTableContext.d.ts +5 -1
- package/dist/types/api/generated/folders.d.ts +1 -0
- package/dist/types/api/generated/graphql.d.ts +66 -5
- package/dist/types/api/queries/actions/getActions.d.ts +132 -1
- package/dist/types/api/queries/activities/getActivities.d.ts +6 -0
- package/dist/types/api/queries/activities/updateActivities.d.ts +12 -0
- package/dist/types/api/queries/entities/getEntity.d.ts +6 -0
- package/dist/types/api/queries/entities/getEntityPanel.d.ts +6 -0
- package/dist/types/api/queries/entities/transformDetailsPanelData.d.ts +1 -0
- package/dist/types/api/queries/entities/updateEntity.d.ts +6 -0
- package/dist/types/api/queries/entityLists/getLists.d.ts +1517 -2
- package/dist/types/api/queries/entityLists/types.d.ts +30 -1
- package/dist/types/api/queries/entityLists/updateLists.d.ts +166 -3
- package/dist/types/api/queries/overview/getOverview.d.ts +6 -0
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +6 -0
- package/dist/types/api/queries/users/getUsers.d.ts +6 -0
- package/dist/types/components/PlayableIcon/PlayableIcon.d.ts +4 -0
- package/dist/types/containers/Actions/Actions.d.ts +7 -1
- package/dist/types/containers/Actions/ActionsDropdown/ActionsDropdown.d.ts +5 -3
- package/dist/types/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.d.ts +0 -1
- package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +6 -2
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +4 -1
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +11 -2
- package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.d.ts +9 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +2 -2
- package/dist/types/containers/ProjectTreeTable/hooks/useKeyboardNavigation.d.ts +3 -3
- package/dist/types/containers/ProjectTreeTable/hooks/useUpdateTableData.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/types/table.d.ts +10 -1
- package/dist/types/containers/ProjectTreeTable/utils/getEntityViewerIds.d.ts +4 -0
- package/dist/types/containers/ProjectTreeTable/utils/getTypeDefaultValue.d.ts +2 -0
- package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +2 -0
- package/dist/types/containers/ProjectTreeTable/widgets/CellWidget.d.ts +2 -1
- package/dist/types/containers/ProjectTreeTable/widgets/EnumCellValue.d.ts +20 -0
- package/dist/types/containers/ProjectTreeTable/widgets/EnumWidget.d.ts +1 -11
- package/dist/types/containers/ProjectTreeTable/widgets/ThumbnailWidget.d.ts +1 -0
- package/dist/types/context/DetailsPanelContext.d.ts +1 -0
- package/dist/types/util/confirmDelete.d.ts +2 -1
- package/dist/util.cjs.js +2 -0
- package/dist/util.cjs.js.map +1 -1
- package/dist/util.es.js +2 -0
- package/dist/util.es.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLists.cjs.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseAllAttribs } from '../overview'\nimport { PubSub } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 500\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseAllAttribs(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: response.project.entityLists.edges[0].node.items.pageInfo,\n }\n },\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const handlePubSub = (topic: string, message: ListItemMessage) => {\n if (topic !== 'entity_list.changed') return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n // We have all the data we need to update the cache\n updateCachedData((draft) => {\n const list = draft.pages.flatMap((page) => page.lists).find((l) => l.id === id)\n if (!list) return\n const newList = {\n ...list,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n\n Object.assign(list, newList)\n })\n // NOTE: We have to invalidate here as we don't know if other fields are updated not included in the updateCachedData\n // invalidates lists list cache\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityList', id: `LIST` }]))\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity_list.changed', handlePubSub)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n }),\n getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(_args, { cacheDataLoaded, cacheEntryRemoved, dispatch }) {\n let token, token2\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n PubSub.unsubscribe(token2)\n },\n }),\n }),\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n"],"names":["gqlApi","parseAllAttribs","PubSub"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getLists.cjs.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsItemsForReviewSessionQuery,\n GetListsItemsForReviewSessionResult,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseAllAttribs } from '../overview'\nimport { PubSub } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 500\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n GetListsItemsForReviewSession: OverrideResultType<\n Definitions['GetListsItemsForReviewSession'],\n GetListsItemsForReviewSessionResult\n >\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseAllAttribs(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: response.project.entityLists.edges[0].node.items.pageInfo,\n }\n },\n },\n GetListsItemsForReviewSession: {\n transformResponse: (\n response: GetListsItemsForReviewSessionQuery,\n ): GetListsItemsForReviewSessionResult => {\n return {\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.entityListType,\n })),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const handlePubSub = (topic: string, message: ListItemMessage) => {\n if (topic !== 'entity_list.changed') return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n // We have all the data we need to update the cache\n updateCachedData((draft) => {\n const list = draft.pages.flatMap((page) => page.lists).find((l) => l.id === id)\n if (!list) return\n const newList = {\n ...list,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n\n Object.assign(list, newList)\n })\n // NOTE: We have to invalidate here as we don't know if other fields are updated not included in the updateCachedData\n // invalidates lists list cache\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityList', id: `LIST` }]))\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity_list.changed', handlePubSub)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n }),\n getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(_args, { cacheDataLoaded, cacheEntryRemoved, dispatch }) {\n let token, token2\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n PubSub.unsubscribe(token2)\n },\n }),\n getListsItemsForReviewSession: build.infiniteQuery<\n GetListsItemsForReviewSessionResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before' | 'filter'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListsItemsForReviewSession.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n }),\n }),\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useGetListsItemsForReviewSessionInfiniteQuery,\n useLazyGetListsQuery,\n useLazyGetListsItemsForReviewSessionQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n"],"names":["gqlApi","parseAllAttribs","PubSub"],"mappings":"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"}
|
|
@@ -67,6 +67,14 @@ const getListsGqlApiEnhanced = injectedRtkApi.enhanceEndpoints({
|
|
|
67
67
|
pageInfo: response.project.entityLists.edges[0].node.items.pageInfo
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
|
+
},
|
|
71
|
+
GetListsItemsForReviewSession: {
|
|
72
|
+
transformResponse: (response) => {
|
|
73
|
+
return {
|
|
74
|
+
lists: response.project.entityLists.edges.map((edge) => edge.node),
|
|
75
|
+
pageInfo: response.project.entityLists.pageInfo
|
|
76
|
+
};
|
|
77
|
+
}
|
|
70
78
|
}
|
|
71
79
|
}
|
|
72
80
|
});
|
|
@@ -116,6 +124,10 @@ const getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({
|
|
|
116
124
|
...((result == null ? void 0 : result.pages.flatMap((page) => page.lists)) || []).map((list) => ({
|
|
117
125
|
type: "entityList",
|
|
118
126
|
id: list.id
|
|
127
|
+
})),
|
|
128
|
+
...((result == null ? void 0 : result.pages.flatMap((page) => page.lists)) || []).map((list) => ({
|
|
129
|
+
type: "entityList",
|
|
130
|
+
id: list.entityListType
|
|
119
131
|
}))
|
|
120
132
|
],
|
|
121
133
|
async onCacheEntryAdded(_args, { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData }) {
|
|
@@ -251,12 +263,64 @@ const getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({
|
|
|
251
263
|
PubSub.unsubscribe(token);
|
|
252
264
|
PubSub.unsubscribe(token2);
|
|
253
265
|
}
|
|
266
|
+
}),
|
|
267
|
+
getListsItemsForReviewSession: build.infiniteQuery({
|
|
268
|
+
infiniteQueryOptions: {
|
|
269
|
+
initialPageParam: { cursor: "" },
|
|
270
|
+
getNextPageParam: (lastPage) => {
|
|
271
|
+
const { pageInfo } = lastPage;
|
|
272
|
+
if (!pageInfo.hasNextPage || !pageInfo.endCursor) return void 0;
|
|
273
|
+
return {
|
|
274
|
+
cursor: pageInfo.endCursor
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
queryFn: async ({ queryArg, pageParam }, api) => {
|
|
279
|
+
try {
|
|
280
|
+
const { cursor } = pageParam;
|
|
281
|
+
const queryParams = {
|
|
282
|
+
...queryArg,
|
|
283
|
+
first: LISTS_PER_PAGE,
|
|
284
|
+
after: cursor || void 0
|
|
285
|
+
};
|
|
286
|
+
const result = await api.dispatch(
|
|
287
|
+
getListsGqlApiEnhanced.endpoints.GetListsItemsForReviewSession.initiate(queryParams, {
|
|
288
|
+
forceRefetch: true
|
|
289
|
+
})
|
|
290
|
+
);
|
|
291
|
+
if (result.error) throw result.error;
|
|
292
|
+
return {
|
|
293
|
+
data: result.data || {
|
|
294
|
+
lists: [],
|
|
295
|
+
pageInfo: {
|
|
296
|
+
hasNextPage: false,
|
|
297
|
+
endCursor: null,
|
|
298
|
+
startCursor: null,
|
|
299
|
+
hasPreviousPage: false
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
} catch (e) {
|
|
304
|
+
console.error("Error in getListsInfinite queryFn:", e);
|
|
305
|
+
return { error: { status: "FETCH_ERROR", error: e.message } };
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
providesTags: (result) => [
|
|
309
|
+
{ type: "entityList", id: "LIST" },
|
|
310
|
+
...((result == null ? void 0 : result.pages.flatMap((page) => page.lists)) || []).map((list) => ({
|
|
311
|
+
type: "entityList",
|
|
312
|
+
id: list.id
|
|
313
|
+
}))
|
|
314
|
+
]
|
|
254
315
|
})
|
|
255
316
|
})
|
|
256
317
|
});
|
|
257
318
|
const {
|
|
258
319
|
useGetListsInfiniteInfiniteQuery,
|
|
259
320
|
useGetListItemsInfiniteInfiniteQuery,
|
|
321
|
+
useGetListsItemsForReviewSessionInfiniteQuery,
|
|
322
|
+
useLazyGetListsQuery,
|
|
323
|
+
useLazyGetListsItemsForReviewSessionQuery,
|
|
260
324
|
useLazyGetListItemsQuery
|
|
261
325
|
} = getListsGqlApiInjected;
|
|
262
326
|
export {
|
|
@@ -265,6 +329,9 @@ export {
|
|
|
265
329
|
getListsGqlApiInjected as default,
|
|
266
330
|
useGetListItemsInfiniteInfiniteQuery,
|
|
267
331
|
useGetListsInfiniteInfiniteQuery,
|
|
268
|
-
|
|
332
|
+
useGetListsItemsForReviewSessionInfiniteQuery,
|
|
333
|
+
useLazyGetListItemsQuery,
|
|
334
|
+
useLazyGetListsItemsForReviewSessionQuery,
|
|
335
|
+
useLazyGetListsQuery
|
|
269
336
|
};
|
|
270
337
|
//# sourceMappingURL=getLists.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLists.es.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseAllAttribs } from '../overview'\nimport { PubSub } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 500\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseAllAttribs(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: response.project.entityLists.edges[0].node.items.pageInfo,\n }\n },\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const handlePubSub = (topic: string, message: ListItemMessage) => {\n if (topic !== 'entity_list.changed') return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n // We have all the data we need to update the cache\n updateCachedData((draft) => {\n const list = draft.pages.flatMap((page) => page.lists).find((l) => l.id === id)\n if (!list) return\n const newList = {\n ...list,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n\n Object.assign(list, newList)\n })\n // NOTE: We have to invalidate here as we don't know if other fields are updated not included in the updateCachedData\n // invalidates lists list cache\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityList', id: `LIST` }]))\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity_list.changed', handlePubSub)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n }),\n getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(_args, { cacheDataLoaded, cacheEntryRemoved, dispatch }) {\n let token, token2\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n PubSub.unsubscribe(token2)\n },\n }),\n }),\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n"],"names":["gqlApi"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getLists.es.js","sources":["../../../../../../src/api/queries/entityLists/getLists.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport {\n FetchBaseQueryError,\n DefinitionsFromApi,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\nimport type {\n GetListItemsQuery,\n GetListItemsQueryVariables,\n GetListsItemsForReviewSessionQuery,\n GetListsItemsForReviewSessionResult,\n GetListsQuery,\n GetListsQueryVariables,\n} from '@shared/api'\nimport { parseAllAttribs } from '../overview'\nimport { PubSub } from '@shared/util'\nimport {\n GetListItemsResult,\n GetListsResult,\n ListItemMessage,\n ListItemsPageParam,\n ListsPageParam,\n} from './types'\n\n// GRAPHQL API (getLists and getListItems)\n// Define the LISTS_PER_PAGE constant for pagination\nexport const LISTS_PER_PAGE = 500\nexport const LIST_ITEMS_PER_PAGE = 100\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLists' | 'GetListItems'> & {\n GetLists: OverrideResultType<Definitions['GetLists'], GetListsResult>\n GetListItems: OverrideResultType<Definitions['GetListItems'], GetListItemsResult>\n GetListsItemsForReviewSession: OverrideResultType<\n Definitions['GetListsItemsForReviewSession'],\n GetListsItemsForReviewSessionResult\n >\n}\n\nconst getListsGqlApiEnhanced = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLists: {\n transformResponse: (response: GetListsQuery): GetListsResult => {\n return {\n // @ts-expect-error - entityType is string\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n GetListItems: {\n transformResponse: (response: GetListItemsQuery): GetListItemsResult => {\n return {\n items: response.project.entityLists.edges.flatMap((listEdge) =>\n listEdge.node.items.edges.map(({ node, ...edge }) => {\n return {\n ...node,\n ...edge,\n attrib: parseAllAttribs(edge.allAttrib),\n } as GetListItemsResult['items'][number]\n }),\n ),\n pageInfo: response.project.entityLists.edges[0].node.items.pageInfo,\n }\n },\n },\n GetListsItemsForReviewSession: {\n transformResponse: (\n response: GetListsItemsForReviewSessionQuery,\n ): GetListsItemsForReviewSessionResult => {\n return {\n lists: response.project.entityLists.edges.map((edge) => edge.node),\n pageInfo: response.project.entityLists.pageInfo,\n }\n },\n },\n },\n})\n\nconst getListsGqlApiInjected = getListsGqlApiEnhanced.injectEndpoints({\n endpoints: (build) => ({\n getListsInfinite: build.infiniteQuery<\n GetListsResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetLists.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.entityListType,\n })),\n ],\n async onCacheEntryAdded(\n _args,\n { cacheDataLoaded, cacheEntryRemoved, dispatch, updateCachedData },\n ) {\n let token\n try {\n // wait for the initial query to resolve before proceeding\n await cacheDataLoaded\n\n const handlePubSub = (topic: string, message: ListItemMessage) => {\n if (topic !== 'entity_list.changed') return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n\n // We have all the data we need to update the cache\n updateCachedData((draft) => {\n const list = draft.pages.flatMap((page) => page.lists).find((l) => l.id === id)\n if (!list) return\n const newList = {\n ...list,\n label: summary.label,\n entityType: summary.entity_type,\n entityListType: summary.entity_list_type,\n count: summary.count,\n }\n\n Object.assign(list, newList)\n })\n // NOTE: We have to invalidate here as we don't know if other fields are updated not included in the updateCachedData\n // invalidates lists list cache\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityList', id: `LIST` }]))\n }\n\n // sub to websocket topic\n token = PubSub.subscribe('entity_list.changed', handlePubSub)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n },\n }),\n getListItemsInfinite: build.infiniteQuery<\n GetListItemsResult,\n Omit<GetListItemsQueryVariables, 'first' | 'after' | 'before' | 'last'> & { desc?: boolean },\n ListItemsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { sortBy, desc, ...rest } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams: GetListItemsQueryVariables = {\n ...rest,\n first: LIST_ITEMS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Add cursor-based pagination\n queryParams.after = cursor || undefined\n queryParams.first = LIST_ITEMS_PER_PAGE\n\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.after = undefined\n queryParams.last = LIST_ITEMS_PER_PAGE\n queryParams.first = undefined\n }\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListItems.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n items: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { listId, projectName }) => [\n { type: 'entityListItem', id: 'LIST' },\n { type: 'entityListItem', id: listId },\n { type: 'entityListItem', id: projectName },\n ...(result?.pages.flatMap((page) => page.items) || [])\n .filter((i) => !!i)\n .flatMap((item) => [\n {\n type: 'entityListItem',\n id: item.id,\n },\n {\n type: 'entityListItem',\n id: item.entityId,\n },\n ]),\n ],\n async onCacheEntryAdded(_args, { cacheDataLoaded, cacheEntryRemoved, dispatch }) {\n let token, token2\n try {\n // wait for the initial query to resolve before proceeding\n const cache = await cacheDataLoaded\n const pages = cache.data.pages\n const items = pages.flatMap((page) => page.items)\n // get entityType of first item\n const entityType = items[0]?.entityType\n\n const listTopic = `entity_list.changed`\n const entityTypeTopic = `entity.${entityType}`\n\n const invalidateListItems = (id: string) => {\n dispatch(gqlApi.util.invalidateTags([{ type: 'entityListItem', id: id }]))\n }\n\n const handleListMessage = (topic: string, message: ListItemMessage) => {\n if (topic !== listTopic) return\n const summary = message.summary\n const id = summary.id\n if (!id) return\n invalidateListItems(id)\n }\n\n const handleEntityMessage = (topic: string, message: ListItemMessage) => {\n if (!topic.startsWith(entityTypeTopic)) return\n const summary = message.summary\n const id = summary.entityId\n // check for id\n if (!id) return\n invalidateListItems(id)\n }\n\n // sub to websocket topic\n token = PubSub.subscribe(listTopic, handleListMessage)\n if (entityType) token2 = PubSub.subscribe(entityTypeTopic, handleEntityMessage)\n } catch {\n // no-op in case `cacheEntryRemoved` resolves before `cacheDataLoaded`,\n // in which case `cacheDataLoaded` will throw\n }\n // cacheEntryRemoved will resolve when the cache subscription is no longer active\n await cacheEntryRemoved\n // perform cleanup steps once the `cacheEntryRemoved` promise resolves\n PubSub.unsubscribe(token)\n PubSub.unsubscribe(token2)\n },\n }),\n getListsItemsForReviewSession: build.infiniteQuery<\n GetListsItemsForReviewSessionResult,\n Omit<GetListsQueryVariables, 'first' | 'after' | 'before' | 'filter'>,\n ListsPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '' },\n getNextPageParam: (lastPage) => {\n const { pageInfo } = lastPage\n if (!pageInfo.hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { cursor } = pageParam\n\n // Build the query parameters for GetLists\n const queryParams = {\n ...queryArg,\n first: LISTS_PER_PAGE,\n after: cursor || undefined,\n }\n\n // Call the existing GetLists endpoint\n const result = await api.dispatch(\n getListsGqlApiEnhanced.endpoints.GetListsItemsForReviewSession.initiate(queryParams, {\n forceRefetch: true,\n }),\n )\n\n if (result.error) throw result.error\n\n return {\n data: result.data || {\n lists: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n },\n }\n } catch (e: any) {\n console.error('Error in getListsInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result) => [\n { type: 'entityList', id: 'LIST' },\n ...(result?.pages.flatMap((page) => page.lists) || []).map((list) => ({\n type: 'entityList' as const,\n id: list.id,\n })),\n ],\n }),\n }),\n})\n\nexport default getListsGqlApiInjected\n\nexport const {\n useGetListsInfiniteInfiniteQuery,\n useGetListItemsInfiniteInfiniteQuery,\n useGetListsItemsForReviewSessionInfiniteQuery,\n useLazyGetListsQuery,\n useLazyGetListsItemsForReviewSessionQuery,\n useLazyGetListItemsQuery,\n} = getListsGqlApiInjected\n"],"names":["gqlApi"],"mappings":"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"}
|
|
@@ -211,6 +211,19 @@ const updateListsEnhancedApi = entityLists.api.enhanceEndpoints({
|
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
});
|
|
214
|
+
const updateListsInjectedApi = updateListsEnhancedApi.injectEndpoints({
|
|
215
|
+
endpoints: (build) => ({
|
|
216
|
+
createSessionFromList: build.mutation({
|
|
217
|
+
query: (queryArg) => ({
|
|
218
|
+
url: `/api/addons/review/${queryArg.addonVersion}/${queryArg.projectName}/sessions/fromList`,
|
|
219
|
+
method: "POST",
|
|
220
|
+
body: queryArg.sessionFromListRequest
|
|
221
|
+
}),
|
|
222
|
+
transformErrorResponse: (error) => error.data.detail,
|
|
223
|
+
invalidatesTags: () => [{ type: "entityList", id: "LIST" }]
|
|
224
|
+
})
|
|
225
|
+
})
|
|
226
|
+
});
|
|
214
227
|
const {
|
|
215
228
|
// LIST MUTATIONS
|
|
216
229
|
useCreateEntityListMutation,
|
|
@@ -220,12 +233,15 @@ const {
|
|
|
220
233
|
useUpdateEntityListItemsMutation,
|
|
221
234
|
useUpdateEntityListItemMutation,
|
|
222
235
|
useCreateEntityListItemMutation,
|
|
223
|
-
useDeleteEntityListItemMutation
|
|
224
|
-
|
|
236
|
+
useDeleteEntityListItemMutation,
|
|
237
|
+
// REVIEW SESSION MUTATIONS
|
|
238
|
+
useCreateSessionFromListMutation
|
|
239
|
+
} = updateListsInjectedApi;
|
|
225
240
|
exports.entityListsQueriesGql = getLists.default;
|
|
226
|
-
exports.entityListsQueriesRest =
|
|
241
|
+
exports.entityListsQueriesRest = updateListsInjectedApi;
|
|
227
242
|
exports.useCreateEntityListItemMutation = useCreateEntityListItemMutation;
|
|
228
243
|
exports.useCreateEntityListMutation = useCreateEntityListMutation;
|
|
244
|
+
exports.useCreateSessionFromListMutation = useCreateSessionFromListMutation;
|
|
229
245
|
exports.useDeleteEntityListItemMutation = useDeleteEntityListItemMutation;
|
|
230
246
|
exports.useDeleteEntityListMutation = useDeleteEntityListMutation;
|
|
231
247
|
exports.useUpdateEntityListItemMutation = useUpdateEntityListItemMutation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateLists.cjs.js","sources":["../../../../../../src/api/queries/entityLists/updateLists.ts"],"sourcesContent":["import { entityListsApi } from '@shared/api/generated'\nimport gqlApi from './getLists'\nimport { current } from '@reduxjs/toolkit'\n\nconst updateListsEnhancedApi = entityListsApi.enhanceEndpoints({\n endpoints: {\n // LIST MUTATIONS\n createEntityList: {\n invalidatesTags: [{ type: 'entityList', id: 'LIST' }],\n },\n updateEntityList: {\n async onQueryStarted(\n { listId, entityListPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n const tags = [{ type: 'entityList', id: listId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListsInfinite')\n\n let patchResults: any[] = []\n for (const entry of infiniteEntries) {\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListsInfinite', entry.originalArgs, (draft) => {\n for (const page of draft.pages) {\n const listIndex = page.lists.findIndex((list) => list.id === listId)\n if (listIndex !== -1) {\n const list = page.lists[listIndex]\n // Update the list with the new data\n Object.assign(list, entityListPatchModel)\n break\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n invalidatesTags: (_s, _e, { listId }) => {\n const tags = [{ type: 'entityList', id: listId }]\n return tags\n },\n },\n deleteEntityList: {\n invalidatesTags: [{ type: 'entityList', id: 'LIST' }],\n },\n // LIST ITEM MUTATIONS\n updateEntityListItems: {\n async onQueryStarted(\n { listId, entityListMultiPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n // We are primarily interested in updating the items within a specific list\n const tags = [{ type: 'entityListItem', id: listId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListItemsInfinite')\n\n let patchResults: any[] = []\n\n if (!entityListMultiPatchModel.items || entityListMultiPatchModel.items.length === 0) {\n // No items to update, proceed without optimistic update\n await queryFulfilled\n return\n }\n\n for (const entry of infiniteEntries) {\n // only update entries that match the listId\n if (entry.originalArgs.listId !== listId) continue\n\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListItemsInfinite', entry.originalArgs, (draft) => {\n let overallPositionChanged = false\n // First pass: update items in place and check if any position changed\n for (const page of draft.pages) {\n entityListMultiPatchModel.items?.forEach((patchItem) => {\n const itemIndex = page.items.findIndex(\n (item) => item.id === patchItem.id || item.entityId === patchItem.entityId,\n )\n\n if (itemIndex !== -1) {\n const existingItem = page.items[itemIndex]\n // Merge existing item with patchItem, ensuring attrib is also merged\n const updatedItem = {\n ...existingItem,\n ...patchItem, // Apply all top-level fields from patchItem\n attrib: {\n ...existingItem.attrib,\n ...(patchItem.attrib || {}), // Merge attrib safely\n },\n }\n Object.assign(page.items[itemIndex], updatedItem)\n\n if (patchItem.position !== undefined) {\n overallPositionChanged = true\n }\n }\n })\n }\n\n if (overallPositionChanged) {\n // Collect all items from all pages for this specific cache entry\n let allItems = draft.pages.flatMap((page) => page.items)\n\n // Sort all items based on position\n allItems.sort((a, b) => {\n const posA = typeof a.position === 'number' ? a.position : Infinity\n const posB = typeof b.position === 'number' ? b.position : Infinity\n return posA - posB\n })\n\n // Re-distribute sorted items back into pages, maintaining original page sizes\n let currentItemIndex = 0\n for (const page of draft.pages) {\n const pageItemCount = page.items.length // Get original item count for this page\n // Replace page items with the corresponding slice from the globally sorted list\n page.items = allItems.slice(currentItemIndex, currentItemIndex + pageItemCount)\n currentItemIndex += pageItemCount\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n invalidatesTags: (_s, _e, { listId, entityListMultiPatchModel: { items } }) => {\n const tags = [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ...(items || []).flatMap((i) =>\n (i.id ? [{ type: 'entityListItem', id: i.id }] : []).concat(\n i.entityId ? [{ type: 'entityListItem', id: i.entityId }] : [],\n ),\n ),\n ]\n return tags\n },\n },\n updateEntityListItem: {\n async onQueryStarted(\n { listItemId, entityListItemPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n const tags = [{ type: 'entityListItem', id: listItemId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListItemsInfinite')\n\n let patchResults: any[] = []\n for (const entry of infiniteEntries) {\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListItemsInfinite', entry.originalArgs, (draft) => {\n for (const page of draft.pages) {\n const listIndex = page.items.findIndex((list) => list.id === listItemId)\n if (listIndex !== -1) {\n const list = page.items[listIndex]\n const newListItem = {\n ...list,\n attrib: {\n ...list.attrib,\n ...entityListItemPatchModel.attrib,\n },\n }\n // Update the list with the new data\n Object.assign(list, newListItem)\n break\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n },\n createEntityListItem: {\n invalidatesTags: (_s, _e, { listId }) => [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ],\n },\n deleteEntityListItem: {\n invalidatesTags: (_s, _e, { listId }) => [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ],\n },\n },\n})\n\nexport const {\n // LIST MUTATIONS\n useCreateEntityListMutation,\n useUpdateEntityListMutation,\n useDeleteEntityListMutation,\n // LIST ITEM MUTATIONS\n useUpdateEntityListItemsMutation,\n useUpdateEntityListItemMutation,\n useCreateEntityListItemMutation,\n useDeleteEntityListItemMutation,\n} = updateListsEnhancedApi\nexport { updateListsEnhancedApi as entityListsQueriesRest, gqlApi as entityListsQueriesGql }\n"],"names":["entityListsApi","gqlApi"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"updateLists.cjs.js","sources":["../../../../../../src/api/queries/entityLists/updateLists.ts"],"sourcesContent":["import { entityListsApi } from '@shared/api/generated'\nimport gqlApi from './getLists'\nimport { CreateSessionFromListApiArg, CreateSessionFromListApiResponse } from './types'\n\nconst updateListsEnhancedApi = entityListsApi.enhanceEndpoints({\n endpoints: {\n // LIST MUTATIONS\n createEntityList: {\n invalidatesTags: [{ type: 'entityList', id: 'LIST' }],\n },\n updateEntityList: {\n async onQueryStarted(\n { listId, entityListPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n const tags = [{ type: 'entityList', id: listId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListsInfinite')\n\n let patchResults: any[] = []\n for (const entry of infiniteEntries) {\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListsInfinite', entry.originalArgs, (draft) => {\n for (const page of draft.pages) {\n const listIndex = page.lists.findIndex((list) => list.id === listId)\n if (listIndex !== -1) {\n const list = page.lists[listIndex]\n // Update the list with the new data\n Object.assign(list, entityListPatchModel)\n break\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n invalidatesTags: (_s, _e, { listId }) => {\n const tags = [{ type: 'entityList', id: listId }]\n return tags\n },\n },\n deleteEntityList: {\n invalidatesTags: [{ type: 'entityList', id: 'LIST' }],\n },\n // LIST ITEM MUTATIONS\n updateEntityListItems: {\n async onQueryStarted(\n { listId, entityListMultiPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n // We are primarily interested in updating the items within a specific list\n const tags = [{ type: 'entityListItem', id: listId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListItemsInfinite')\n\n let patchResults: any[] = []\n\n if (!entityListMultiPatchModel.items || entityListMultiPatchModel.items.length === 0) {\n // No items to update, proceed without optimistic update\n await queryFulfilled\n return\n }\n\n for (const entry of infiniteEntries) {\n // only update entries that match the listId\n if (entry.originalArgs.listId !== listId) continue\n\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListItemsInfinite', entry.originalArgs, (draft) => {\n let overallPositionChanged = false\n // First pass: update items in place and check if any position changed\n for (const page of draft.pages) {\n entityListMultiPatchModel.items?.forEach((patchItem) => {\n const itemIndex = page.items.findIndex(\n (item) => item.id === patchItem.id || item.entityId === patchItem.entityId,\n )\n\n if (itemIndex !== -1) {\n const existingItem = page.items[itemIndex]\n // Merge existing item with patchItem, ensuring attrib is also merged\n const updatedItem = {\n ...existingItem,\n ...patchItem, // Apply all top-level fields from patchItem\n attrib: {\n ...existingItem.attrib,\n ...(patchItem.attrib || {}), // Merge attrib safely\n },\n }\n Object.assign(page.items[itemIndex], updatedItem)\n\n if (patchItem.position !== undefined) {\n overallPositionChanged = true\n }\n }\n })\n }\n\n if (overallPositionChanged) {\n // Collect all items from all pages for this specific cache entry\n let allItems = draft.pages.flatMap((page) => page.items)\n\n // Sort all items based on position\n allItems.sort((a, b) => {\n const posA = typeof a.position === 'number' ? a.position : Infinity\n const posB = typeof b.position === 'number' ? b.position : Infinity\n return posA - posB\n })\n\n // Re-distribute sorted items back into pages, maintaining original page sizes\n let currentItemIndex = 0\n for (const page of draft.pages) {\n const pageItemCount = page.items.length // Get original item count for this page\n // Replace page items with the corresponding slice from the globally sorted list\n page.items = allItems.slice(currentItemIndex, currentItemIndex + pageItemCount)\n currentItemIndex += pageItemCount\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n invalidatesTags: (_s, _e, { listId, entityListMultiPatchModel: { items } }) => {\n const tags = [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ...(items || []).flatMap((i) =>\n (i.id ? [{ type: 'entityListItem', id: i.id }] : []).concat(\n i.entityId ? [{ type: 'entityListItem', id: i.entityId }] : [],\n ),\n ),\n ]\n return tags\n },\n },\n updateEntityListItem: {\n async onQueryStarted(\n { listItemId, entityListItemPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n const tags = [{ type: 'entityListItem', id: listItemId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListItemsInfinite')\n\n let patchResults: any[] = []\n for (const entry of infiniteEntries) {\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListItemsInfinite', entry.originalArgs, (draft) => {\n for (const page of draft.pages) {\n const listIndex = page.items.findIndex((list) => list.id === listItemId)\n if (listIndex !== -1) {\n const list = page.items[listIndex]\n const newListItem = {\n ...list,\n attrib: {\n ...list.attrib,\n ...entityListItemPatchModel.attrib,\n },\n }\n // Update the list with the new data\n Object.assign(list, newListItem)\n break\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n },\n createEntityListItem: {\n invalidatesTags: (_s, _e, { listId }) => [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ],\n },\n deleteEntityListItem: {\n invalidatesTags: (_s, _e, { listId }) => [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ],\n },\n },\n})\n\n// inject review addon endpoint Create Session From List\nconst updateListsInjectedApi = updateListsEnhancedApi.injectEndpoints({\n endpoints: (build) => ({\n createSessionFromList: build.mutation<\n CreateSessionFromListApiResponse,\n CreateSessionFromListApiArg\n >({\n query: (queryArg) => ({\n url: `/api/addons/review/${queryArg.addonVersion}/${queryArg.projectName}/sessions/fromList`,\n method: 'POST',\n body: queryArg.sessionFromListRequest,\n }),\n transformErrorResponse: (error: any) => error.data.detail,\n invalidatesTags: () => [{ type: 'entityList', id: 'LIST' }],\n }),\n }),\n})\n\nexport const {\n // LIST MUTATIONS\n useCreateEntityListMutation,\n useUpdateEntityListMutation,\n useDeleteEntityListMutation,\n // LIST ITEM MUTATIONS\n useUpdateEntityListItemsMutation,\n useUpdateEntityListItemMutation,\n useCreateEntityListItemMutation,\n useDeleteEntityListItemMutation,\n // REVIEW SESSION MUTATIONS\n useCreateSessionFromListMutation,\n} = updateListsInjectedApi\nexport { updateListsInjectedApi as entityListsQueriesRest, gqlApi as entityListsQueriesGql }\n"],"names":["entityListsApi","gqlApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,yBAAyBA,gBAAe,iBAAiB;AAAA,EAC7D,WAAW;AAAA;AAAA,IAET,kBAAkB;AAAA,MAChB,iBAAiB,CAAC,EAAE,MAAM,cAAc,IAAI,OAAQ,CAAA;AAAA,IACtD;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM,eACJ,EAAE,QAAQ,qBAAA,GACV,EAAE,UAAU,gBAAgB,YAC5B;AACA,cAAM,QAAQ,SAAS;AAEvB,cAAM,OAAO,CAAC,EAAE,MAAM,cAAc,IAAI,QAAQ;AAChD,cAAM,kBAAkBC,SAAA,QAAO,KAC5B,oBAAoB,OAAO,IAAI,EAC/B,OAAO,CAAC,MAAM,EAAE,iBAAiB,kBAAkB;AAEtD,YAAI,eAAsB,CAAC;AAC3B,mBAAW,SAAS,iBAAiB;AACnC,gBAAM,cAAc;AAAA,YAClBA,iBAAO,KAAK,gBAAgB,oBAAoB,MAAM,cAAc,CAAC,UAAU;AAClE,yBAAA,QAAQ,MAAM,OAAO;AACxB,sBAAA,YAAY,KAAK,MAAM,UAAU,CAAC,SAAS,KAAK,OAAO,MAAM;AACnE,oBAAI,cAAc,IAAI;AACd,wBAAA,OAAO,KAAK,MAAM,SAAS;AAE1B,yBAAA,OAAO,MAAM,oBAAoB;AACxC;AAAA,gBAAA;AAAA,cACF;AAAA,YAEH,CAAA;AAAA,UACH;AAEA,uBAAa,KAAK,WAAW;AAAA,QAAA;AAE3B,YAAA;AACI,gBAAA;AAAA,QAAA,QACA;AACO,uBAAA,QAAQ,CAAC,gBAAgB;AAEpC,wBAAY,KAAK;AAAA,UAAA,CAClB;AAAA,QAAA;AAAA,MAEL;AAAA,MACA,iBAAiB,CAAC,IAAI,IAAI,EAAE,aAAa;AACvC,cAAM,OAAO,CAAC,EAAE,MAAM,cAAc,IAAI,QAAQ;AACzC,eAAA;AAAA,MAAA;AAAA,IAEX;AAAA,IACA,kBAAkB;AAAA,MAChB,iBAAiB,CAAC,EAAE,MAAM,cAAc,IAAI,OAAQ,CAAA;AAAA,IACtD;AAAA;AAAA,IAEA,uBAAuB;AAAA,MACrB,MAAM,eACJ,EAAE,QAAQ,0BAAA,GACV,EAAE,UAAU,gBAAgB,YAC5B;AACA,cAAM,QAAQ,SAAS;AAGvB,cAAM,OAAO,CAAC,EAAE,MAAM,kBAAkB,IAAI,QAAQ;AACpD,cAAM,kBAAkBA,SAAA,QAAO,KAC5B,oBAAoB,OAAO,IAAI,EAC/B,OAAO,CAAC,MAAM,EAAE,iBAAiB,sBAAsB;AAE1D,YAAI,eAAsB,CAAC;AAE3B,YAAI,CAAC,0BAA0B,SAAS,0BAA0B,MAAM,WAAW,GAAG;AAE9E,gBAAA;AACN;AAAA,QAAA;AAGF,mBAAW,SAAS,iBAAiB;AAE/B,cAAA,MAAM,aAAa,WAAW,OAAQ;AAE1C,gBAAM,cAAc;AAAA,YAClBA,iBAAO,KAAK,gBAAgB,wBAAwB,MAAM,cAAc,CAAC,UAAU;;AACjF,kBAAI,yBAAyB;AAElB,yBAAA,QAAQ,MAAM,OAAO;AACJ,gDAAA,UAAA,mBAAO,QAAQ,CAAC,cAAc;AAChD,wBAAA,YAAY,KAAK,MAAM;AAAA,oBAC3B,CAAC,SAAS,KAAK,OAAO,UAAU,MAAM,KAAK,aAAa,UAAU;AAAA,kBACpE;AAEA,sBAAI,cAAc,IAAI;AACd,0BAAA,eAAe,KAAK,MAAM,SAAS;AAEzC,0BAAM,cAAc;AAAA,sBAClB,GAAG;AAAA,sBACH,GAAG;AAAA;AAAA,sBACH,QAAQ;AAAA,wBACN,GAAG,aAAa;AAAA,wBAChB,GAAI,UAAU,UAAU,CAAA;AAAA;AAAA,sBAAC;AAAA,oBAE7B;AACA,2BAAO,OAAO,KAAK,MAAM,SAAS,GAAG,WAAW;AAE5C,wBAAA,UAAU,aAAa,QAAW;AACX,+CAAA;AAAA,oBAAA;AAAA,kBAC3B;AAAA,gBACF;AAAA,cACD;AAGH,kBAAI,wBAAwB;AAE1B,oBAAI,WAAW,MAAM,MAAM,QAAQ,CAAC,SAAS,KAAK,KAAK;AAG9C,yBAAA,KAAK,CAAC,GAAG,MAAM;AACtB,wBAAM,OAAO,OAAO,EAAE,aAAa,WAAW,EAAE,WAAW;AAC3D,wBAAM,OAAO,OAAO,EAAE,aAAa,WAAW,EAAE,WAAW;AAC3D,yBAAO,OAAO;AAAA,gBAAA,CACf;AAGD,oBAAI,mBAAmB;AACZ,2BAAA,QAAQ,MAAM,OAAO;AACxB,wBAAA,gBAAgB,KAAK,MAAM;AAEjC,uBAAK,QAAQ,SAAS,MAAM,kBAAkB,mBAAmB,aAAa;AAC1D,sCAAA;AAAA,gBAAA;AAAA,cACtB;AAAA,YAEH,CAAA;AAAA,UACH;AAEA,uBAAa,KAAK,WAAW;AAAA,QAAA;AAG3B,YAAA;AACI,gBAAA;AAAA,QAAA,QACA;AACO,uBAAA,QAAQ,CAAC,gBAAgB;AAEpC,wBAAY,KAAK;AAAA,UAAA,CAClB;AAAA,QAAA;AAAA,MAEL;AAAA,MACA,iBAAiB,CAAC,IAAI,IAAI,EAAE,QAAQ,2BAA2B,EAAE,MAAM,QAAQ;AAC7E,cAAM,OAAO;AAAA,UACX,EAAE,MAAM,cAAc,IAAI,OAAO;AAAA,UACjC,EAAE,MAAM,kBAAkB,IAAI,OAAO;AAAA,UACrC,IAAI,SAAS,CAAA,GAAI;AAAA,YAAQ,CAAC,OACvB,EAAE,KAAK,CAAC,EAAE,MAAM,kBAAkB,IAAI,EAAE,IAAI,IAAI,CAAI,GAAA;AAAA,cACnD,EAAE,WAAW,CAAC,EAAE,MAAM,kBAAkB,IAAI,EAAE,SAAA,CAAU,IAAI,CAAA;AAAA,YAAC;AAAA,UAC/D;AAAA,QAEJ;AACO,eAAA;AAAA,MAAA;AAAA,IAEX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM,eACJ,EAAE,YAAY,yBAAA,GACd,EAAE,UAAU,gBAAgB,YAC5B;AACA,cAAM,QAAQ,SAAS;AAEvB,cAAM,OAAO,CAAC,EAAE,MAAM,kBAAkB,IAAI,YAAY;AACxD,cAAM,kBAAkBA,SAAA,QAAO,KAC5B,oBAAoB,OAAO,IAAI,EAC/B,OAAO,CAAC,MAAM,EAAE,iBAAiB,sBAAsB;AAE1D,YAAI,eAAsB,CAAC;AAC3B,mBAAW,SAAS,iBAAiB;AACnC,gBAAM,cAAc;AAAA,YAClBA,iBAAO,KAAK,gBAAgB,wBAAwB,MAAM,cAAc,CAAC,UAAU;AACtE,yBAAA,QAAQ,MAAM,OAAO;AACxB,sBAAA,YAAY,KAAK,MAAM,UAAU,CAAC,SAAS,KAAK,OAAO,UAAU;AACvE,oBAAI,cAAc,IAAI;AACd,wBAAA,OAAO,KAAK,MAAM,SAAS;AACjC,wBAAM,cAAc;AAAA,oBAClB,GAAG;AAAA,oBACH,QAAQ;AAAA,sBACN,GAAG,KAAK;AAAA,sBACR,GAAG,yBAAyB;AAAA,oBAAA;AAAA,kBAEhC;AAEO,yBAAA,OAAO,MAAM,WAAW;AAC/B;AAAA,gBAAA;AAAA,cACF;AAAA,YAEH,CAAA;AAAA,UACH;AAEA,uBAAa,KAAK,WAAW;AAAA,QAAA;AAE3B,YAAA;AACI,gBAAA;AAAA,QAAA,QACA;AACO,uBAAA,QAAQ,CAAC,gBAAgB;AAEpC,wBAAY,KAAK;AAAA,UAAA,CAClB;AAAA,QAAA;AAAA,MACH;AAAA,IAEJ;AAAA,IACA,sBAAsB;AAAA,MACpB,iBAAiB,CAAC,IAAI,IAAI,EAAE,aAAa;AAAA,QACvC,EAAE,MAAM,cAAc,IAAI,OAAO;AAAA,QACjC,EAAE,MAAM,kBAAkB,IAAI,OAAO;AAAA,MAAA;AAAA,IAEzC;AAAA,IACA,sBAAsB;AAAA,MACpB,iBAAiB,CAAC,IAAI,IAAI,EAAE,aAAa;AAAA,QACvC,EAAE,MAAM,cAAc,IAAI,OAAO;AAAA,QACjC,EAAE,MAAM,kBAAkB,IAAI,OAAO;AAAA,MAAA;AAAA,IACvC;AAAA,EACF;AAEJ,CAAC;AAGK,MAAA,yBAAyB,uBAAuB,gBAAgB;AAAA,EACpE,WAAW,CAAC,WAAW;AAAA,IACrB,uBAAuB,MAAM,SAG3B;AAAA,MACA,OAAO,CAAC,cAAc;AAAA,QACpB,KAAK,sBAAsB,SAAS,YAAY,IAAI,SAAS,WAAW;AAAA,QACxE,QAAQ;AAAA,QACR,MAAM,SAAS;AAAA,MAAA;AAAA,MAEjB,wBAAwB,CAAC,UAAe,MAAM,KAAK;AAAA,MACnD,iBAAiB,MAAM,CAAC,EAAE,MAAM,cAAc,IAAI,OAAQ,CAAA;AAAA,IAC3D,CAAA;AAAA,EACH;AACF,CAAC;AAEY,MAAA;AAAA;AAAA,EAEX;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AACF,IAAI;;;;;;;;;;;"}
|
|
@@ -209,6 +209,19 @@ const updateListsEnhancedApi = injectedRtkApi.enhanceEndpoints({
|
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
});
|
|
212
|
+
const updateListsInjectedApi = updateListsEnhancedApi.injectEndpoints({
|
|
213
|
+
endpoints: (build) => ({
|
|
214
|
+
createSessionFromList: build.mutation({
|
|
215
|
+
query: (queryArg) => ({
|
|
216
|
+
url: `/api/addons/review/${queryArg.addonVersion}/${queryArg.projectName}/sessions/fromList`,
|
|
217
|
+
method: "POST",
|
|
218
|
+
body: queryArg.sessionFromListRequest
|
|
219
|
+
}),
|
|
220
|
+
transformErrorResponse: (error) => error.data.detail,
|
|
221
|
+
invalidatesTags: () => [{ type: "entityList", id: "LIST" }]
|
|
222
|
+
})
|
|
223
|
+
})
|
|
224
|
+
});
|
|
212
225
|
const {
|
|
213
226
|
// LIST MUTATIONS
|
|
214
227
|
useCreateEntityListMutation,
|
|
@@ -218,13 +231,16 @@ const {
|
|
|
218
231
|
useUpdateEntityListItemsMutation,
|
|
219
232
|
useUpdateEntityListItemMutation,
|
|
220
233
|
useCreateEntityListItemMutation,
|
|
221
|
-
useDeleteEntityListItemMutation
|
|
222
|
-
|
|
234
|
+
useDeleteEntityListItemMutation,
|
|
235
|
+
// REVIEW SESSION MUTATIONS
|
|
236
|
+
useCreateSessionFromListMutation
|
|
237
|
+
} = updateListsInjectedApi;
|
|
223
238
|
export {
|
|
224
239
|
getListsGqlApiInjected as entityListsQueriesGql,
|
|
225
|
-
|
|
240
|
+
updateListsInjectedApi as entityListsQueriesRest,
|
|
226
241
|
useCreateEntityListItemMutation,
|
|
227
242
|
useCreateEntityListMutation,
|
|
243
|
+
useCreateSessionFromListMutation,
|
|
228
244
|
useDeleteEntityListItemMutation,
|
|
229
245
|
useDeleteEntityListMutation,
|
|
230
246
|
useUpdateEntityListItemMutation,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateLists.es.js","sources":["../../../../../../src/api/queries/entityLists/updateLists.ts"],"sourcesContent":["import { entityListsApi } from '@shared/api/generated'\nimport gqlApi from './getLists'\nimport { current } from '@reduxjs/toolkit'\n\nconst updateListsEnhancedApi = entityListsApi.enhanceEndpoints({\n endpoints: {\n // LIST MUTATIONS\n createEntityList: {\n invalidatesTags: [{ type: 'entityList', id: 'LIST' }],\n },\n updateEntityList: {\n async onQueryStarted(\n { listId, entityListPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n const tags = [{ type: 'entityList', id: listId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListsInfinite')\n\n let patchResults: any[] = []\n for (const entry of infiniteEntries) {\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListsInfinite', entry.originalArgs, (draft) => {\n for (const page of draft.pages) {\n const listIndex = page.lists.findIndex((list) => list.id === listId)\n if (listIndex !== -1) {\n const list = page.lists[listIndex]\n // Update the list with the new data\n Object.assign(list, entityListPatchModel)\n break\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n invalidatesTags: (_s, _e, { listId }) => {\n const tags = [{ type: 'entityList', id: listId }]\n return tags\n },\n },\n deleteEntityList: {\n invalidatesTags: [{ type: 'entityList', id: 'LIST' }],\n },\n // LIST ITEM MUTATIONS\n updateEntityListItems: {\n async onQueryStarted(\n { listId, entityListMultiPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n // We are primarily interested in updating the items within a specific list\n const tags = [{ type: 'entityListItem', id: listId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListItemsInfinite')\n\n let patchResults: any[] = []\n\n if (!entityListMultiPatchModel.items || entityListMultiPatchModel.items.length === 0) {\n // No items to update, proceed without optimistic update\n await queryFulfilled\n return\n }\n\n for (const entry of infiniteEntries) {\n // only update entries that match the listId\n if (entry.originalArgs.listId !== listId) continue\n\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListItemsInfinite', entry.originalArgs, (draft) => {\n let overallPositionChanged = false\n // First pass: update items in place and check if any position changed\n for (const page of draft.pages) {\n entityListMultiPatchModel.items?.forEach((patchItem) => {\n const itemIndex = page.items.findIndex(\n (item) => item.id === patchItem.id || item.entityId === patchItem.entityId,\n )\n\n if (itemIndex !== -1) {\n const existingItem = page.items[itemIndex]\n // Merge existing item with patchItem, ensuring attrib is also merged\n const updatedItem = {\n ...existingItem,\n ...patchItem, // Apply all top-level fields from patchItem\n attrib: {\n ...existingItem.attrib,\n ...(patchItem.attrib || {}), // Merge attrib safely\n },\n }\n Object.assign(page.items[itemIndex], updatedItem)\n\n if (patchItem.position !== undefined) {\n overallPositionChanged = true\n }\n }\n })\n }\n\n if (overallPositionChanged) {\n // Collect all items from all pages for this specific cache entry\n let allItems = draft.pages.flatMap((page) => page.items)\n\n // Sort all items based on position\n allItems.sort((a, b) => {\n const posA = typeof a.position === 'number' ? a.position : Infinity\n const posB = typeof b.position === 'number' ? b.position : Infinity\n return posA - posB\n })\n\n // Re-distribute sorted items back into pages, maintaining original page sizes\n let currentItemIndex = 0\n for (const page of draft.pages) {\n const pageItemCount = page.items.length // Get original item count for this page\n // Replace page items with the corresponding slice from the globally sorted list\n page.items = allItems.slice(currentItemIndex, currentItemIndex + pageItemCount)\n currentItemIndex += pageItemCount\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n invalidatesTags: (_s, _e, { listId, entityListMultiPatchModel: { items } }) => {\n const tags = [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ...(items || []).flatMap((i) =>\n (i.id ? [{ type: 'entityListItem', id: i.id }] : []).concat(\n i.entityId ? [{ type: 'entityListItem', id: i.entityId }] : [],\n ),\n ),\n ]\n return tags\n },\n },\n updateEntityListItem: {\n async onQueryStarted(\n { listItemId, entityListItemPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n const tags = [{ type: 'entityListItem', id: listItemId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListItemsInfinite')\n\n let patchResults: any[] = []\n for (const entry of infiniteEntries) {\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListItemsInfinite', entry.originalArgs, (draft) => {\n for (const page of draft.pages) {\n const listIndex = page.items.findIndex((list) => list.id === listItemId)\n if (listIndex !== -1) {\n const list = page.items[listIndex]\n const newListItem = {\n ...list,\n attrib: {\n ...list.attrib,\n ...entityListItemPatchModel.attrib,\n },\n }\n // Update the list with the new data\n Object.assign(list, newListItem)\n break\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n },\n createEntityListItem: {\n invalidatesTags: (_s, _e, { listId }) => [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ],\n },\n deleteEntityListItem: {\n invalidatesTags: (_s, _e, { listId }) => [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ],\n },\n },\n})\n\nexport const {\n // LIST MUTATIONS\n useCreateEntityListMutation,\n useUpdateEntityListMutation,\n useDeleteEntityListMutation,\n // LIST ITEM MUTATIONS\n useUpdateEntityListItemsMutation,\n useUpdateEntityListItemMutation,\n useCreateEntityListItemMutation,\n useDeleteEntityListItemMutation,\n} = updateListsEnhancedApi\nexport { updateListsEnhancedApi as entityListsQueriesRest, gqlApi as entityListsQueriesGql }\n"],"names":["entityListsApi","gqlApi"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"updateLists.es.js","sources":["../../../../../../src/api/queries/entityLists/updateLists.ts"],"sourcesContent":["import { entityListsApi } from '@shared/api/generated'\nimport gqlApi from './getLists'\nimport { CreateSessionFromListApiArg, CreateSessionFromListApiResponse } from './types'\n\nconst updateListsEnhancedApi = entityListsApi.enhanceEndpoints({\n endpoints: {\n // LIST MUTATIONS\n createEntityList: {\n invalidatesTags: [{ type: 'entityList', id: 'LIST' }],\n },\n updateEntityList: {\n async onQueryStarted(\n { listId, entityListPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n const tags = [{ type: 'entityList', id: listId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListsInfinite')\n\n let patchResults: any[] = []\n for (const entry of infiniteEntries) {\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListsInfinite', entry.originalArgs, (draft) => {\n for (const page of draft.pages) {\n const listIndex = page.lists.findIndex((list) => list.id === listId)\n if (listIndex !== -1) {\n const list = page.lists[listIndex]\n // Update the list with the new data\n Object.assign(list, entityListPatchModel)\n break\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n invalidatesTags: (_s, _e, { listId }) => {\n const tags = [{ type: 'entityList', id: listId }]\n return tags\n },\n },\n deleteEntityList: {\n invalidatesTags: [{ type: 'entityList', id: 'LIST' }],\n },\n // LIST ITEM MUTATIONS\n updateEntityListItems: {\n async onQueryStarted(\n { listId, entityListMultiPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n // We are primarily interested in updating the items within a specific list\n const tags = [{ type: 'entityListItem', id: listId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListItemsInfinite')\n\n let patchResults: any[] = []\n\n if (!entityListMultiPatchModel.items || entityListMultiPatchModel.items.length === 0) {\n // No items to update, proceed without optimistic update\n await queryFulfilled\n return\n }\n\n for (const entry of infiniteEntries) {\n // only update entries that match the listId\n if (entry.originalArgs.listId !== listId) continue\n\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListItemsInfinite', entry.originalArgs, (draft) => {\n let overallPositionChanged = false\n // First pass: update items in place and check if any position changed\n for (const page of draft.pages) {\n entityListMultiPatchModel.items?.forEach((patchItem) => {\n const itemIndex = page.items.findIndex(\n (item) => item.id === patchItem.id || item.entityId === patchItem.entityId,\n )\n\n if (itemIndex !== -1) {\n const existingItem = page.items[itemIndex]\n // Merge existing item with patchItem, ensuring attrib is also merged\n const updatedItem = {\n ...existingItem,\n ...patchItem, // Apply all top-level fields from patchItem\n attrib: {\n ...existingItem.attrib,\n ...(patchItem.attrib || {}), // Merge attrib safely\n },\n }\n Object.assign(page.items[itemIndex], updatedItem)\n\n if (patchItem.position !== undefined) {\n overallPositionChanged = true\n }\n }\n })\n }\n\n if (overallPositionChanged) {\n // Collect all items from all pages for this specific cache entry\n let allItems = draft.pages.flatMap((page) => page.items)\n\n // Sort all items based on position\n allItems.sort((a, b) => {\n const posA = typeof a.position === 'number' ? a.position : Infinity\n const posB = typeof b.position === 'number' ? b.position : Infinity\n return posA - posB\n })\n\n // Re-distribute sorted items back into pages, maintaining original page sizes\n let currentItemIndex = 0\n for (const page of draft.pages) {\n const pageItemCount = page.items.length // Get original item count for this page\n // Replace page items with the corresponding slice from the globally sorted list\n page.items = allItems.slice(currentItemIndex, currentItemIndex + pageItemCount)\n currentItemIndex += pageItemCount\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n invalidatesTags: (_s, _e, { listId, entityListMultiPatchModel: { items } }) => {\n const tags = [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ...(items || []).flatMap((i) =>\n (i.id ? [{ type: 'entityListItem', id: i.id }] : []).concat(\n i.entityId ? [{ type: 'entityListItem', id: i.entityId }] : [],\n ),\n ),\n ]\n return tags\n },\n },\n updateEntityListItem: {\n async onQueryStarted(\n { listItemId, entityListItemPatchModel },\n { dispatch, queryFulfilled, getState },\n ) {\n const state = getState()\n // Find all caches that are invalidated by this mutation\n const tags = [{ type: 'entityListItem', id: listItemId }]\n const infiniteEntries = gqlApi.util\n .selectInvalidatedBy(state, tags)\n .filter((e) => e.endpointName === 'getListItemsInfinite')\n\n let patchResults: any[] = []\n for (const entry of infiniteEntries) {\n const patchResult = dispatch(\n gqlApi.util.updateQueryData('getListItemsInfinite', entry.originalArgs, (draft) => {\n for (const page of draft.pages) {\n const listIndex = page.items.findIndex((list) => list.id === listItemId)\n if (listIndex !== -1) {\n const list = page.items[listIndex]\n const newListItem = {\n ...list,\n attrib: {\n ...list.attrib,\n ...entityListItemPatchModel.attrib,\n },\n }\n // Update the list with the new data\n Object.assign(list, newListItem)\n break\n }\n }\n }),\n )\n // Store the patch result to undo it later if needed\n patchResults.push(patchResult)\n }\n try {\n await queryFulfilled\n } catch {\n patchResults.forEach((patchResult) => {\n // Undo the optimistic update if the mutation fails\n patchResult.undo()\n })\n }\n },\n },\n createEntityListItem: {\n invalidatesTags: (_s, _e, { listId }) => [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ],\n },\n deleteEntityListItem: {\n invalidatesTags: (_s, _e, { listId }) => [\n { type: 'entityList', id: listId },\n { type: 'entityListItem', id: listId },\n ],\n },\n },\n})\n\n// inject review addon endpoint Create Session From List\nconst updateListsInjectedApi = updateListsEnhancedApi.injectEndpoints({\n endpoints: (build) => ({\n createSessionFromList: build.mutation<\n CreateSessionFromListApiResponse,\n CreateSessionFromListApiArg\n >({\n query: (queryArg) => ({\n url: `/api/addons/review/${queryArg.addonVersion}/${queryArg.projectName}/sessions/fromList`,\n method: 'POST',\n body: queryArg.sessionFromListRequest,\n }),\n transformErrorResponse: (error: any) => error.data.detail,\n invalidatesTags: () => [{ type: 'entityList', id: 'LIST' }],\n }),\n }),\n})\n\nexport const {\n // LIST MUTATIONS\n useCreateEntityListMutation,\n useUpdateEntityListMutation,\n useDeleteEntityListMutation,\n // LIST ITEM MUTATIONS\n useUpdateEntityListItemsMutation,\n useUpdateEntityListItemMutation,\n useCreateEntityListItemMutation,\n useDeleteEntityListItemMutation,\n // REVIEW SESSION MUTATIONS\n useCreateSessionFromListMutation,\n} = updateListsInjectedApi\nexport { updateListsInjectedApi as entityListsQueriesRest, gqlApi as entityListsQueriesGql }\n"],"names":["entityListsApi","gqlApi"],"mappings":"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"}
|
|
@@ -472,6 +472,19 @@ const operationsApiEnhancedInjected = operationsEnhanced.injectEndpoints({
|
|
|
472
472
|
invalidateEntryPanel();
|
|
473
473
|
}
|
|
474
474
|
}
|
|
475
|
+
},
|
|
476
|
+
invalidatesTags: (_r, _e, { operationsRequestModel, projectName }) => {
|
|
477
|
+
var _a;
|
|
478
|
+
const userDashboardTags = [{ type: "kanban", id: "project-" + projectName }], taskProgressTags = [];
|
|
479
|
+
(_a = operationsRequestModel.operations) == null ? void 0 : _a.forEach((op) => {
|
|
480
|
+
const { entityId } = op;
|
|
481
|
+
if (entityId) {
|
|
482
|
+
taskProgressTags.push({ type: "progress", id: entityId });
|
|
483
|
+
} else {
|
|
484
|
+
taskProgressTags.push({ type: "progress", id: "LIST" });
|
|
485
|
+
}
|
|
486
|
+
});
|
|
487
|
+
return [...userDashboardTags, ...taskProgressTags];
|
|
475
488
|
}
|
|
476
489
|
})
|
|
477
490
|
})
|