@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.
Files changed (312) hide show
  1. package/dist/DetailsPanel.cjs.js +6 -6
  2. package/dist/DetailsPanel.es.js +7 -7
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +6 -0
  5. package/dist/ProjectTreeTable.cjs.js.map +1 -1
  6. package/dist/ProjectTreeTable.es.js +6 -0
  7. package/dist/ProjectTreeTable.es.js.map +1 -1
  8. package/dist/api.cjs.js +6 -0
  9. package/dist/api.cjs.js.map +1 -1
  10. package/dist/api.es.js +10 -4
  11. package/dist/index.cjs.js +6 -5
  12. package/dist/index.cjs.js.map +1 -1
  13. package/dist/index.es.js +6 -5
  14. package/dist/index.es.js.map +1 -1
  15. package/dist/shared/src/api/generated/folders.cjs.js.map +1 -1
  16. package/dist/shared/src/api/generated/folders.es.js.map +1 -1
  17. package/dist/shared/src/api/generated/graphql.cjs.js +38 -0
  18. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  19. package/dist/shared/src/api/generated/graphql.es.js +38 -0
  20. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  21. package/dist/shared/src/api/queries/actions/getActions.cjs.js +9 -1
  22. package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
  23. package/dist/shared/src/api/queries/actions/getActions.es.js +9 -1
  24. package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
  25. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +2 -1
  26. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  27. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +2 -1
  28. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  29. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +12 -8
  30. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  31. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +12 -8
  32. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  33. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +67 -0
  34. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  35. package/dist/shared/src/api/queries/entityLists/getLists.es.js +68 -1
  36. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  37. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +19 -3
  38. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/entityLists/updateLists.es.js +19 -3
  40. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  41. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +13 -0
  42. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  43. package/dist/shared/src/api/queries/overview/updateOverview.es.js +13 -0
  44. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  45. package/dist/shared/src/api/queries/users/getUsers.cjs.js +2 -0
  46. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  47. package/dist/shared/src/api/queries/users/getUsers.es.js +2 -0
  48. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  49. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js +3 -1
  50. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
  51. package/dist/shared/src/api/queries/versions/updateVersions.es.js +3 -1
  52. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
  53. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +5 -5
  54. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
  55. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +5 -5
  56. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
  57. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +1 -1
  58. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  59. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +1 -1
  60. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  61. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +2 -2
  62. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  63. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +2 -2
  64. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  65. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +15 -14
  66. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  67. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +15 -14
  68. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  69. package/dist/shared/src/components/PlayableIcon/PlayableIcon.cjs.js +43 -0
  70. package/dist/shared/src/components/PlayableIcon/PlayableIcon.cjs.js.map +1 -0
  71. package/dist/shared/src/components/PlayableIcon/PlayableIcon.es.js +43 -0
  72. package/dist/shared/src/components/PlayableIcon/PlayableIcon.es.js.map +1 -0
  73. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js +1 -1
  74. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js.map +1 -1
  75. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js +1 -1
  76. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js.map +1 -1
  77. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +15 -15
  78. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +15 -15
  79. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +6 -5
  80. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  81. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +6 -5
  82. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  83. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +6 -5
  84. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  85. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +6 -5
  86. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  87. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +6 -5
  88. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  89. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +6 -5
  90. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  91. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js +2 -2
  92. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js.map +1 -1
  93. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js +2 -2
  94. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js.map +1 -1
  95. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +6 -5
  96. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  97. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +6 -5
  98. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  99. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +6 -5
  100. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  101. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +6 -5
  102. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  103. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +6 -5
  104. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  105. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -5
  106. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  107. package/dist/shared/src/containers/Actions/Actions.cjs.js +8 -2
  108. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  109. package/dist/shared/src/containers/Actions/Actions.es.js +8 -2
  110. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  111. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +10 -3
  112. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  113. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +10 -3
  114. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  115. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js +14 -0
  116. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js.map +1 -1
  117. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js +14 -0
  118. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js.map +1 -1
  119. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +6 -5
  120. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  121. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +6 -5
  122. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  123. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +5 -5
  124. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +5 -5
  125. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +6 -5
  126. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  127. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +6 -5
  128. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  129. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +6 -5
  130. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  131. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +6 -5
  132. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  133. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +6 -4
  134. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  135. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +7 -5
  136. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  137. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js +1 -31
  138. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js.map +1 -1
  139. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js +1 -31
  140. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js.map +1 -1
  141. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js +2 -2
  142. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js.map +1 -1
  143. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.es.js +2 -2
  144. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.es.js.map +1 -1
  145. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js +1 -1
  146. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js.map +1 -1
  147. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js +1 -1
  148. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js.map +1 -1
  149. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +48 -4
  150. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  151. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +50 -6
  152. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  153. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +47 -11
  154. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  155. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +47 -11
  156. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  157. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +5 -4
  158. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  159. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +5 -4
  160. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  161. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js +5 -3
  162. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js.map +1 -1
  163. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js +5 -3
  164. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js.map +1 -1
  165. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.cjs.js +106 -2
  166. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.cjs.js.map +1 -1
  167. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.es.js +106 -2
  168. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.es.js.map +1 -1
  169. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +14 -2
  170. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  171. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +14 -2
  172. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  173. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  174. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  175. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +15 -3
  176. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
  177. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +15 -3
  178. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
  179. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +106 -0
  180. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  181. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +106 -0
  182. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  183. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +4 -2
  184. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  185. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +4 -2
  186. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  187. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +26 -4
  188. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  189. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +26 -4
  190. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  191. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +135 -0
  192. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -0
  193. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +135 -0
  194. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -0
  195. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +8 -6
  196. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  197. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +8 -6
  198. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  199. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js +1 -2
  200. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js.map +1 -1
  201. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js +1 -2
  202. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js.map +1 -1
  203. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +88 -0
  204. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  205. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +88 -0
  206. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  207. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.cjs.js +1 -1
  208. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.cjs.js.map +1 -1
  209. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.es.js +1 -1
  210. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.es.js.map +1 -1
  211. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +35 -4
  212. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  213. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +35 -4
  214. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  215. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +88 -0
  216. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  217. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +88 -0
  218. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  219. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  220. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  221. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +1 -1
  222. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  223. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +90 -0
  224. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  225. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +90 -0
  226. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  227. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.cjs.js +19 -0
  228. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.cjs.js.map +1 -0
  229. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.es.js +19 -0
  230. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.es.js.map +1 -0
  231. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.cjs.js +26 -0
  232. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.cjs.js.map +1 -0
  233. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.es.js +26 -0
  234. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.es.js.map +1 -0
  235. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +9 -8
  236. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  237. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +10 -9
  238. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  239. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +8 -2
  240. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +8 -2
  242. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  243. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +190 -0
  244. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -0
  245. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +190 -0
  246. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -0
  247. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +4 -147
  248. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  249. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +2 -145
  250. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  251. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +12 -2
  252. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  253. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -2
  254. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  255. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +6 -5
  256. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  257. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +6 -5
  258. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  259. package/dist/shared/src/context/DetailsPanelContext.cjs.js +5 -1
  260. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  261. package/dist/shared/src/context/DetailsPanelContext.es.js +5 -1
  262. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  263. package/dist/shared/src/util/confirmDelete.cjs.js +1 -0
  264. package/dist/shared/src/util/confirmDelete.cjs.js.map +1 -1
  265. package/dist/shared/src/util/confirmDelete.es.js +2 -0
  266. package/dist/shared/src/util/confirmDelete.es.js.map +1 -1
  267. package/dist/types/SimpleTable/SimpleTable.d.ts +1 -0
  268. package/dist/types/SimpleTable/SimpleTableRowTemplate.d.ts +1 -1
  269. package/dist/types/SimpleTable/context/SimpleTableContext.d.ts +5 -1
  270. package/dist/types/api/generated/folders.d.ts +1 -0
  271. package/dist/types/api/generated/graphql.d.ts +66 -5
  272. package/dist/types/api/queries/actions/getActions.d.ts +132 -1
  273. package/dist/types/api/queries/activities/getActivities.d.ts +6 -0
  274. package/dist/types/api/queries/activities/updateActivities.d.ts +12 -0
  275. package/dist/types/api/queries/entities/getEntity.d.ts +6 -0
  276. package/dist/types/api/queries/entities/getEntityPanel.d.ts +6 -0
  277. package/dist/types/api/queries/entities/transformDetailsPanelData.d.ts +1 -0
  278. package/dist/types/api/queries/entities/updateEntity.d.ts +6 -0
  279. package/dist/types/api/queries/entityLists/getLists.d.ts +1517 -2
  280. package/dist/types/api/queries/entityLists/types.d.ts +30 -1
  281. package/dist/types/api/queries/entityLists/updateLists.d.ts +166 -3
  282. package/dist/types/api/queries/overview/getOverview.d.ts +6 -0
  283. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +6 -0
  284. package/dist/types/api/queries/users/getUsers.d.ts +6 -0
  285. package/dist/types/components/PlayableIcon/PlayableIcon.d.ts +4 -0
  286. package/dist/types/containers/Actions/Actions.d.ts +7 -1
  287. package/dist/types/containers/Actions/ActionsDropdown/ActionsDropdown.d.ts +5 -3
  288. package/dist/types/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.d.ts +0 -1
  289. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +6 -2
  290. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +4 -1
  291. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +11 -2
  292. package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +1 -0
  293. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +1 -1
  294. package/dist/types/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.d.ts +9 -0
  295. package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +2 -2
  296. package/dist/types/containers/ProjectTreeTable/hooks/useKeyboardNavigation.d.ts +3 -3
  297. package/dist/types/containers/ProjectTreeTable/hooks/useUpdateTableData.d.ts +1 -1
  298. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +10 -1
  299. package/dist/types/containers/ProjectTreeTable/utils/getEntityViewerIds.d.ts +4 -0
  300. package/dist/types/containers/ProjectTreeTable/utils/getTypeDefaultValue.d.ts +2 -0
  301. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +2 -0
  302. package/dist/types/containers/ProjectTreeTable/widgets/CellWidget.d.ts +2 -1
  303. package/dist/types/containers/ProjectTreeTable/widgets/EnumCellValue.d.ts +20 -0
  304. package/dist/types/containers/ProjectTreeTable/widgets/EnumWidget.d.ts +1 -11
  305. package/dist/types/containers/ProjectTreeTable/widgets/ThumbnailWidget.d.ts +1 -0
  306. package/dist/types/context/DetailsPanelContext.d.ts +1 -0
  307. package/dist/types/util/confirmDelete.d.ts +2 -1
  308. package/dist/util.cjs.js +2 -0
  309. package/dist/util.cjs.js.map +1 -1
  310. package/dist/util.es.js +2 -0
  311. package/dist/util.es.js.map +1 -1
  312. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"updateOverview.cjs.js","sources":["../../../../../../src/api/queries/overview/updateOverview.ts"],"sourcesContent":["import {\n foldersQueries,\n detailsPanelQueries,\n operationsApi,\n entityListsQueriesGql,\n} from '@shared/api'\nimport type { OperationsResponseModel, OperationModel, OperationsApiArg } from '@shared/api'\nimport getOverviewApi from './getOverview'\nimport { DetailsPanelEntityData, DetailsPanelEntityType } from '@shared/api/queries/entities'\nimport { FetchBaseQueryError, RootState } from '@reduxjs/toolkit/query'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\n// these operations are dedicated to the overview page\n// this mean cache updates are custom for the overview page here\n\n// Helper function to update entities with operation data\nconst updateEntityWithOperation = (entity: any, operationData: any) => {\n const newData = {\n ...entity,\n ...operationData,\n attrib: {\n ...entity.attrib,\n ...(operationData?.attrib || {}),\n },\n }\n\n // patch data onto the entity\n Object.assign(entity, newData)\n}\n\nconst getOverviewTaskTags = (tasks: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n { type: 'overviewTask', id: 'LIST' },\n ...tasks.map((op) => ({ type: 'overviewTask', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...tasks\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'overviewTask',\n id: op.data?.projectName,\n })),\n ]\n}\n\nconst getOverviewFolderTags = (folders: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n ...folders.map((op) => ({ type: 'folder', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...folders\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'folder',\n id: op.data?.projectName,\n })),\n ]\n}\n\nexport type PatchOperation = Pick<OperationModel, 'entityId' | 'entityType' | 'data'> & {\n type?: OperationModel['type']\n}\n\nexport const patchOverviewTasks = (\n tasks: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = getOverviewTaskTags(tasks)\n const taskEntries = getOverviewApi.util.selectInvalidatedBy(state, tags)\n\n for (const entry of taskEntries) {\n if (entry.endpointName === 'getTasksListInfinite') {\n // patch getTasksListInfinite\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData('getTasksListInfinite', entry.originalArgs, (draft) => {\n // Apply each change to matching tasks in all pages\n for (const taskOperation of tasks) {\n if (taskOperation.type === 'create' && taskOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.pages[0].tasks.push(taskOperation.data)\n } else {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const task = page.tasks.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n }\n }\n }),\n )\n\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n } else {\n // this updates the main overview cache task\n // it also updates any GetTasksByParent caches\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData(\n entry.endpointName as 'getOverviewTasksByFolders' | 'GetTasksByParent' | 'GetTasksList',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in the cache\n for (const taskOperation of tasks) {\n if (\n taskOperation.type === 'create' &&\n taskOperation.data &&\n entry.originalArgs.parentIds.includes(taskOperation.data.folderId)\n ) {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n // @ts-expect-error\n tasksArrayDraft.push(taskOperation.data)\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n } else {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n const task = tasksArrayDraft.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n }\n }\n}\n\nconst invalidateOverviewTasks = (\n tasks: PatchOperation[],\n {\n dispatch,\n }: {\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n) => {\n if (!tasks.length) return\n dispatch(getOverviewApi.util.invalidateTags(getOverviewTaskTags(tasks)))\n}\n\nexport const patchOverviewFolders = (\n folders: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const folderEntries = foldersQueries.util\n .selectInvalidatedBy(state, getOverviewFolderTags(folders))\n .filter((entry) => entry.endpointName === 'getFolderList')\n for (const entry of folderEntries) {\n const folderPatch = dispatch(\n foldersQueries.util.updateQueryData(\n entry.endpointName as 'getFolderList',\n entry.originalArgs,\n (draft) => {\n // Create a Map for O(1) folder lookups\n const folderMap = new Map()\n draft.folders.forEach((folder) => {\n folderMap.set(folder.id, folder)\n })\n\n for (const folderOperation of folders) {\n if (folderOperation.type === 'create' && folderOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.folders.push(folderOperation.data)\n } else {\n const folder = folderMap.get(folderOperation.entityId)\n\n if (folder) {\n updateEntityWithOperation(folder, folderOperation.data)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(folderPatch)\n }\n}\n\ntype DeepPartial<T> = T extends object\n ? {\n [P in keyof T]?: DeepPartial<T[P]>\n }\n : T\n\nconst operationDataToDetailsData = (\n data: Record<string, any>,\n entityType: DetailsPanelEntityType,\n): DeepPartial<DetailsPanelEntityData> => {\n const sharedData: DeepPartial<DetailsPanelEntityData> = {\n name: data.name,\n attrib: data.attrib,\n status: data.status,\n tags: data.tags,\n label: data.label,\n updatedAt: data.updatedAt,\n createdAt: data.createdAt,\n hasReviewables: data.hasReviewables,\n thumbnailId: data.thumbnailId,\n }\n\n switch (entityType) {\n case 'task':\n return {\n ...sharedData,\n task: {\n assignees: data.assignees,\n label: data.label,\n name: data.name,\n taskType: data.taskType,\n },\n }\n case 'folder':\n return {\n ...sharedData,\n folder: {\n id: data.id,\n name: data.name,\n label: data.label,\n folderType: data.folderType,\n },\n }\n case 'version':\n return {\n ...sharedData,\n version: {\n id: data.id,\n name: data.name,\n },\n }\n case 'representation':\n return {\n ...sharedData,\n }\n }\n}\n\nexport const patchDetailsPanelEntity = (\n operations: PatchOperation[] = [],\n draft: DetailsPanelEntityData,\n) => {\n // find the entity we are updating from the draft\n const operation = operations.find((op) => op.entityId === draft.id)\n const operationData = operation?.data\n\n if (!operationData || operation.entityType === 'product' || operation.entityType === 'workfile')\n return console.warn('No operation data found or entity type not supported')\n\n // transform the data to match the details panel entity data\n const detailsPanelData = operationDataToDetailsData(operationData, operation.entityType)\n\n // helper to deep‐clean undefined values\n function cleanUndefined(obj: any): void {\n Object.entries(obj).forEach(([key, val]) => {\n if (val === undefined) {\n delete obj[key]\n } else if (val !== null && typeof val === 'object') {\n cleanUndefined(val)\n }\n })\n }\n\n // remove all undefineds at root and nested levels\n cleanUndefined(detailsPanelData as Record<string, any>)\n\n const newData: DeepPartial<DetailsPanelEntityData> = {\n ...draft,\n ...detailsPanelData,\n attrib: {\n ...(draft?.attrib || {}),\n ...detailsPanelData.attrib,\n },\n folder: {\n ...(draft?.folder || {}),\n ...detailsPanelData.folder,\n },\n task: {\n ...(draft?.task || {}),\n ...detailsPanelData.task,\n },\n version: {\n ...(draft?.version || {}),\n ...detailsPanelData.version,\n },\n }\n\n // patch data onto the entity\n Object.assign(draft, newData)\n}\n\nconst patchListItems = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = entities.map((op) => ({ type: 'entityListItem', id: op.entityId }))\n const entries = entityListsQueriesGql.util.selectInvalidatedBy(state, tags)\n\n for (const entry of entries) {\n if (entry.endpointName === 'getListItemsInfinite') {\n const listItemsPatch = dispatch(\n entityListsQueriesGql.util.updateQueryData(\n 'getListItemsInfinite',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in all pages\n for (const listOperation of entities) {\n if (listOperation.type === 'update' && listOperation.data) {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const item = page.items.find((item) => item.entityId === listOperation.entityId)\n if (item) {\n updateEntityWithOperation(item, listOperation.data)\n }\n }\n }\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches?.push(listItemsPatch)\n }\n }\n}\n\nconst splitByOpType = (operations: OperationModel[]) => {\n return operations.reduce(\n (acc: Record<OperationModel['type'], OperationModel[]>, operation) => {\n acc[operation.type].push(operation)\n return acc\n },\n {\n create: [],\n update: [],\n delete: [],\n },\n )\n}\n\nconst operationsEnhanced = operationsApi.enhanceEndpoints({\n endpoints: {\n operations: {},\n },\n})\n\n// enhance the argument type to include some extra fields\ninterface UpdateOverviewEntitiesArg extends OperationsApiArg {\n patchOperations?: PatchOperation[] // extra entities to patch\n}\n\nconst operationsApiEnhancedInjected = operationsEnhanced.injectEndpoints({\n endpoints: (build) => ({\n updateOverviewEntities: build.mutation<\n OperationsResponseModel | undefined,\n UpdateOverviewEntitiesArg\n >({\n async queryFn(arg, { dispatch }) {\n try {\n const result = await dispatch(operationsEnhanced.endpoints.operations.initiate(arg))\n\n const data = result.data\n // check for any errors in the result\n const uniqueErrors = new Set()\n const uniqueErrorCodes = new Set()\n for (const op of data?.operations || []) {\n if (op.success === false && op.detail) {\n if (!uniqueErrors.has(op.detail)) {\n uniqueErrors.add(op.detail)\n }\n if (!uniqueErrorCodes.has(op.errorCode)) {\n uniqueErrorCodes.add(op.errorCode)\n }\n }\n }\n\n if (uniqueErrors.size > 0) {\n const error = {\n status: 'FETCH_ERROR',\n error: Array.from(uniqueErrors).join(', '),\n errorCodes: Array.from(uniqueErrorCodes),\n } as FetchBaseQueryError\n return { error }\n } else {\n return { data }\n }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n async onQueryStarted(\n { operationsRequestModel, patchOperations = [] },\n { dispatch, queryFulfilled, getState },\n ) {\n if (!operationsRequestModel.operations?.length) return\n const { operations } = operationsRequestModel\n // we need to split the operations by entity type\n const operationsByType = operations.reduce(\n (acc: Record<OperationModel['entityType'], OperationModel[]>, operation) => {\n acc[operation.entityType].push(operation)\n return acc\n },\n {\n task: [],\n folder: [],\n product: [],\n version: [],\n representation: [],\n workfile: [],\n },\n )\n\n // collect patches incase we need to undo them\n const state = getState()\n const patches: any[] = []\n\n // patch the overview tasks\n if (operationsByType.task?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.task)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing tasks\n patchOverviewTasks(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for tasks being created and deleted\n invalidateOverviewTasks([...deleteOps], {\n dispatch,\n })\n }\n\n // patch the overview folders (any other folders from foldersList)\n if (operationsByType.folder?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.folder)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing folders\n patchOverviewFolders(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for folders being created and deleted\n if (deleteOps.length) {\n dispatch(foldersQueries.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n }\n }\n\n const patchExtraTasks = patchOperations.filter((op) => op.entityType === 'task')\n const patchExtraFolders = patchOperations.filter((op) => op.entityType === 'folder')\n\n if (patchExtraTasks.length) {\n // often used for updating inherited dependents\n patchOverviewTasks(patchExtraTasks, { state, dispatch }, patches)\n }\n\n if (patchExtraFolders.length) {\n // often used for updating inherited dependents\n patchOverviewFolders(patchExtraFolders, { state, dispatch }, patches)\n }\n\n // patch the list items\n patchListItems([...operations, ...patchOperations], { state, dispatch }, patches)\n\n // try to patch any details panels\n // first we patch the individual entities\n // then we patch the details panel cache\n const entityTags = operations.map((op) => ({\n id: op.entityId,\n type: op.entityType,\n }))\n const entitiesTags = entityTags.map((tag) => ({\n type: 'entities',\n id: tag.id,\n }))\n\n // invalidates the details panel cache so that it fetches all individual entities again (using it's updated cache)\n const invalidateEntryPanel = () =>\n dispatch(detailsPanelQueries.util.invalidateTags(entitiesTags))\n\n // the individual entities that are patched for the details panel\n // remember the details panel cache is made up of individual entity caches\n const detailsPanelEntityCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entityTags,\n )\n\n // the cache for the whole details panel\n const detailsPanelEntitiesCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entitiesTags,\n )\n\n for (const entry of detailsPanelEntitiesCaches) {\n if (entry.endpointName !== 'getEntitiesDetailsPanel') continue\n const entitiesDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n entry.endpointName as 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity(operations, entity)\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches.push(entitiesDetailsResult)\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // undo all patches if there is an error\n for (const patch of patches) {\n patch.undo()\n }\n\n if (detailsPanelEntityCaches.length) {\n // we invalidate the tags for the detailsPanelEntityCaches that were patched\n // invalidate the details panel cache\n invalidateEntryPanel()\n }\n }\n },\n }),\n }),\n})\n\nexport const { useUpdateOverviewEntitiesMutation } = operationsApiEnhancedInjected\nexport { operationsApiEnhancedInjected as overviewQueries }\n"],"names":["getOverviewApi","task","foldersQueries","operations","entityListsQueriesGql","item","operationsApi","detailsPanelQueries"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,4BAA4B,CAAC,QAAa,kBAAuB;AACrE,QAAM,UAAU;AAAA,IACd,GAAG;AAAA,IACH,GAAG;AAAA,IACH,QAAQ;AAAA,MACN,GAAG,OAAO;AAAA,MACV,IAAI,+CAAe,WAAU,CAAA;AAAA,IAAC;AAAA,EAElC;AAGO,SAAA,OAAO,QAAQ,OAAO;AAC/B;AAEA,MAAM,sBAAsB,CAAC,UAAuD;AAC3E,SAAA;AAAA,IACL,EAAE,MAAM,gBAAgB,IAAI,OAAO;AAAA,IACnC,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,gBAAgB,IAAI,GAAG,SAAA,EAAW;AAAA;AAAA,IAEhE,GAAG,MACA,OAAO,CAAC,OAAO;;AAAA,sBAAG,SAAH,mBAAS;AAAA,KAAW,EACnC,IAAI,CAAC,OAAQ;;AAAA;AAAA,QACZ,MAAM;AAAA,QACN,KAAI,QAAG,SAAH,mBAAS;AAAA,MAAA;AAAA,KACb;AAAA,EACN;AACF;AAEA,MAAM,wBAAwB,CAAC,YAAyD;AAC/E,SAAA;AAAA,IACL,GAAG,QAAQ,IAAI,CAAC,QAAQ,EAAE,MAAM,UAAU,IAAI,GAAG,SAAA,EAAW;AAAA;AAAA,IAE5D,GAAG,QACA,OAAO,CAAC,OAAO;;AAAA,sBAAG,SAAH,mBAAS;AAAA,KAAW,EACnC,IAAI,CAAC,OAAQ;;AAAA;AAAA,QACZ,MAAM;AAAA,QACN,KAAI,QAAG,SAAH,mBAAS;AAAA,MAAA;AAAA,KACb;AAAA,EACN;AACF;AAMa,MAAA,qBAAqB,CAChC,OACA;AAAA,EACE;AAAA,EACA;AACF,GAIA,YACG;AACG,QAAA,OAAO,oBAAoB,KAAK;AACtC,QAAM,cAAcA,YAAAA,QAAe,KAAK,oBAAoB,OAAO,IAAI;AAEvE,aAAW,SAAS,aAAa;AAC3B,QAAA,MAAM,iBAAiB,wBAAwB;AAEjD,YAAM,aAAa;AAAA,QACjBA,oBAAe,KAAK,gBAAgB,wBAAwB,MAAM,cAAc,CAAC,UAAU;AAEzF,qBAAW,iBAAiB,OAAO;AACjC,gBAAI,cAAc,SAAS,YAAY,cAAc,MAAM;AAGzD,oBAAM,MAAM,CAAC,EAAE,MAAM,KAAK,cAAc,IAAI;AAAA,YAAA,OACvC;AAEM,yBAAA,QAAQ,MAAM,OAAO;AACxB,sBAAA,OAAO,KAAK,MAAM,KAAK,CAACC,UAASA,MAAK,OAAO,cAAc,QAAQ;AACzE,oBAAI,MAAM;AACkB,4CAAA,MAAM,cAAc,IAAI;AAAA,gBAAA;AAAA,cACpD;AAAA,YACF;AAAA,UACF;AAAA,QAEH,CAAA;AAAA,MACH;AAGA,yCAAS,KAAK;AAAA,IAAU,OACnB;AAGL,YAAM,aAAa;AAAA,QACjBD,oBAAe,KAAK;AAAA,UAClB,MAAM;AAAA,UACN,MAAM;AAAA,UACN,CAAC,UAAU;AAET,uBAAW,iBAAiB,OAAO;AACjC,kBACE,cAAc,SAAS,YACvB,cAAc,QACd,MAAM,aAAa,UAAU,SAAS,cAAc,KAAK,QAAQ,GACjE;AACM,sBAAA,YAAY,CAAC,oBAAsC;AAEvC,kCAAA,KAAK,cAAc,IAAI;AAAA,gBACzC;AAGI,oBAAA,MAAM,QAAQ,KAAK,GAAG;AACxB,4BAAU,KAAK;AAAA,gBAAA,WACN,MAAM,SAAS,MAAM,QAAQ,MAAM,KAAK,GAAG;AAEpD,wBAAM,aAAa,MAAM;AACzB,4BAAU,UAAU;AAAA,gBAAA;AAAA,cACtB,OACK;AACC,sBAAA,YAAY,CAAC,oBAAsC;AACjD,wBAAA,OAAO,gBAAgB,KAAK,CAACC,UAASA,MAAK,OAAO,cAAc,QAAQ;AAC9E,sBAAI,MAAM;AACkB,8CAAA,MAAM,cAAc,IAAI;AAAA,kBAAA;AAAA,gBAEtD;AAGI,oBAAA,MAAM,QAAQ,KAAK,GAAG;AACxB,4BAAU,KAAK;AAAA,gBAAA,WACN,MAAM,SAAS,MAAM,QAAQ,MAAM,KAAK,GAAG;AAEpD,wBAAM,aAAa,MAAM;AACzB,4BAAU,UAAU;AAAA,gBAAA;AAAA,cACtB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MAEJ;AAEA,yCAAS,KAAK;AAAA,IAAU;AAAA,EAC1B;AAEJ;AAEA,MAAM,0BAA0B,CAC9B,OACA;AAAA,EACE;AACF,MAGG;AACC,MAAA,CAAC,MAAM,OAAQ;AACnB,WAASD,oBAAe,KAAK,eAAe,oBAAoB,KAAK,CAAC,CAAC;AACzE;AAEa,MAAA,uBAAuB,CAClC,SACA;AAAA,EACE;AAAA,EACA;AACF,GAIA,YACG;AACH,QAAM,gBAAgBE,WAAA,eAAe,KAClC,oBAAoB,OAAO,sBAAsB,OAAO,CAAC,EACzD,OAAO,CAAC,UAAU,MAAM,iBAAiB,eAAe;AAC3D,aAAW,SAAS,eAAe;AACjC,UAAM,cAAc;AAAA,MAClBA,0BAAe,KAAK;AAAA,QAClB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,CAAC,UAAU;AAEH,gBAAA,gCAAgB,IAAI;AACpB,gBAAA,QAAQ,QAAQ,CAAC,WAAW;AACtB,sBAAA,IAAI,OAAO,IAAI,MAAM;AAAA,UAAA,CAChC;AAED,qBAAW,mBAAmB,SAAS;AACrC,gBAAI,gBAAgB,SAAS,YAAY,gBAAgB,MAAM;AAGvD,oBAAA,QAAQ,KAAK,gBAAgB,IAAI;AAAA,YAAA,OAClC;AACL,oBAAM,SAAS,UAAU,IAAI,gBAAgB,QAAQ;AAErD,kBAAI,QAAQ;AACgB,0CAAA,QAAQ,gBAAgB,IAAI;AAAA,cAAA;AAAA,YACxD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IAEJ;AAEA,uCAAS,KAAK;AAAA,EAAW;AAE7B;AAQA,MAAM,6BAA6B,CACjC,MACA,eACwC;AACxC,QAAM,aAAkD;AAAA,IACtD,MAAM,KAAK;AAAA,IACX,QAAQ,KAAK;AAAA,IACb,QAAQ,KAAK;AAAA,IACb,MAAM,KAAK;AAAA,IACX,OAAO,KAAK;AAAA,IACZ,WAAW,KAAK;AAAA,IAChB,WAAW,KAAK;AAAA,IAChB,gBAAgB,KAAK;AAAA,IACrB,aAAa,KAAK;AAAA,EACpB;AAEA,UAAQ,YAAY;AAAA,IAClB,KAAK;AACI,aAAA;AAAA,QACL,GAAG;AAAA,QACH,MAAM;AAAA,UACJ,WAAW,KAAK;AAAA,UAChB,OAAO,KAAK;AAAA,UACZ,MAAM,KAAK;AAAA,UACX,UAAU,KAAK;AAAA,QAAA;AAAA,MAEnB;AAAA,IACF,KAAK;AACI,aAAA;AAAA,QACL,GAAG;AAAA,QACH,QAAQ;AAAA,UACN,IAAI,KAAK;AAAA,UACT,MAAM,KAAK;AAAA,UACX,OAAO,KAAK;AAAA,UACZ,YAAY,KAAK;AAAA,QAAA;AAAA,MAErB;AAAA,IACF,KAAK;AACI,aAAA;AAAA,QACL,GAAG;AAAA,QACH,SAAS;AAAA,UACP,IAAI,KAAK;AAAA,UACT,MAAM,KAAK;AAAA,QAAA;AAAA,MAEf;AAAA,IACF,KAAK;AACI,aAAA;AAAA,QACL,GAAG;AAAA,MACL;AAAA,EAAA;AAEN;AAEO,MAAM,0BAA0B,CACrCC,cAA+B,IAC/B,UACG;AAEG,QAAA,YAAYA,YAAW,KAAK,CAAC,OAAO,GAAG,aAAa,MAAM,EAAE;AAClE,QAAM,gBAAgB,uCAAW;AAEjC,MAAI,CAAC,iBAAiB,UAAU,eAAe,aAAa,UAAU,eAAe;AAC5E,WAAA,QAAQ,KAAK,sDAAsD;AAG5E,QAAM,mBAAmB,2BAA2B,eAAe,UAAU,UAAU;AAGvF,WAAS,eAAe,KAAgB;AAC/B,WAAA,QAAQ,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,GAAG,MAAM;AAC1C,UAAI,QAAQ,QAAW;AACrB,eAAO,IAAI,GAAG;AAAA,MACL,WAAA,QAAQ,QAAQ,OAAO,QAAQ,UAAU;AAClD,uBAAe,GAAG;AAAA,MAAA;AAAA,IACpB,CACD;AAAA,EAAA;AAIH,iBAAe,gBAAuC;AAEtD,QAAM,UAA+C;AAAA,IACnD,GAAG;AAAA,IACH,GAAG;AAAA,IACH,QAAQ;AAAA,MACN,IAAI,+BAAO,WAAU,CAAC;AAAA,MACtB,GAAG,iBAAiB;AAAA,IACtB;AAAA,IACA,QAAQ;AAAA,MACN,IAAI,+BAAO,WAAU,CAAC;AAAA,MACtB,GAAG,iBAAiB;AAAA,IACtB;AAAA,IACA,MAAM;AAAA,MACJ,IAAI,+BAAO,SAAQ,CAAC;AAAA,MACpB,GAAG,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS;AAAA,MACP,IAAI,+BAAO,YAAW,CAAC;AAAA,MACvB,GAAG,iBAAiB;AAAA,IAAA;AAAA,EAExB;AAGO,SAAA,OAAO,OAAO,OAAO;AAC9B;AAEA,MAAM,iBAAiB,CACrB,UACA;AAAA,EACE;AAAA,EACA;AACF,GAIA,YACG;AACG,QAAA,OAAO,SAAS,IAAI,CAAC,QAAQ,EAAE,MAAM,kBAAkB,IAAI,GAAG,SAAW,EAAA;AAC/E,QAAM,UAAUC,SAAAA,QAAsB,KAAK,oBAAoB,OAAO,IAAI;AAE1E,aAAW,SAAS,SAAS;AACvB,QAAA,MAAM,iBAAiB,wBAAwB;AACjD,YAAM,iBAAiB;AAAA,QACrBA,iBAAsB,KAAK;AAAA,UACzB;AAAA,UACA,MAAM;AAAA,UACN,CAAC,UAAU;AAET,uBAAW,iBAAiB,UAAU;AACpC,kBAAI,cAAc,SAAS,YAAY,cAAc,MAAM;AAE9C,2BAAA,QAAQ,MAAM,OAAO;AACxB,wBAAA,OAAO,KAAK,MAAM,KAAK,CAACC,UAASA,MAAK,aAAa,cAAc,QAAQ;AAC/E,sBAAI,MAAM;AACkB,8CAAA,MAAM,cAAc,IAAI;AAAA,kBAAA;AAAA,gBACpD;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MAEJ;AAGA,yCAAS,KAAK;AAAA,IAAc;AAAA,EAC9B;AAEJ;AAEA,MAAM,gBAAgB,CAACF,gBAAiC;AACtD,SAAOA,YAAW;AAAA,IAChB,CAAC,KAAuD,cAAc;AACpE,UAAI,UAAU,IAAI,EAAE,KAAK,SAAS;AAC3B,aAAA;AAAA,IACT;AAAA,IACA;AAAA,MACE,QAAQ,CAAC;AAAA,MACT,QAAQ,CAAC;AAAA,MACT,QAAQ,CAAA;AAAA,IAAC;AAAA,EAEb;AACF;AAEA,MAAM,qBAAqBG,eAAc,iBAAiB;AAAA,EACxD,WAAW;AAAA,IACT,YAAY,CAAA;AAAA,EAAC;AAEjB,CAAC;AAOK,MAAA,gCAAgC,mBAAmB,gBAAgB;AAAA,EACvE,WAAW,CAAC,WAAW;AAAA,IACrB,wBAAwB,MAAM,SAG5B;AAAA,MACA,MAAM,QAAQ,KAAK,EAAE,YAAY;AAC3B,YAAA;AACI,gBAAA,SAAS,MAAM,SAAS,mBAAmB,UAAU,WAAW,SAAS,GAAG,CAAC;AAEnF,gBAAM,OAAO,OAAO;AAEd,gBAAA,mCAAmB,IAAI;AACvB,gBAAA,uCAAuB,IAAI;AACjC,qBAAW,OAAM,6BAAM,eAAc,CAAA,GAAI;AACvC,gBAAI,GAAG,YAAY,SAAS,GAAG,QAAQ;AACrC,kBAAI,CAAC,aAAa,IAAI,GAAG,MAAM,GAAG;AACnB,6BAAA,IAAI,GAAG,MAAM;AAAA,cAAA;AAE5B,kBAAI,CAAC,iBAAiB,IAAI,GAAG,SAAS,GAAG;AACtB,iCAAA,IAAI,GAAG,SAAS;AAAA,cAAA;AAAA,YACnC;AAAA,UACF;AAGE,cAAA,aAAa,OAAO,GAAG;AACzB,kBAAM,QAAQ;AAAA,cACZ,QAAQ;AAAA,cACR,OAAO,MAAM,KAAK,YAAY,EAAE,KAAK,IAAI;AAAA,cACzC,YAAY,MAAM,KAAK,gBAAgB;AAAA,YACzC;AACA,mBAAO,EAAE,MAAM;AAAA,UAAA,OACV;AACL,mBAAO,EAAE,KAAK;AAAA,UAAA;AAAA,iBAET,GAAQ;AACf,kBAAQ,MAAM,CAAC;AACf,gBAAM,QAAQ,EAAE,QAAQ,eAAe,OAAO,EAAE,QAAQ;AACxD,iBAAO,EAAE,MAAM;AAAA,QAAA;AAAA,MAEnB;AAAA,MACA,MAAM,eACJ,EAAE,wBAAwB,kBAAkB,CAAA,EAAG,GAC/C,EAAE,UAAU,gBAAgB,YAC5B;;AACI,YAAA,GAAC,4BAAuB,eAAvB,mBAAmC,QAAQ;AAC1C,cAAA,EAAE,YAAAH,gBAAe;AAEvB,cAAM,mBAAmBA,YAAW;AAAA,UAClC,CAAC,KAA6D,cAAc;AAC1E,gBAAI,UAAU,UAAU,EAAE,KAAK,SAAS;AACjC,mBAAA;AAAA,UACT;AAAA,UACA;AAAA,YACE,MAAM,CAAC;AAAA,YACP,QAAQ,CAAC;AAAA,YACT,SAAS,CAAC;AAAA,YACV,SAAS,CAAC;AAAA,YACV,gBAAgB,CAAC;AAAA,YACjB,UAAU,CAAA;AAAA,UAAC;AAAA,QAEf;AAGA,cAAM,QAAQ,SAAS;AACvB,cAAM,UAAiB,CAAC;AAGpB,aAAA,sBAAiB,SAAjB,mBAAuB,QAAQ;AAEjC,gBAAM,EAAE,QAAQ,WAAW,OAAW,IAAA,cAAc,iBAAiB,IAAI;AAEzE,gBAAM,iBAAiB,OAAO;AAAA,YAC5B,CAAC,OAAO,CAAC,gBAAgB,KAAK,CAAC,QAAQ,IAAI,aAAa,GAAG,QAAQ;AAAA,UACrE;AAEA,6BAAmB,gBAAgB,EAAE,OAAO,SAAA,GAAY,OAAO;AAEvC,kCAAA,CAAC,GAAG,SAAS,GAAG;AAAA,YACtC;AAAA,UAAA,CACD;AAAA,QAAA;AAIC,aAAA,sBAAiB,WAAjB,mBAAyB,QAAQ;AAEnC,gBAAM,EAAE,QAAQ,WAAW,OAAW,IAAA,cAAc,iBAAiB,MAAM;AAE3E,gBAAM,iBAAiB,OAAO;AAAA,YAC5B,CAAC,OAAO,CAAC,gBAAgB,KAAK,CAAC,QAAQ,IAAI,aAAa,GAAG,QAAQ;AAAA,UACrE;AAEA,+BAAqB,gBAAgB,EAAE,OAAO,SAAA,GAAY,OAAO;AAEjE,cAAI,UAAU,QAAQ;AACX,qBAAAD,WAAA,eAAe,KAAK,eAAe,CAAC,EAAE,MAAM,UAAU,IAAI,OAAQ,CAAA,CAAC,CAAC;AAAA,UAAA;AAAA,QAC/E;AAGF,cAAM,kBAAkB,gBAAgB,OAAO,CAAC,OAAO,GAAG,eAAe,MAAM;AAC/E,cAAM,oBAAoB,gBAAgB,OAAO,CAAC,OAAO,GAAG,eAAe,QAAQ;AAEnF,YAAI,gBAAgB,QAAQ;AAE1B,6BAAmB,iBAAiB,EAAE,OAAO,SAAA,GAAY,OAAO;AAAA,QAAA;AAGlE,YAAI,kBAAkB,QAAQ;AAE5B,+BAAqB,mBAAmB,EAAE,OAAO,SAAA,GAAY,OAAO;AAAA,QAAA;AAIvD,uBAAA,CAAC,GAAGC,aAAY,GAAG,eAAe,GAAG,EAAE,OAAO,SAAS,GAAG,OAAO;AAKhF,cAAM,aAAaA,YAAW,IAAI,CAAC,QAAQ;AAAA,UACzC,IAAI,GAAG;AAAA,UACP,MAAM,GAAG;AAAA,QAAA,EACT;AACF,cAAM,eAAe,WAAW,IAAI,CAAC,SAAS;AAAA,UAC5C,MAAM;AAAA,UACN,IAAI,IAAI;AAAA,QAAA,EACR;AAGF,cAAM,uBAAuB,MAC3B,SAASI,eAAAA,oBAAoB,KAAK,eAAe,YAAY,CAAC;AAI1D,cAAA,2BAA2BA,mCAAoB,KAAK;AAAA,UACxD;AAAA,UACA;AAAA,QACF;AAGM,cAAA,6BAA6BA,mCAAoB,KAAK;AAAA,UAC1D;AAAA,UACA;AAAA,QACF;AAEA,mBAAW,SAAS,4BAA4B;AAC1C,cAAA,MAAM,iBAAiB,0BAA2B;AACtD,gBAAM,wBAAwB;AAAA,YAC5BA,mCAAoB,KAAK;AAAA,cACvB,MAAM;AAAA,cACN,MAAM;AAAA,cACN,CAAC,UAAU;AACT,2BAAW,UAAU,OAAO;AAC1B,0CAAwBJ,aAAY,MAAM;AAAA,gBAAA;AAAA,cAC5C;AAAA,YACF;AAAA,UAEJ;AAGA,kBAAQ,KAAK,qBAAqB;AAAA,QAAA;AAGhC,YAAA;AACI,gBAAA;AAAA,iBACC,OAAO;AAEd,qBAAW,SAAS,SAAS;AAC3B,kBAAM,KAAK;AAAA,UAAA;AAGb,cAAI,yBAAyB,QAAQ;AAGd,iCAAA;AAAA,UAAA;AAAA,QACvB;AAAA,MACF;AAAA,IAEH,CAAA;AAAA,EACH;AACF,CAAC;AAEY,MAAA,EAAE,sCAAsC;;;;;;"}
1
+ {"version":3,"file":"updateOverview.cjs.js","sources":["../../../../../../src/api/queries/overview/updateOverview.ts"],"sourcesContent":["import {\n foldersQueries,\n detailsPanelQueries,\n operationsApi,\n entityListsQueriesGql,\n} from '@shared/api'\nimport type { OperationsResponseModel, OperationModel, OperationsApiArg } from '@shared/api'\nimport getOverviewApi from './getOverview'\nimport { DetailsPanelEntityData, DetailsPanelEntityType } from '@shared/api/queries/entities'\nimport { FetchBaseQueryError, RootState } from '@reduxjs/toolkit/query'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\n// these operations are dedicated to the overview page\n// this mean cache updates are custom for the overview page here\n\n// Helper function to update entities with operation data\nconst updateEntityWithOperation = (entity: any, operationData: any) => {\n const newData = {\n ...entity,\n ...operationData,\n attrib: {\n ...entity.attrib,\n ...(operationData?.attrib || {}),\n },\n }\n\n // patch data onto the entity\n Object.assign(entity, newData)\n}\n\nconst getOverviewTaskTags = (tasks: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n { type: 'overviewTask', id: 'LIST' },\n ...tasks.map((op) => ({ type: 'overviewTask', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...tasks\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'overviewTask',\n id: op.data?.projectName,\n })),\n ]\n}\n\nconst getOverviewFolderTags = (folders: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n ...folders.map((op) => ({ type: 'folder', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...folders\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'folder',\n id: op.data?.projectName,\n })),\n ]\n}\n\nexport type PatchOperation = Pick<OperationModel, 'entityId' | 'entityType' | 'data'> & {\n type?: OperationModel['type']\n}\n\nexport const patchOverviewTasks = (\n tasks: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = getOverviewTaskTags(tasks)\n const taskEntries = getOverviewApi.util.selectInvalidatedBy(state, tags)\n\n for (const entry of taskEntries) {\n if (entry.endpointName === 'getTasksListInfinite') {\n // patch getTasksListInfinite\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData('getTasksListInfinite', entry.originalArgs, (draft) => {\n // Apply each change to matching tasks in all pages\n for (const taskOperation of tasks) {\n if (taskOperation.type === 'create' && taskOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.pages[0].tasks.push(taskOperation.data)\n } else {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const task = page.tasks.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n }\n }\n }),\n )\n\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n } else {\n // this updates the main overview cache task\n // it also updates any GetTasksByParent caches\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData(\n entry.endpointName as 'getOverviewTasksByFolders' | 'GetTasksByParent' | 'GetTasksList',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in the cache\n for (const taskOperation of tasks) {\n if (\n taskOperation.type === 'create' &&\n taskOperation.data &&\n entry.originalArgs.parentIds.includes(taskOperation.data.folderId)\n ) {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n // @ts-expect-error\n tasksArrayDraft.push(taskOperation.data)\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n } else {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n const task = tasksArrayDraft.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n }\n }\n}\n\nconst invalidateOverviewTasks = (\n tasks: PatchOperation[],\n {\n dispatch,\n }: {\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n) => {\n if (!tasks.length) return\n dispatch(getOverviewApi.util.invalidateTags(getOverviewTaskTags(tasks)))\n}\n\nexport const patchOverviewFolders = (\n folders: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const folderEntries = foldersQueries.util\n .selectInvalidatedBy(state, getOverviewFolderTags(folders))\n .filter((entry) => entry.endpointName === 'getFolderList')\n for (const entry of folderEntries) {\n const folderPatch = dispatch(\n foldersQueries.util.updateQueryData(\n entry.endpointName as 'getFolderList',\n entry.originalArgs,\n (draft) => {\n // Create a Map for O(1) folder lookups\n const folderMap = new Map()\n draft.folders.forEach((folder) => {\n folderMap.set(folder.id, folder)\n })\n\n for (const folderOperation of folders) {\n if (folderOperation.type === 'create' && folderOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.folders.push(folderOperation.data)\n } else {\n const folder = folderMap.get(folderOperation.entityId)\n\n if (folder) {\n updateEntityWithOperation(folder, folderOperation.data)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(folderPatch)\n }\n}\n\ntype DeepPartial<T> = T extends object\n ? {\n [P in keyof T]?: DeepPartial<T[P]>\n }\n : T\n\nconst operationDataToDetailsData = (\n data: Record<string, any>,\n entityType: DetailsPanelEntityType,\n): DeepPartial<DetailsPanelEntityData> => {\n const sharedData: DeepPartial<DetailsPanelEntityData> = {\n name: data.name,\n attrib: data.attrib,\n status: data.status,\n tags: data.tags,\n label: data.label,\n updatedAt: data.updatedAt,\n createdAt: data.createdAt,\n hasReviewables: data.hasReviewables,\n thumbnailId: data.thumbnailId,\n }\n\n switch (entityType) {\n case 'task':\n return {\n ...sharedData,\n task: {\n assignees: data.assignees,\n label: data.label,\n name: data.name,\n taskType: data.taskType,\n },\n }\n case 'folder':\n return {\n ...sharedData,\n folder: {\n id: data.id,\n name: data.name,\n label: data.label,\n folderType: data.folderType,\n },\n }\n case 'version':\n return {\n ...sharedData,\n version: {\n id: data.id,\n name: data.name,\n },\n }\n case 'representation':\n return {\n ...sharedData,\n }\n }\n}\n\nexport const patchDetailsPanelEntity = (\n operations: PatchOperation[] = [],\n draft: DetailsPanelEntityData,\n) => {\n // find the entity we are updating from the draft\n const operation = operations.find((op) => op.entityId === draft.id)\n const operationData = operation?.data\n\n if (!operationData || operation.entityType === 'product' || operation.entityType === 'workfile')\n return console.warn('No operation data found or entity type not supported')\n\n // transform the data to match the details panel entity data\n const detailsPanelData = operationDataToDetailsData(operationData, operation.entityType)\n\n // helper to deep‐clean undefined values\n function cleanUndefined(obj: any): void {\n Object.entries(obj).forEach(([key, val]) => {\n if (val === undefined) {\n delete obj[key]\n } else if (val !== null && typeof val === 'object') {\n cleanUndefined(val)\n }\n })\n }\n\n // remove all undefineds at root and nested levels\n cleanUndefined(detailsPanelData as Record<string, any>)\n\n const newData: DeepPartial<DetailsPanelEntityData> = {\n ...draft,\n ...detailsPanelData,\n attrib: {\n ...(draft?.attrib || {}),\n ...detailsPanelData.attrib,\n },\n folder: {\n ...(draft?.folder || {}),\n ...detailsPanelData.folder,\n },\n task: {\n ...(draft?.task || {}),\n ...detailsPanelData.task,\n },\n version: {\n ...(draft?.version || {}),\n ...detailsPanelData.version,\n },\n }\n\n // patch data onto the entity\n Object.assign(draft, newData)\n}\n\nconst patchListItems = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = entities.map((op) => ({ type: 'entityListItem', id: op.entityId }))\n const entries = entityListsQueriesGql.util.selectInvalidatedBy(state, tags)\n\n for (const entry of entries) {\n if (entry.endpointName === 'getListItemsInfinite') {\n const listItemsPatch = dispatch(\n entityListsQueriesGql.util.updateQueryData(\n 'getListItemsInfinite',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in all pages\n for (const listOperation of entities) {\n if (listOperation.type === 'update' && listOperation.data) {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const item = page.items.find((item) => item.entityId === listOperation.entityId)\n if (item) {\n updateEntityWithOperation(item, listOperation.data)\n }\n }\n }\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches?.push(listItemsPatch)\n }\n }\n}\n\nconst splitByOpType = (operations: OperationModel[]) => {\n return operations.reduce(\n (acc: Record<OperationModel['type'], OperationModel[]>, operation) => {\n acc[operation.type].push(operation)\n return acc\n },\n {\n create: [],\n update: [],\n delete: [],\n },\n )\n}\n\nconst operationsEnhanced = operationsApi.enhanceEndpoints({\n endpoints: {\n operations: {},\n },\n})\n\n// enhance the argument type to include some extra fields\ninterface UpdateOverviewEntitiesArg extends OperationsApiArg {\n patchOperations?: PatchOperation[] // extra entities to patch\n}\n\nconst operationsApiEnhancedInjected = operationsEnhanced.injectEndpoints({\n endpoints: (build) => ({\n updateOverviewEntities: build.mutation<\n OperationsResponseModel | undefined,\n UpdateOverviewEntitiesArg\n >({\n async queryFn(arg, { dispatch }) {\n try {\n const result = await dispatch(operationsEnhanced.endpoints.operations.initiate(arg))\n\n const data = result.data\n // check for any errors in the result\n const uniqueErrors = new Set()\n const uniqueErrorCodes = new Set()\n for (const op of data?.operations || []) {\n if (op.success === false && op.detail) {\n if (!uniqueErrors.has(op.detail)) {\n uniqueErrors.add(op.detail)\n }\n if (!uniqueErrorCodes.has(op.errorCode)) {\n uniqueErrorCodes.add(op.errorCode)\n }\n }\n }\n\n if (uniqueErrors.size > 0) {\n const error = {\n status: 'FETCH_ERROR',\n error: Array.from(uniqueErrors).join(', '),\n errorCodes: Array.from(uniqueErrorCodes),\n } as FetchBaseQueryError\n return { error }\n } else {\n return { data }\n }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n async onQueryStarted(\n { operationsRequestModel, patchOperations = [] },\n { dispatch, queryFulfilled, getState },\n ) {\n if (!operationsRequestModel.operations?.length) return\n const { operations } = operationsRequestModel\n // we need to split the operations by entity type\n const operationsByType = operations.reduce(\n (acc: Record<OperationModel['entityType'], OperationModel[]>, operation) => {\n acc[operation.entityType].push(operation)\n return acc\n },\n {\n task: [],\n folder: [],\n product: [],\n version: [],\n representation: [],\n workfile: [],\n },\n )\n\n // collect patches incase we need to undo them\n const state = getState()\n const patches: any[] = []\n\n // patch the overview tasks\n if (operationsByType.task?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.task)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing tasks\n patchOverviewTasks(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for tasks being created and deleted\n invalidateOverviewTasks([...deleteOps], {\n dispatch,\n })\n }\n\n // patch the overview folders (any other folders from foldersList)\n if (operationsByType.folder?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.folder)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing folders\n patchOverviewFolders(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for folders being created and deleted\n if (deleteOps.length) {\n dispatch(foldersQueries.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n }\n }\n\n const patchExtraTasks = patchOperations.filter((op) => op.entityType === 'task')\n const patchExtraFolders = patchOperations.filter((op) => op.entityType === 'folder')\n\n if (patchExtraTasks.length) {\n // often used for updating inherited dependents\n patchOverviewTasks(patchExtraTasks, { state, dispatch }, patches)\n }\n\n if (patchExtraFolders.length) {\n // often used for updating inherited dependents\n patchOverviewFolders(patchExtraFolders, { state, dispatch }, patches)\n }\n\n // patch the list items\n patchListItems([...operations, ...patchOperations], { state, dispatch }, patches)\n\n // try to patch any details panels\n // first we patch the individual entities\n // then we patch the details panel cache\n const entityTags = operations.map((op) => ({\n id: op.entityId,\n type: op.entityType,\n }))\n const entitiesTags = entityTags.map((tag) => ({\n type: 'entities',\n id: tag.id,\n }))\n\n // invalidates the details panel cache so that it fetches all individual entities again (using it's updated cache)\n const invalidateEntryPanel = () =>\n dispatch(detailsPanelQueries.util.invalidateTags(entitiesTags))\n\n // the individual entities that are patched for the details panel\n // remember the details panel cache is made up of individual entity caches\n const detailsPanelEntityCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entityTags,\n )\n\n // the cache for the whole details panel\n const detailsPanelEntitiesCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entitiesTags,\n )\n\n for (const entry of detailsPanelEntitiesCaches) {\n if (entry.endpointName !== 'getEntitiesDetailsPanel') continue\n const entitiesDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n entry.endpointName as 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity(operations, entity)\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches.push(entitiesDetailsResult)\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // undo all patches if there is an error\n for (const patch of patches) {\n patch.undo()\n }\n\n if (detailsPanelEntityCaches.length) {\n // we invalidate the tags for the detailsPanelEntityCaches that were patched\n // invalidate the details panel cache\n invalidateEntryPanel()\n }\n }\n },\n invalidatesTags: (_r, _e, { operationsRequestModel, projectName }) => {\n type Tags = { id: string; type: string }[]\n const userDashboardTags: Tags = [{ type: 'kanban', id: 'project-' + projectName }],\n taskProgressTags: Tags = []\n\n operationsRequestModel.operations?.forEach((op) => {\n const { entityId } = op\n if (entityId) {\n taskProgressTags.push({ type: 'progress', id: entityId })\n } else {\n // new entity created, so we should invalidate everything\n taskProgressTags.push({ type: 'progress', id: 'LIST' })\n }\n })\n\n return [...userDashboardTags, ...taskProgressTags]\n },\n }),\n }),\n})\n\nexport const { useUpdateOverviewEntitiesMutation } = operationsApiEnhancedInjected\nexport { operationsApiEnhancedInjected as overviewQueries }\n"],"names":["getOverviewApi","task","foldersQueries","operations","entityListsQueriesGql","item","operationsApi","detailsPanelQueries"],"mappings":"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"}
@@ -470,6 +470,19 @@ const operationsApiEnhancedInjected = operationsEnhanced.injectEndpoints({
470
470
  invalidateEntryPanel();
471
471
  }
472
472
  }
473
+ },
474
+ invalidatesTags: (_r, _e, { operationsRequestModel, projectName }) => {
475
+ var _a;
476
+ const userDashboardTags = [{ type: "kanban", id: "project-" + projectName }], taskProgressTags = [];
477
+ (_a = operationsRequestModel.operations) == null ? void 0 : _a.forEach((op) => {
478
+ const { entityId } = op;
479
+ if (entityId) {
480
+ taskProgressTags.push({ type: "progress", id: entityId });
481
+ } else {
482
+ taskProgressTags.push({ type: "progress", id: "LIST" });
483
+ }
484
+ });
485
+ return [...userDashboardTags, ...taskProgressTags];
473
486
  }
474
487
  })
475
488
  })
@@ -1 +1 @@
1
- {"version":3,"file":"updateOverview.es.js","sources":["../../../../../../src/api/queries/overview/updateOverview.ts"],"sourcesContent":["import {\n foldersQueries,\n detailsPanelQueries,\n operationsApi,\n entityListsQueriesGql,\n} from '@shared/api'\nimport type { OperationsResponseModel, OperationModel, OperationsApiArg } from '@shared/api'\nimport getOverviewApi from './getOverview'\nimport { DetailsPanelEntityData, DetailsPanelEntityType } from '@shared/api/queries/entities'\nimport { FetchBaseQueryError, RootState } from '@reduxjs/toolkit/query'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\n// these operations are dedicated to the overview page\n// this mean cache updates are custom for the overview page here\n\n// Helper function to update entities with operation data\nconst updateEntityWithOperation = (entity: any, operationData: any) => {\n const newData = {\n ...entity,\n ...operationData,\n attrib: {\n ...entity.attrib,\n ...(operationData?.attrib || {}),\n },\n }\n\n // patch data onto the entity\n Object.assign(entity, newData)\n}\n\nconst getOverviewTaskTags = (tasks: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n { type: 'overviewTask', id: 'LIST' },\n ...tasks.map((op) => ({ type: 'overviewTask', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...tasks\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'overviewTask',\n id: op.data?.projectName,\n })),\n ]\n}\n\nconst getOverviewFolderTags = (folders: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n ...folders.map((op) => ({ type: 'folder', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...folders\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'folder',\n id: op.data?.projectName,\n })),\n ]\n}\n\nexport type PatchOperation = Pick<OperationModel, 'entityId' | 'entityType' | 'data'> & {\n type?: OperationModel['type']\n}\n\nexport const patchOverviewTasks = (\n tasks: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = getOverviewTaskTags(tasks)\n const taskEntries = getOverviewApi.util.selectInvalidatedBy(state, tags)\n\n for (const entry of taskEntries) {\n if (entry.endpointName === 'getTasksListInfinite') {\n // patch getTasksListInfinite\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData('getTasksListInfinite', entry.originalArgs, (draft) => {\n // Apply each change to matching tasks in all pages\n for (const taskOperation of tasks) {\n if (taskOperation.type === 'create' && taskOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.pages[0].tasks.push(taskOperation.data)\n } else {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const task = page.tasks.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n }\n }\n }),\n )\n\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n } else {\n // this updates the main overview cache task\n // it also updates any GetTasksByParent caches\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData(\n entry.endpointName as 'getOverviewTasksByFolders' | 'GetTasksByParent' | 'GetTasksList',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in the cache\n for (const taskOperation of tasks) {\n if (\n taskOperation.type === 'create' &&\n taskOperation.data &&\n entry.originalArgs.parentIds.includes(taskOperation.data.folderId)\n ) {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n // @ts-expect-error\n tasksArrayDraft.push(taskOperation.data)\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n } else {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n const task = tasksArrayDraft.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n }\n }\n}\n\nconst invalidateOverviewTasks = (\n tasks: PatchOperation[],\n {\n dispatch,\n }: {\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n) => {\n if (!tasks.length) return\n dispatch(getOverviewApi.util.invalidateTags(getOverviewTaskTags(tasks)))\n}\n\nexport const patchOverviewFolders = (\n folders: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const folderEntries = foldersQueries.util\n .selectInvalidatedBy(state, getOverviewFolderTags(folders))\n .filter((entry) => entry.endpointName === 'getFolderList')\n for (const entry of folderEntries) {\n const folderPatch = dispatch(\n foldersQueries.util.updateQueryData(\n entry.endpointName as 'getFolderList',\n entry.originalArgs,\n (draft) => {\n // Create a Map for O(1) folder lookups\n const folderMap = new Map()\n draft.folders.forEach((folder) => {\n folderMap.set(folder.id, folder)\n })\n\n for (const folderOperation of folders) {\n if (folderOperation.type === 'create' && folderOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.folders.push(folderOperation.data)\n } else {\n const folder = folderMap.get(folderOperation.entityId)\n\n if (folder) {\n updateEntityWithOperation(folder, folderOperation.data)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(folderPatch)\n }\n}\n\ntype DeepPartial<T> = T extends object\n ? {\n [P in keyof T]?: DeepPartial<T[P]>\n }\n : T\n\nconst operationDataToDetailsData = (\n data: Record<string, any>,\n entityType: DetailsPanelEntityType,\n): DeepPartial<DetailsPanelEntityData> => {\n const sharedData: DeepPartial<DetailsPanelEntityData> = {\n name: data.name,\n attrib: data.attrib,\n status: data.status,\n tags: data.tags,\n label: data.label,\n updatedAt: data.updatedAt,\n createdAt: data.createdAt,\n hasReviewables: data.hasReviewables,\n thumbnailId: data.thumbnailId,\n }\n\n switch (entityType) {\n case 'task':\n return {\n ...sharedData,\n task: {\n assignees: data.assignees,\n label: data.label,\n name: data.name,\n taskType: data.taskType,\n },\n }\n case 'folder':\n return {\n ...sharedData,\n folder: {\n id: data.id,\n name: data.name,\n label: data.label,\n folderType: data.folderType,\n },\n }\n case 'version':\n return {\n ...sharedData,\n version: {\n id: data.id,\n name: data.name,\n },\n }\n case 'representation':\n return {\n ...sharedData,\n }\n }\n}\n\nexport const patchDetailsPanelEntity = (\n operations: PatchOperation[] = [],\n draft: DetailsPanelEntityData,\n) => {\n // find the entity we are updating from the draft\n const operation = operations.find((op) => op.entityId === draft.id)\n const operationData = operation?.data\n\n if (!operationData || operation.entityType === 'product' || operation.entityType === 'workfile')\n return console.warn('No operation data found or entity type not supported')\n\n // transform the data to match the details panel entity data\n const detailsPanelData = operationDataToDetailsData(operationData, operation.entityType)\n\n // helper to deep‐clean undefined values\n function cleanUndefined(obj: any): void {\n Object.entries(obj).forEach(([key, val]) => {\n if (val === undefined) {\n delete obj[key]\n } else if (val !== null && typeof val === 'object') {\n cleanUndefined(val)\n }\n })\n }\n\n // remove all undefineds at root and nested levels\n cleanUndefined(detailsPanelData as Record<string, any>)\n\n const newData: DeepPartial<DetailsPanelEntityData> = {\n ...draft,\n ...detailsPanelData,\n attrib: {\n ...(draft?.attrib || {}),\n ...detailsPanelData.attrib,\n },\n folder: {\n ...(draft?.folder || {}),\n ...detailsPanelData.folder,\n },\n task: {\n ...(draft?.task || {}),\n ...detailsPanelData.task,\n },\n version: {\n ...(draft?.version || {}),\n ...detailsPanelData.version,\n },\n }\n\n // patch data onto the entity\n Object.assign(draft, newData)\n}\n\nconst patchListItems = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = entities.map((op) => ({ type: 'entityListItem', id: op.entityId }))\n const entries = entityListsQueriesGql.util.selectInvalidatedBy(state, tags)\n\n for (const entry of entries) {\n if (entry.endpointName === 'getListItemsInfinite') {\n const listItemsPatch = dispatch(\n entityListsQueriesGql.util.updateQueryData(\n 'getListItemsInfinite',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in all pages\n for (const listOperation of entities) {\n if (listOperation.type === 'update' && listOperation.data) {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const item = page.items.find((item) => item.entityId === listOperation.entityId)\n if (item) {\n updateEntityWithOperation(item, listOperation.data)\n }\n }\n }\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches?.push(listItemsPatch)\n }\n }\n}\n\nconst splitByOpType = (operations: OperationModel[]) => {\n return operations.reduce(\n (acc: Record<OperationModel['type'], OperationModel[]>, operation) => {\n acc[operation.type].push(operation)\n return acc\n },\n {\n create: [],\n update: [],\n delete: [],\n },\n )\n}\n\nconst operationsEnhanced = operationsApi.enhanceEndpoints({\n endpoints: {\n operations: {},\n },\n})\n\n// enhance the argument type to include some extra fields\ninterface UpdateOverviewEntitiesArg extends OperationsApiArg {\n patchOperations?: PatchOperation[] // extra entities to patch\n}\n\nconst operationsApiEnhancedInjected = operationsEnhanced.injectEndpoints({\n endpoints: (build) => ({\n updateOverviewEntities: build.mutation<\n OperationsResponseModel | undefined,\n UpdateOverviewEntitiesArg\n >({\n async queryFn(arg, { dispatch }) {\n try {\n const result = await dispatch(operationsEnhanced.endpoints.operations.initiate(arg))\n\n const data = result.data\n // check for any errors in the result\n const uniqueErrors = new Set()\n const uniqueErrorCodes = new Set()\n for (const op of data?.operations || []) {\n if (op.success === false && op.detail) {\n if (!uniqueErrors.has(op.detail)) {\n uniqueErrors.add(op.detail)\n }\n if (!uniqueErrorCodes.has(op.errorCode)) {\n uniqueErrorCodes.add(op.errorCode)\n }\n }\n }\n\n if (uniqueErrors.size > 0) {\n const error = {\n status: 'FETCH_ERROR',\n error: Array.from(uniqueErrors).join(', '),\n errorCodes: Array.from(uniqueErrorCodes),\n } as FetchBaseQueryError\n return { error }\n } else {\n return { data }\n }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n async onQueryStarted(\n { operationsRequestModel, patchOperations = [] },\n { dispatch, queryFulfilled, getState },\n ) {\n if (!operationsRequestModel.operations?.length) return\n const { operations } = operationsRequestModel\n // we need to split the operations by entity type\n const operationsByType = operations.reduce(\n (acc: Record<OperationModel['entityType'], OperationModel[]>, operation) => {\n acc[operation.entityType].push(operation)\n return acc\n },\n {\n task: [],\n folder: [],\n product: [],\n version: [],\n representation: [],\n workfile: [],\n },\n )\n\n // collect patches incase we need to undo them\n const state = getState()\n const patches: any[] = []\n\n // patch the overview tasks\n if (operationsByType.task?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.task)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing tasks\n patchOverviewTasks(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for tasks being created and deleted\n invalidateOverviewTasks([...deleteOps], {\n dispatch,\n })\n }\n\n // patch the overview folders (any other folders from foldersList)\n if (operationsByType.folder?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.folder)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing folders\n patchOverviewFolders(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for folders being created and deleted\n if (deleteOps.length) {\n dispatch(foldersQueries.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n }\n }\n\n const patchExtraTasks = patchOperations.filter((op) => op.entityType === 'task')\n const patchExtraFolders = patchOperations.filter((op) => op.entityType === 'folder')\n\n if (patchExtraTasks.length) {\n // often used for updating inherited dependents\n patchOverviewTasks(patchExtraTasks, { state, dispatch }, patches)\n }\n\n if (patchExtraFolders.length) {\n // often used for updating inherited dependents\n patchOverviewFolders(patchExtraFolders, { state, dispatch }, patches)\n }\n\n // patch the list items\n patchListItems([...operations, ...patchOperations], { state, dispatch }, patches)\n\n // try to patch any details panels\n // first we patch the individual entities\n // then we patch the details panel cache\n const entityTags = operations.map((op) => ({\n id: op.entityId,\n type: op.entityType,\n }))\n const entitiesTags = entityTags.map((tag) => ({\n type: 'entities',\n id: tag.id,\n }))\n\n // invalidates the details panel cache so that it fetches all individual entities again (using it's updated cache)\n const invalidateEntryPanel = () =>\n dispatch(detailsPanelQueries.util.invalidateTags(entitiesTags))\n\n // the individual entities that are patched for the details panel\n // remember the details panel cache is made up of individual entity caches\n const detailsPanelEntityCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entityTags,\n )\n\n // the cache for the whole details panel\n const detailsPanelEntitiesCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entitiesTags,\n )\n\n for (const entry of detailsPanelEntitiesCaches) {\n if (entry.endpointName !== 'getEntitiesDetailsPanel') continue\n const entitiesDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n entry.endpointName as 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity(operations, entity)\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches.push(entitiesDetailsResult)\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // undo all patches if there is an error\n for (const patch of patches) {\n patch.undo()\n }\n\n if (detailsPanelEntityCaches.length) {\n // we invalidate the tags for the detailsPanelEntityCaches that were patched\n // invalidate the details panel cache\n invalidateEntryPanel()\n }\n }\n },\n }),\n }),\n})\n\nexport const { useUpdateOverviewEntitiesMutation } = operationsApiEnhancedInjected\nexport { operationsApiEnhancedInjected as overviewQueries }\n"],"names":["getOverviewApi","task","foldersQueries","entityListsQueriesGql","item","operationsApi","detailsPanelQueries"],"mappings":"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"}
1
+ {"version":3,"file":"updateOverview.es.js","sources":["../../../../../../src/api/queries/overview/updateOverview.ts"],"sourcesContent":["import {\n foldersQueries,\n detailsPanelQueries,\n operationsApi,\n entityListsQueriesGql,\n} from '@shared/api'\nimport type { OperationsResponseModel, OperationModel, OperationsApiArg } from '@shared/api'\nimport getOverviewApi from './getOverview'\nimport { DetailsPanelEntityData, DetailsPanelEntityType } from '@shared/api/queries/entities'\nimport { FetchBaseQueryError, RootState } from '@reduxjs/toolkit/query'\nimport { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\n// these operations are dedicated to the overview page\n// this mean cache updates are custom for the overview page here\n\n// Helper function to update entities with operation data\nconst updateEntityWithOperation = (entity: any, operationData: any) => {\n const newData = {\n ...entity,\n ...operationData,\n attrib: {\n ...entity.attrib,\n ...(operationData?.attrib || {}),\n },\n }\n\n // patch data onto the entity\n Object.assign(entity, newData)\n}\n\nconst getOverviewTaskTags = (tasks: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n { type: 'overviewTask', id: 'LIST' },\n ...tasks.map((op) => ({ type: 'overviewTask', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...tasks\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'overviewTask',\n id: op.data?.projectName,\n })),\n ]\n}\n\nconst getOverviewFolderTags = (folders: Pick<OperationModel, 'entityId' | 'data'>[]) => {\n return [\n ...folders.map((op) => ({ type: 'folder', id: op.entityId })),\n // we also add the projectName so that tasks that do not exist in the cache can still invalidate\n ...folders\n .filter((op) => op.data?.projectName)\n .map((op) => ({\n type: 'folder',\n id: op.data?.projectName,\n })),\n ]\n}\n\nexport type PatchOperation = Pick<OperationModel, 'entityId' | 'entityType' | 'data'> & {\n type?: OperationModel['type']\n}\n\nexport const patchOverviewTasks = (\n tasks: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = getOverviewTaskTags(tasks)\n const taskEntries = getOverviewApi.util.selectInvalidatedBy(state, tags)\n\n for (const entry of taskEntries) {\n if (entry.endpointName === 'getTasksListInfinite') {\n // patch getTasksListInfinite\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData('getTasksListInfinite', entry.originalArgs, (draft) => {\n // Apply each change to matching tasks in all pages\n for (const taskOperation of tasks) {\n if (taskOperation.type === 'create' && taskOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.pages[0].tasks.push(taskOperation.data)\n } else {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const task = page.tasks.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n }\n }\n }),\n )\n\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n } else {\n // this updates the main overview cache task\n // it also updates any GetTasksByParent caches\n const tasksPatch = dispatch(\n getOverviewApi.util.updateQueryData(\n entry.endpointName as 'getOverviewTasksByFolders' | 'GetTasksByParent' | 'GetTasksList',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in the cache\n for (const taskOperation of tasks) {\n if (\n taskOperation.type === 'create' &&\n taskOperation.data &&\n entry.originalArgs.parentIds.includes(taskOperation.data.folderId)\n ) {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n // @ts-expect-error\n tasksArrayDraft.push(taskOperation.data)\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n } else {\n const patchTask = (tasksArrayDraft: EditorTaskNode[]) => {\n const task = tasksArrayDraft.find((task) => task.id === taskOperation.entityId)\n if (task) {\n updateEntityWithOperation(task, taskOperation.data)\n }\n }\n\n // Check if draft is an array or an object with a tasks property\n if (Array.isArray(draft)) {\n patchTask(draft)\n } else if (draft.tasks && Array.isArray(draft.tasks)) {\n // Handle object with tasks array case (like in GetTasksList)\n const draftArray = draft.tasks\n patchTask(draftArray)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(tasksPatch)\n }\n }\n}\n\nconst invalidateOverviewTasks = (\n tasks: PatchOperation[],\n {\n dispatch,\n }: {\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n) => {\n if (!tasks.length) return\n dispatch(getOverviewApi.util.invalidateTags(getOverviewTaskTags(tasks)))\n}\n\nexport const patchOverviewFolders = (\n folders: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const folderEntries = foldersQueries.util\n .selectInvalidatedBy(state, getOverviewFolderTags(folders))\n .filter((entry) => entry.endpointName === 'getFolderList')\n for (const entry of folderEntries) {\n const folderPatch = dispatch(\n foldersQueries.util.updateQueryData(\n entry.endpointName as 'getFolderList',\n entry.originalArgs,\n (draft) => {\n // Create a Map for O(1) folder lookups\n const folderMap = new Map()\n draft.folders.forEach((folder) => {\n folderMap.set(folder.id, folder)\n })\n\n for (const folderOperation of folders) {\n if (folderOperation.type === 'create' && folderOperation.data) {\n // push operation data to first page\n // @ts-expect-error\n draft.folders.push(folderOperation.data)\n } else {\n const folder = folderMap.get(folderOperation.entityId)\n\n if (folder) {\n updateEntityWithOperation(folder, folderOperation.data)\n }\n }\n }\n },\n ),\n )\n // add the patch to the list of patches\n patches?.push(folderPatch)\n }\n}\n\ntype DeepPartial<T> = T extends object\n ? {\n [P in keyof T]?: DeepPartial<T[P]>\n }\n : T\n\nconst operationDataToDetailsData = (\n data: Record<string, any>,\n entityType: DetailsPanelEntityType,\n): DeepPartial<DetailsPanelEntityData> => {\n const sharedData: DeepPartial<DetailsPanelEntityData> = {\n name: data.name,\n attrib: data.attrib,\n status: data.status,\n tags: data.tags,\n label: data.label,\n updatedAt: data.updatedAt,\n createdAt: data.createdAt,\n hasReviewables: data.hasReviewables,\n thumbnailId: data.thumbnailId,\n }\n\n switch (entityType) {\n case 'task':\n return {\n ...sharedData,\n task: {\n assignees: data.assignees,\n label: data.label,\n name: data.name,\n taskType: data.taskType,\n },\n }\n case 'folder':\n return {\n ...sharedData,\n folder: {\n id: data.id,\n name: data.name,\n label: data.label,\n folderType: data.folderType,\n },\n }\n case 'version':\n return {\n ...sharedData,\n version: {\n id: data.id,\n name: data.name,\n },\n }\n case 'representation':\n return {\n ...sharedData,\n }\n }\n}\n\nexport const patchDetailsPanelEntity = (\n operations: PatchOperation[] = [],\n draft: DetailsPanelEntityData,\n) => {\n // find the entity we are updating from the draft\n const operation = operations.find((op) => op.entityId === draft.id)\n const operationData = operation?.data\n\n if (!operationData || operation.entityType === 'product' || operation.entityType === 'workfile')\n return console.warn('No operation data found or entity type not supported')\n\n // transform the data to match the details panel entity data\n const detailsPanelData = operationDataToDetailsData(operationData, operation.entityType)\n\n // helper to deep‐clean undefined values\n function cleanUndefined(obj: any): void {\n Object.entries(obj).forEach(([key, val]) => {\n if (val === undefined) {\n delete obj[key]\n } else if (val !== null && typeof val === 'object') {\n cleanUndefined(val)\n }\n })\n }\n\n // remove all undefineds at root and nested levels\n cleanUndefined(detailsPanelData as Record<string, any>)\n\n const newData: DeepPartial<DetailsPanelEntityData> = {\n ...draft,\n ...detailsPanelData,\n attrib: {\n ...(draft?.attrib || {}),\n ...detailsPanelData.attrib,\n },\n folder: {\n ...(draft?.folder || {}),\n ...detailsPanelData.folder,\n },\n task: {\n ...(draft?.task || {}),\n ...detailsPanelData.task,\n },\n version: {\n ...(draft?.version || {}),\n ...detailsPanelData.version,\n },\n }\n\n // patch data onto the entity\n Object.assign(draft, newData)\n}\n\nconst patchListItems = (\n entities: PatchOperation[],\n {\n state,\n dispatch,\n }: {\n state: RootState<any, any, 'restApi'>\n dispatch: ThunkDispatch<any, any, UnknownAction>\n },\n patches?: any[],\n) => {\n const tags = entities.map((op) => ({ type: 'entityListItem', id: op.entityId }))\n const entries = entityListsQueriesGql.util.selectInvalidatedBy(state, tags)\n\n for (const entry of entries) {\n if (entry.endpointName === 'getListItemsInfinite') {\n const listItemsPatch = dispatch(\n entityListsQueriesGql.util.updateQueryData(\n 'getListItemsInfinite',\n entry.originalArgs,\n (draft) => {\n // Apply each change to matching tasks in all pages\n for (const listOperation of entities) {\n if (listOperation.type === 'update' && listOperation.data) {\n // Iterate through all pages in the infinite query\n for (const page of draft.pages) {\n const item = page.items.find((item) => item.entityId === listOperation.entityId)\n if (item) {\n updateEntityWithOperation(item, listOperation.data)\n }\n }\n }\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches?.push(listItemsPatch)\n }\n }\n}\n\nconst splitByOpType = (operations: OperationModel[]) => {\n return operations.reduce(\n (acc: Record<OperationModel['type'], OperationModel[]>, operation) => {\n acc[operation.type].push(operation)\n return acc\n },\n {\n create: [],\n update: [],\n delete: [],\n },\n )\n}\n\nconst operationsEnhanced = operationsApi.enhanceEndpoints({\n endpoints: {\n operations: {},\n },\n})\n\n// enhance the argument type to include some extra fields\ninterface UpdateOverviewEntitiesArg extends OperationsApiArg {\n patchOperations?: PatchOperation[] // extra entities to patch\n}\n\nconst operationsApiEnhancedInjected = operationsEnhanced.injectEndpoints({\n endpoints: (build) => ({\n updateOverviewEntities: build.mutation<\n OperationsResponseModel | undefined,\n UpdateOverviewEntitiesArg\n >({\n async queryFn(arg, { dispatch }) {\n try {\n const result = await dispatch(operationsEnhanced.endpoints.operations.initiate(arg))\n\n const data = result.data\n // check for any errors in the result\n const uniqueErrors = new Set()\n const uniqueErrorCodes = new Set()\n for (const op of data?.operations || []) {\n if (op.success === false && op.detail) {\n if (!uniqueErrors.has(op.detail)) {\n uniqueErrors.add(op.detail)\n }\n if (!uniqueErrorCodes.has(op.errorCode)) {\n uniqueErrorCodes.add(op.errorCode)\n }\n }\n }\n\n if (uniqueErrors.size > 0) {\n const error = {\n status: 'FETCH_ERROR',\n error: Array.from(uniqueErrors).join(', '),\n errorCodes: Array.from(uniqueErrorCodes),\n } as FetchBaseQueryError\n return { error }\n } else {\n return { data }\n }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n async onQueryStarted(\n { operationsRequestModel, patchOperations = [] },\n { dispatch, queryFulfilled, getState },\n ) {\n if (!operationsRequestModel.operations?.length) return\n const { operations } = operationsRequestModel\n // we need to split the operations by entity type\n const operationsByType = operations.reduce(\n (acc: Record<OperationModel['entityType'], OperationModel[]>, operation) => {\n acc[operation.entityType].push(operation)\n return acc\n },\n {\n task: [],\n folder: [],\n product: [],\n version: [],\n representation: [],\n workfile: [],\n },\n )\n\n // collect patches incase we need to undo them\n const state = getState()\n const patches: any[] = []\n\n // patch the overview tasks\n if (operationsByType.task?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.task)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing tasks\n patchOverviewTasks(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for tasks being created and deleted\n invalidateOverviewTasks([...deleteOps], {\n dispatch,\n })\n }\n\n // patch the overview folders (any other folders from foldersList)\n if (operationsByType.folder?.length) {\n // split operations by operation type\n const { delete: deleteOps, update } = splitByOpType(operationsByType.folder)\n // filter out updates that are in updateToPatch as we patch them later on\n const updatesToPatch = update.filter(\n (op) => !patchOperations.some((dep) => dep.entityId === op.entityId),\n )\n // update existing folders\n patchOverviewFolders(updatesToPatch, { state, dispatch }, patches)\n // invalidate the caches for folders being created and deleted\n if (deleteOps.length) {\n dispatch(foldersQueries.util.invalidateTags([{ type: 'folder', id: 'LIST' }]))\n }\n }\n\n const patchExtraTasks = patchOperations.filter((op) => op.entityType === 'task')\n const patchExtraFolders = patchOperations.filter((op) => op.entityType === 'folder')\n\n if (patchExtraTasks.length) {\n // often used for updating inherited dependents\n patchOverviewTasks(patchExtraTasks, { state, dispatch }, patches)\n }\n\n if (patchExtraFolders.length) {\n // often used for updating inherited dependents\n patchOverviewFolders(patchExtraFolders, { state, dispatch }, patches)\n }\n\n // patch the list items\n patchListItems([...operations, ...patchOperations], { state, dispatch }, patches)\n\n // try to patch any details panels\n // first we patch the individual entities\n // then we patch the details panel cache\n const entityTags = operations.map((op) => ({\n id: op.entityId,\n type: op.entityType,\n }))\n const entitiesTags = entityTags.map((tag) => ({\n type: 'entities',\n id: tag.id,\n }))\n\n // invalidates the details panel cache so that it fetches all individual entities again (using it's updated cache)\n const invalidateEntryPanel = () =>\n dispatch(detailsPanelQueries.util.invalidateTags(entitiesTags))\n\n // the individual entities that are patched for the details panel\n // remember the details panel cache is made up of individual entity caches\n const detailsPanelEntityCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entityTags,\n )\n\n // the cache for the whole details panel\n const detailsPanelEntitiesCaches = detailsPanelQueries.util.selectInvalidatedBy(\n state,\n entitiesTags,\n )\n\n for (const entry of detailsPanelEntitiesCaches) {\n if (entry.endpointName !== 'getEntitiesDetailsPanel') continue\n const entitiesDetailsResult = dispatch(\n detailsPanelQueries.util.updateQueryData(\n entry.endpointName as 'getEntitiesDetailsPanel',\n entry.originalArgs,\n (draft) => {\n for (const entity of draft) {\n patchDetailsPanelEntity(operations, entity)\n }\n },\n ),\n )\n\n // add the patch to the list of patches\n patches.push(entitiesDetailsResult)\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // undo all patches if there is an error\n for (const patch of patches) {\n patch.undo()\n }\n\n if (detailsPanelEntityCaches.length) {\n // we invalidate the tags for the detailsPanelEntityCaches that were patched\n // invalidate the details panel cache\n invalidateEntryPanel()\n }\n }\n },\n invalidatesTags: (_r, _e, { operationsRequestModel, projectName }) => {\n type Tags = { id: string; type: string }[]\n const userDashboardTags: Tags = [{ type: 'kanban', id: 'project-' + projectName }],\n taskProgressTags: Tags = []\n\n operationsRequestModel.operations?.forEach((op) => {\n const { entityId } = op\n if (entityId) {\n taskProgressTags.push({ type: 'progress', id: entityId })\n } else {\n // new entity created, so we should invalidate everything\n taskProgressTags.push({ type: 'progress', id: 'LIST' })\n }\n })\n\n return [...userDashboardTags, ...taskProgressTags]\n },\n }),\n }),\n})\n\nexport const { useUpdateOverviewEntitiesMutation } = operationsApiEnhancedInjected\nexport { operationsApiEnhancedInjected as overviewQueries }\n"],"names":["getOverviewApi","task","foldersQueries","entityListsQueriesGql","item","operationsApi","detailsPanelQueries"],"mappings":"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"}
@@ -83,6 +83,7 @@ const USER_BY_NAME_QUERY = `
83
83
  accessGroups
84
84
  defaultAccessGroups
85
85
  hasPassword
86
+ disablePasswordLogin
86
87
  allAttrib
87
88
  }
88
89
  }
@@ -105,6 +106,7 @@ const USERS_QUERY = `
105
106
  accessGroups
106
107
  defaultAccessGroups
107
108
  hasPassword
109
+ disablePasswordLogin
108
110
  createdAt
109
111
  updatedAt
110
112
  apiKeyPreview
@@ -1 +1 @@
1
- {"version":3,"file":"getUsers.cjs.js","sources":["../../../../../../src/api/queries/users/getUsers.ts"],"sourcesContent":["import { gqlApi, usersApi } from '@shared/api/generated'\nimport { parseAllAttribs } from '@shared/api'\nimport {\n GetActiveUsersCountQuery,\n GetAllAssigneesQuery,\n GetAllProjectUsersAsAssigneeQuery,\n} from '@shared/api'\n\nconst USER_BY_NAME_QUERY = `\n query UserList($name:String!) {\n users(name: $name) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n accessGroups\n defaultAccessGroups\n hasPassword\n allAttrib\n }\n }\n }\n }\n`\nconst USERS_QUERY = `\n query UserList {\n users(last: 2000) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n userPool\n accessGroups\n defaultAccessGroups\n hasPassword\n createdAt\n updatedAt\n apiKeyPreview\n allAttrib\n }\n }\n }\n }\n`\n\nconst ASSIGNEES_BY_NAME_QUERY = `\nquery Assignees($names: [String!]!){\n users(names: $names) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\nconst ASSIGNEES_QUERY = `\nquery Assignees($projectName: String) {\n users(last: 2000 projectName: $projectName) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\n\nconst enhancedApi = usersApi.enhanceEndpoints({\n endpoints: {\n getCurrentUser: {\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n getUserSessions: {\n transformResponse: (res: any) => res?.sessions,\n providesTags: (_res, _g, { userName }) => [{ type: 'session', id: userName }],\n },\n },\n})\n\nconst injectedApi = gqlApi.injectEndpoints({\n endpoints: (build) => ({\n getUsers: build.query({\n query: () => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USERS_QUERY,\n variables: {},\n },\n }),\n transformResponse: (res: any, _meta, { selfName }) => {\n if (res?.errors) {\n console.log(res.errors)\n throw new Error(res.errors[0].message)\n }\n\n return res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n self: e.node.name === selfName,\n avatarUrl: `/api/users/${e.node.name}/avatar`,\n accessGroups: e.node.accessGroups ? JSON.parse(e.node.accessGroups) : {},\n attrib: parseAllAttribs(e.node.allAttrib),\n }))\n },\n providesTags: (users) =>\n users\n ? [...users.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : [{ type: 'user', id: 'LIST' }],\n }),\n getUserByName: build.query({\n query: ({ name }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USER_BY_NAME_QUERY,\n variables: { name },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n avatarUrl: `/api/users/${e.node?.name}/avatar`,\n attrib: parseAllAttribs(e.node.allAttrib),\n })),\n providesTags: (res) =>\n res\n ? [...res.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : ['user', { type: 'user', id: 'LIST' }],\n }),\n getUsersAssignee: build.query({\n query: ({ names, projectName }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: names ? ASSIGNEES_BY_NAME_QUERY : ASSIGNEES_QUERY,\n variables: { names, projectName },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.flatMap((u: any) => {\n if (!u.node) return []\n\n const n = u.node\n\n return {\n name: n.name,\n fullName: n.attrib?.fullName,\n avatarUrl: `/api/users/${n.name}/avatar`,\n }\n }),\n providesTags: (res) =>\n res\n ? [\n ...res.map((user: any) => ({ type: 'user', id: user.name })),\n { type: 'user', id: 'LIST' },\n ]\n : [{ type: 'user', id: 'LIST' }],\n }),\n }),\n overrideExisting: true,\n})\n\ntype AssigneeNode = GetAllProjectUsersAsAssigneeQuery['users']['edges'][0]['node']\nexport type Assignees = {\n name: AssigneeNode['name']\n fullName: AssigneeNode['attrib']['fullName']\n updatedAt: AssigneeNode['updatedAt']\n}[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetAllProjectUsersAsAssignee'> & {\n GetAllProjectUsersAsAssignee: OverrideResultType<\n Definitions['GetAllProjectUsersAsAssignee'],\n Assignees\n >\n GetActiveUsersCount: OverrideResultType<Definitions['GetActiveUsersCount'], number>\n GetAllAssignees: OverrideResultType<Definitions['GetAllAssignees'], Assignees>\n}\n\nconst gqlUsers = injectedApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetAllProjectUsersAsAssignee: {\n transformResponse: (res: GetAllProjectUsersAsAssigneeQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n GetActiveUsersCount: {\n transformResponse: (res: GetActiveUsersCountQuery) =>\n res.users.edges.filter((e) => e.node.active && !e.node.isGuest).length,\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n GetAllAssignees: {\n transformResponse: (res: GetAllAssigneesQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const {\n useGetAllProjectUsersAsAssigneeQuery,\n useLazyGetAllProjectUsersAsAssigneeQuery,\n useGetActiveUsersCountQuery,\n useGetAllAssigneesQuery,\n useGetUsersQuery,\n useGetUserByNameQuery,\n useGetUsersAssigneeQuery,\n} = gqlUsers\n\nexport const { useGetUserSessionsQuery, useGetCurrentUserQuery } = enhancedApi\nexport default injectedApi\n"],"names":["usersApi","gqlApi","parseAllAttribs","users","_a"],"mappings":"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"}
1
+ {"version":3,"file":"getUsers.cjs.js","sources":["../../../../../../src/api/queries/users/getUsers.ts"],"sourcesContent":["import { gqlApi, usersApi } from '@shared/api/generated'\nimport { parseAllAttribs } from '@shared/api'\nimport {\n GetActiveUsersCountQuery,\n GetAllAssigneesQuery,\n GetAllProjectUsersAsAssigneeQuery,\n} from '@shared/api'\n\nconst USER_BY_NAME_QUERY = `\n query UserList($name:String!) {\n users(name: $name) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n accessGroups\n defaultAccessGroups\n hasPassword\n disablePasswordLogin\n allAttrib\n }\n }\n }\n }\n`\nconst USERS_QUERY = `\n query UserList {\n users(last: 2000) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n userPool\n accessGroups\n defaultAccessGroups\n hasPassword\n disablePasswordLogin\n createdAt\n updatedAt\n apiKeyPreview\n allAttrib\n }\n }\n }\n }\n`\n\nconst ASSIGNEES_BY_NAME_QUERY = `\nquery Assignees($names: [String!]!){\n users(names: $names) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\nconst ASSIGNEES_QUERY = `\nquery Assignees($projectName: String) {\n users(last: 2000 projectName: $projectName) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\n\nconst enhancedApi = usersApi.enhanceEndpoints({\n endpoints: {\n getCurrentUser: {\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n getUserSessions: {\n transformResponse: (res: any) => res?.sessions,\n providesTags: (_res, _g, { userName }) => [{ type: 'session', id: userName }],\n },\n },\n})\n\nconst injectedApi = gqlApi.injectEndpoints({\n endpoints: (build) => ({\n getUsers: build.query({\n query: () => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USERS_QUERY,\n variables: {},\n },\n }),\n transformResponse: (res: any, _meta, { selfName }) => {\n if (res?.errors) {\n console.log(res.errors)\n throw new Error(res.errors[0].message)\n }\n\n return res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n self: e.node.name === selfName,\n avatarUrl: `/api/users/${e.node.name}/avatar`,\n accessGroups: e.node.accessGroups ? JSON.parse(e.node.accessGroups) : {},\n attrib: parseAllAttribs(e.node.allAttrib),\n }))\n },\n providesTags: (users) =>\n users\n ? [...users.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : [{ type: 'user', id: 'LIST' }],\n }),\n getUserByName: build.query({\n query: ({ name }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USER_BY_NAME_QUERY,\n variables: { name },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n avatarUrl: `/api/users/${e.node?.name}/avatar`,\n attrib: parseAllAttribs(e.node.allAttrib),\n })),\n providesTags: (res) =>\n res\n ? [...res.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : ['user', { type: 'user', id: 'LIST' }],\n }),\n getUsersAssignee: build.query({\n query: ({ names, projectName }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: names ? ASSIGNEES_BY_NAME_QUERY : ASSIGNEES_QUERY,\n variables: { names, projectName },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.flatMap((u: any) => {\n if (!u.node) return []\n\n const n = u.node\n\n return {\n name: n.name,\n fullName: n.attrib?.fullName,\n avatarUrl: `/api/users/${n.name}/avatar`,\n }\n }),\n providesTags: (res) =>\n res\n ? [\n ...res.map((user: any) => ({ type: 'user', id: user.name })),\n { type: 'user', id: 'LIST' },\n ]\n : [{ type: 'user', id: 'LIST' }],\n }),\n }),\n overrideExisting: true,\n})\n\ntype AssigneeNode = GetAllProjectUsersAsAssigneeQuery['users']['edges'][0]['node']\nexport type Assignees = {\n name: AssigneeNode['name']\n fullName: AssigneeNode['attrib']['fullName']\n updatedAt: AssigneeNode['updatedAt']\n}[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetAllProjectUsersAsAssignee'> & {\n GetAllProjectUsersAsAssignee: OverrideResultType<\n Definitions['GetAllProjectUsersAsAssignee'],\n Assignees\n >\n GetActiveUsersCount: OverrideResultType<Definitions['GetActiveUsersCount'], number>\n GetAllAssignees: OverrideResultType<Definitions['GetAllAssignees'], Assignees>\n}\n\nconst gqlUsers = injectedApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetAllProjectUsersAsAssignee: {\n transformResponse: (res: GetAllProjectUsersAsAssigneeQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n GetActiveUsersCount: {\n transformResponse: (res: GetActiveUsersCountQuery) =>\n res.users.edges.filter((e) => e.node.active && !e.node.isGuest).length,\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n GetAllAssignees: {\n transformResponse: (res: GetAllAssigneesQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const {\n useGetAllProjectUsersAsAssigneeQuery,\n useLazyGetAllProjectUsersAsAssigneeQuery,\n useGetActiveUsersCountQuery,\n useGetAllAssigneesQuery,\n useGetUsersQuery,\n useGetUserByNameQuery,\n useGetUsersAssigneeQuery,\n} = gqlUsers\n\nexport const { useGetUserSessionsQuery, useGetCurrentUserQuery } = enhancedApi\nexport default injectedApi\n"],"names":["usersApi","gqlApi","parseAllAttribs","users","_a"],"mappings":"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"}
@@ -81,6 +81,7 @@ const USER_BY_NAME_QUERY = `
81
81
  accessGroups
82
82
  defaultAccessGroups
83
83
  hasPassword
84
+ disablePasswordLogin
84
85
  allAttrib
85
86
  }
86
87
  }
@@ -103,6 +104,7 @@ const USERS_QUERY = `
103
104
  accessGroups
104
105
  defaultAccessGroups
105
106
  hasPassword
107
+ disablePasswordLogin
106
108
  createdAt
107
109
  updatedAt
108
110
  apiKeyPreview
@@ -1 +1 @@
1
- {"version":3,"file":"getUsers.es.js","sources":["../../../../../../src/api/queries/users/getUsers.ts"],"sourcesContent":["import { gqlApi, usersApi } from '@shared/api/generated'\nimport { parseAllAttribs } from '@shared/api'\nimport {\n GetActiveUsersCountQuery,\n GetAllAssigneesQuery,\n GetAllProjectUsersAsAssigneeQuery,\n} from '@shared/api'\n\nconst USER_BY_NAME_QUERY = `\n query UserList($name:String!) {\n users(name: $name) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n accessGroups\n defaultAccessGroups\n hasPassword\n allAttrib\n }\n }\n }\n }\n`\nconst USERS_QUERY = `\n query UserList {\n users(last: 2000) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n userPool\n accessGroups\n defaultAccessGroups\n hasPassword\n createdAt\n updatedAt\n apiKeyPreview\n allAttrib\n }\n }\n }\n }\n`\n\nconst ASSIGNEES_BY_NAME_QUERY = `\nquery Assignees($names: [String!]!){\n users(names: $names) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\nconst ASSIGNEES_QUERY = `\nquery Assignees($projectName: String) {\n users(last: 2000 projectName: $projectName) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\n\nconst enhancedApi = usersApi.enhanceEndpoints({\n endpoints: {\n getCurrentUser: {\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n getUserSessions: {\n transformResponse: (res: any) => res?.sessions,\n providesTags: (_res, _g, { userName }) => [{ type: 'session', id: userName }],\n },\n },\n})\n\nconst injectedApi = gqlApi.injectEndpoints({\n endpoints: (build) => ({\n getUsers: build.query({\n query: () => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USERS_QUERY,\n variables: {},\n },\n }),\n transformResponse: (res: any, _meta, { selfName }) => {\n if (res?.errors) {\n console.log(res.errors)\n throw new Error(res.errors[0].message)\n }\n\n return res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n self: e.node.name === selfName,\n avatarUrl: `/api/users/${e.node.name}/avatar`,\n accessGroups: e.node.accessGroups ? JSON.parse(e.node.accessGroups) : {},\n attrib: parseAllAttribs(e.node.allAttrib),\n }))\n },\n providesTags: (users) =>\n users\n ? [...users.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : [{ type: 'user', id: 'LIST' }],\n }),\n getUserByName: build.query({\n query: ({ name }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USER_BY_NAME_QUERY,\n variables: { name },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n avatarUrl: `/api/users/${e.node?.name}/avatar`,\n attrib: parseAllAttribs(e.node.allAttrib),\n })),\n providesTags: (res) =>\n res\n ? [...res.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : ['user', { type: 'user', id: 'LIST' }],\n }),\n getUsersAssignee: build.query({\n query: ({ names, projectName }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: names ? ASSIGNEES_BY_NAME_QUERY : ASSIGNEES_QUERY,\n variables: { names, projectName },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.flatMap((u: any) => {\n if (!u.node) return []\n\n const n = u.node\n\n return {\n name: n.name,\n fullName: n.attrib?.fullName,\n avatarUrl: `/api/users/${n.name}/avatar`,\n }\n }),\n providesTags: (res) =>\n res\n ? [\n ...res.map((user: any) => ({ type: 'user', id: user.name })),\n { type: 'user', id: 'LIST' },\n ]\n : [{ type: 'user', id: 'LIST' }],\n }),\n }),\n overrideExisting: true,\n})\n\ntype AssigneeNode = GetAllProjectUsersAsAssigneeQuery['users']['edges'][0]['node']\nexport type Assignees = {\n name: AssigneeNode['name']\n fullName: AssigneeNode['attrib']['fullName']\n updatedAt: AssigneeNode['updatedAt']\n}[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetAllProjectUsersAsAssignee'> & {\n GetAllProjectUsersAsAssignee: OverrideResultType<\n Definitions['GetAllProjectUsersAsAssignee'],\n Assignees\n >\n GetActiveUsersCount: OverrideResultType<Definitions['GetActiveUsersCount'], number>\n GetAllAssignees: OverrideResultType<Definitions['GetAllAssignees'], Assignees>\n}\n\nconst gqlUsers = injectedApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetAllProjectUsersAsAssignee: {\n transformResponse: (res: GetAllProjectUsersAsAssigneeQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n GetActiveUsersCount: {\n transformResponse: (res: GetActiveUsersCountQuery) =>\n res.users.edges.filter((e) => e.node.active && !e.node.isGuest).length,\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n GetAllAssignees: {\n transformResponse: (res: GetAllAssigneesQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const {\n useGetAllProjectUsersAsAssigneeQuery,\n useLazyGetAllProjectUsersAsAssigneeQuery,\n useGetActiveUsersCountQuery,\n useGetAllAssigneesQuery,\n useGetUsersQuery,\n useGetUserByNameQuery,\n useGetUsersAssigneeQuery,\n} = gqlUsers\n\nexport const { useGetUserSessionsQuery, useGetCurrentUserQuery } = enhancedApi\nexport default injectedApi\n"],"names":["usersApi","gqlApi","_a"],"mappings":"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"}
1
+ {"version":3,"file":"getUsers.es.js","sources":["../../../../../../src/api/queries/users/getUsers.ts"],"sourcesContent":["import { gqlApi, usersApi } from '@shared/api/generated'\nimport { parseAllAttribs } from '@shared/api'\nimport {\n GetActiveUsersCountQuery,\n GetAllAssigneesQuery,\n GetAllProjectUsersAsAssigneeQuery,\n} from '@shared/api'\n\nconst USER_BY_NAME_QUERY = `\n query UserList($name:String!) {\n users(name: $name) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n accessGroups\n defaultAccessGroups\n hasPassword\n disablePasswordLogin\n allAttrib\n }\n }\n }\n }\n`\nconst USERS_QUERY = `\n query UserList {\n users(last: 2000) {\n edges {\n node {\n name\n isAdmin\n isManager\n isService\n isDeveloper\n isGuest\n active\n userPool\n accessGroups\n defaultAccessGroups\n hasPassword\n disablePasswordLogin\n createdAt\n updatedAt\n apiKeyPreview\n allAttrib\n }\n }\n }\n }\n`\n\nconst ASSIGNEES_BY_NAME_QUERY = `\nquery Assignees($names: [String!]!){\n users(names: $names) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\nconst ASSIGNEES_QUERY = `\nquery Assignees($projectName: String) {\n users(last: 2000 projectName: $projectName) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n}\n}`\n\nconst enhancedApi = usersApi.enhanceEndpoints({\n endpoints: {\n getCurrentUser: {\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n getUserSessions: {\n transformResponse: (res: any) => res?.sessions,\n providesTags: (_res, _g, { userName }) => [{ type: 'session', id: userName }],\n },\n },\n})\n\nconst injectedApi = gqlApi.injectEndpoints({\n endpoints: (build) => ({\n getUsers: build.query({\n query: () => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USERS_QUERY,\n variables: {},\n },\n }),\n transformResponse: (res: any, _meta, { selfName }) => {\n if (res?.errors) {\n console.log(res.errors)\n throw new Error(res.errors[0].message)\n }\n\n return res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n self: e.node.name === selfName,\n avatarUrl: `/api/users/${e.node.name}/avatar`,\n accessGroups: e.node.accessGroups ? JSON.parse(e.node.accessGroups) : {},\n attrib: parseAllAttribs(e.node.allAttrib),\n }))\n },\n providesTags: (users) =>\n users\n ? [...users.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : [{ type: 'user', id: 'LIST' }],\n }),\n getUserByName: build.query({\n query: ({ name }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: USER_BY_NAME_QUERY,\n variables: { name },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.map((e: any) => ({\n ...e.node,\n avatarUrl: `/api/users/${e.node?.name}/avatar`,\n attrib: parseAllAttribs(e.node.allAttrib),\n })),\n providesTags: (res) =>\n res\n ? [...res.map((e: any) => ({ type: 'user', id: e.name })), { type: 'user', id: 'LIST' }]\n : ['user', { type: 'user', id: 'LIST' }],\n }),\n getUsersAssignee: build.query({\n query: ({ names, projectName }) => ({\n url: '/graphql',\n method: 'POST',\n body: {\n query: names ? ASSIGNEES_BY_NAME_QUERY : ASSIGNEES_QUERY,\n variables: { names, projectName },\n },\n }),\n transformResponse: (res: any) =>\n res?.data?.users.edges.flatMap((u: any) => {\n if (!u.node) return []\n\n const n = u.node\n\n return {\n name: n.name,\n fullName: n.attrib?.fullName,\n avatarUrl: `/api/users/${n.name}/avatar`,\n }\n }),\n providesTags: (res) =>\n res\n ? [\n ...res.map((user: any) => ({ type: 'user', id: user.name })),\n { type: 'user', id: 'LIST' },\n ]\n : [{ type: 'user', id: 'LIST' }],\n }),\n }),\n overrideExisting: true,\n})\n\ntype AssigneeNode = GetAllProjectUsersAsAssigneeQuery['users']['edges'][0]['node']\nexport type Assignees = {\n name: AssigneeNode['name']\n fullName: AssigneeNode['attrib']['fullName']\n updatedAt: AssigneeNode['updatedAt']\n}[]\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetAllProjectUsersAsAssignee'> & {\n GetAllProjectUsersAsAssignee: OverrideResultType<\n Definitions['GetAllProjectUsersAsAssignee'],\n Assignees\n >\n GetActiveUsersCount: OverrideResultType<Definitions['GetActiveUsersCount'], number>\n GetAllAssignees: OverrideResultType<Definitions['GetAllAssignees'], Assignees>\n}\n\nconst gqlUsers = injectedApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetAllProjectUsersAsAssignee: {\n transformResponse: (res: GetAllProjectUsersAsAssigneeQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n GetActiveUsersCount: {\n transformResponse: (res: GetActiveUsersCountQuery) =>\n res.users.edges.filter((e) => e.node.active && !e.node.isGuest).length,\n providesTags: [{ type: 'user', id: 'LIST' }],\n },\n GetAllAssignees: {\n transformResponse: (res: GetAllAssigneesQuery) =>\n res.users.edges.map((e) => ({\n name: e.node.name,\n fullName: e.node.attrib.fullName,\n updatedAt: e.node.updatedAt,\n })),\n providesTags: (res) =>\n res\n ? [{ type: 'user', id: 'LIST' }, ...res.map((e) => ({ type: 'user', id: e.name }))]\n : [{ type: 'user', id: 'LIST' }],\n },\n },\n})\n\nexport const {\n useGetAllProjectUsersAsAssigneeQuery,\n useLazyGetAllProjectUsersAsAssigneeQuery,\n useGetActiveUsersCountQuery,\n useGetAllAssigneesQuery,\n useGetUsersQuery,\n useGetUserByNameQuery,\n useGetUsersAssigneeQuery,\n} = gqlUsers\n\nexport const { useGetUserSessionsQuery, useGetCurrentUserQuery } = enhancedApi\nexport default injectedApi\n"],"names":["usersApi","gqlApi","_a"],"mappings":"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"}
@@ -67,7 +67,9 @@ const uploadVersions = versions.api.enhanceEndpoints({
67
67
  deleteVersion: {
68
68
  invalidatesTags: (_r, _e, { versionId }) => [
69
69
  { type: "version", id: versionId },
70
- { type: "product", id: versionId }
70
+ { type: "product", id: versionId },
71
+ { type: "entities", id: "LIST" }
72
+ // invalidate all entity panels
71
73
  ]
72
74
  }
73
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"updateVersions.cjs.js","sources":["../../../../../../src/api/queries/versions/updateVersions.ts"],"sourcesContent":["import { GetLatestProductVersionQuery, gqlApi, versionsApi } from '@shared/api/generated'\n\nexport type GetLatestVersionResult =\n GetLatestProductVersionQuery['project']['versions']['edges'][0]['node']\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLatestProductVersion'> & {\n GetLatestProductVersion: OverrideResultType<\n Definitions['GetLatestProductVersion'],\n GetLatestVersionResult\n >\n}\n\n// get versions for a specific product\nconst enhancedGqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLatestProductVersion: {\n transformResponse: (response: GetLatestProductVersionQuery) =>\n response.project.versions.edges[0]?.node,\n providesTags: (result, _e, { productId }) =>\n result\n ? [\n { type: 'version', id: result.id },\n { type: 'product', id: result.productId },\n ]\n : [{ type: 'product', id: productId }],\n },\n },\n})\n\nexport const { useGetLatestProductVersionQuery } = enhancedGqlApi\n\n// create a new version for a specific product\nconst uploadVersions = versionsApi.enhanceEndpoints({\n endpoints: {\n createVersion: {\n invalidatesTags: (_r, _e, { versionPostModel }) => [\n { type: 'product', id: versionPostModel.productId },\n { type: 'entities', id: 'VERSION' }, // invalidate all version entity panels\n ],\n transformErrorResponse: (error: any) => ({ message: error.data?.detail }),\n },\n deleteVersion: {\n invalidatesTags: (_r, _e, { versionId }) => [\n { type: 'version', id: versionId },\n { type: 'product', id: versionId },\n ],\n },\n },\n})\n\nexport const { useCreateVersionMutation, useDeleteVersionMutation } = uploadVersions\nexport { uploadVersions as versionsQueries }\n"],"names":["gqlApi","versionsApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAM,iBAAiBA,YAAO,iBAA+C;AAAA,EAC3E,WAAW;AAAA,IACT,yBAAyB;AAAA,MACvB,mBAAmB,CAAC,aAClB;;AAAA,8BAAS,QAAQ,SAAS,MAAM,CAAC,MAAjC,mBAAoC;AAAA;AAAA,MACtC,cAAc,CAAC,QAAQ,IAAI,EAAE,UAAA,MAC3B,SACI;AAAA,QACE,EAAE,MAAM,WAAW,IAAI,OAAO,GAAG;AAAA,QACjC,EAAE,MAAM,WAAW,IAAI,OAAO,UAAU;AAAA,UAE1C,CAAC,EAAE,MAAM,WAAW,IAAI,UAAW,CAAA;AAAA,IAAA;AAAA,EAC3C;AAEJ,CAAC;AAEY,MAAA,EAAE,oCAAoC;AAG7C,MAAA,iBAAiBC,aAAY,iBAAiB;AAAA,EAClD,WAAW;AAAA,IACT,eAAe;AAAA,MACb,iBAAiB,CAAC,IAAI,IAAI,EAAE,uBAAuB;AAAA,QACjD,EAAE,MAAM,WAAW,IAAI,iBAAiB,UAAU;AAAA,QAClD,EAAE,MAAM,YAAY,IAAI,UAAU;AAAA;AAAA,MACpC;AAAA,MACA,wBAAwB,CAAC,UAAgB;;AAAA,iBAAE,UAAS,WAAM,SAAN,mBAAY,OAAO;AAAA;AAAA,IACzE;AAAA,IACA,eAAe;AAAA,MACb,iBAAiB,CAAC,IAAI,IAAI,EAAE,gBAAgB;AAAA,QAC1C,EAAE,MAAM,WAAW,IAAI,UAAU;AAAA,QACjC,EAAE,MAAM,WAAW,IAAI,UAAU;AAAA,MAAA;AAAA,IACnC;AAAA,EACF;AAEJ,CAAC;AAEY,MAAA,EAAE,0BAA0B,6BAA6B;;;;;"}
1
+ {"version":3,"file":"updateVersions.cjs.js","sources":["../../../../../../src/api/queries/versions/updateVersions.ts"],"sourcesContent":["import { GetLatestProductVersionQuery, gqlApi, versionsApi } from '@shared/api/generated'\n\nexport type GetLatestVersionResult =\n GetLatestProductVersionQuery['project']['versions']['edges'][0]['node']\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLatestProductVersion'> & {\n GetLatestProductVersion: OverrideResultType<\n Definitions['GetLatestProductVersion'],\n GetLatestVersionResult\n >\n}\n\n// get versions for a specific product\nconst enhancedGqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLatestProductVersion: {\n transformResponse: (response: GetLatestProductVersionQuery) =>\n response.project.versions.edges[0]?.node,\n providesTags: (result, _e, { productId }) =>\n result\n ? [\n { type: 'version', id: result.id },\n { type: 'product', id: result.productId },\n ]\n : [{ type: 'product', id: productId }],\n },\n },\n})\n\nexport const { useGetLatestProductVersionQuery } = enhancedGqlApi\n\n// create a new version for a specific product\nconst uploadVersions = versionsApi.enhanceEndpoints({\n endpoints: {\n createVersion: {\n invalidatesTags: (_r, _e, { versionPostModel }) => [\n { type: 'product', id: versionPostModel.productId },\n { type: 'entities', id: 'VERSION' }, // invalidate all version entity panels\n ],\n transformErrorResponse: (error: any) => ({ message: error.data?.detail }),\n },\n deleteVersion: {\n invalidatesTags: (_r, _e, { versionId }) => [\n { type: 'version', id: versionId },\n { type: 'product', id: versionId },\n { type: 'entities', id: 'LIST' }, // invalidate all entity panels\n ],\n },\n },\n})\n\nexport const { useCreateVersionMutation, useDeleteVersionMutation } = uploadVersions\nexport { uploadVersions as versionsQueries }\n"],"names":["gqlApi","versionsApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAM,iBAAiBA,YAAO,iBAA+C;AAAA,EAC3E,WAAW;AAAA,IACT,yBAAyB;AAAA,MACvB,mBAAmB,CAAC,aAClB;;AAAA,8BAAS,QAAQ,SAAS,MAAM,CAAC,MAAjC,mBAAoC;AAAA;AAAA,MACtC,cAAc,CAAC,QAAQ,IAAI,EAAE,UAAA,MAC3B,SACI;AAAA,QACE,EAAE,MAAM,WAAW,IAAI,OAAO,GAAG;AAAA,QACjC,EAAE,MAAM,WAAW,IAAI,OAAO,UAAU;AAAA,UAE1C,CAAC,EAAE,MAAM,WAAW,IAAI,UAAW,CAAA;AAAA,IAAA;AAAA,EAC3C;AAEJ,CAAC;AAEY,MAAA,EAAE,oCAAoC;AAG7C,MAAA,iBAAiBC,aAAY,iBAAiB;AAAA,EAClD,WAAW;AAAA,IACT,eAAe;AAAA,MACb,iBAAiB,CAAC,IAAI,IAAI,EAAE,uBAAuB;AAAA,QACjD,EAAE,MAAM,WAAW,IAAI,iBAAiB,UAAU;AAAA,QAClD,EAAE,MAAM,YAAY,IAAI,UAAU;AAAA;AAAA,MACpC;AAAA,MACA,wBAAwB,CAAC,UAAgB;;AAAA,iBAAE,UAAS,WAAM,SAAN,mBAAY,OAAO;AAAA;AAAA,IACzE;AAAA,IACA,eAAe;AAAA,MACb,iBAAiB,CAAC,IAAI,IAAI,EAAE,gBAAgB;AAAA,QAC1C,EAAE,MAAM,WAAW,IAAI,UAAU;AAAA,QACjC,EAAE,MAAM,WAAW,IAAI,UAAU;AAAA,QACjC,EAAE,MAAM,YAAY,IAAI,OAAO;AAAA;AAAA,MAAA;AAAA,IACjC;AAAA,EACF;AAEJ,CAAC;AAEY,MAAA,EAAE,0BAA0B,6BAA6B;;;;;"}
@@ -65,7 +65,9 @@ const uploadVersions = injectedRtkApi$1.enhanceEndpoints({
65
65
  deleteVersion: {
66
66
  invalidatesTags: (_r, _e, { versionId }) => [
67
67
  { type: "version", id: versionId },
68
- { type: "product", id: versionId }
68
+ { type: "product", id: versionId },
69
+ { type: "entities", id: "LIST" }
70
+ // invalidate all entity panels
69
71
  ]
70
72
  }
71
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"updateVersions.es.js","sources":["../../../../../../src/api/queries/versions/updateVersions.ts"],"sourcesContent":["import { GetLatestProductVersionQuery, gqlApi, versionsApi } from '@shared/api/generated'\n\nexport type GetLatestVersionResult =\n GetLatestProductVersionQuery['project']['versions']['edges'][0]['node']\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLatestProductVersion'> & {\n GetLatestProductVersion: OverrideResultType<\n Definitions['GetLatestProductVersion'],\n GetLatestVersionResult\n >\n}\n\n// get versions for a specific product\nconst enhancedGqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLatestProductVersion: {\n transformResponse: (response: GetLatestProductVersionQuery) =>\n response.project.versions.edges[0]?.node,\n providesTags: (result, _e, { productId }) =>\n result\n ? [\n { type: 'version', id: result.id },\n { type: 'product', id: result.productId },\n ]\n : [{ type: 'product', id: productId }],\n },\n },\n})\n\nexport const { useGetLatestProductVersionQuery } = enhancedGqlApi\n\n// create a new version for a specific product\nconst uploadVersions = versionsApi.enhanceEndpoints({\n endpoints: {\n createVersion: {\n invalidatesTags: (_r, _e, { versionPostModel }) => [\n { type: 'product', id: versionPostModel.productId },\n { type: 'entities', id: 'VERSION' }, // invalidate all version entity panels\n ],\n transformErrorResponse: (error: any) => ({ message: error.data?.detail }),\n },\n deleteVersion: {\n invalidatesTags: (_r, _e, { versionId }) => [\n { type: 'version', id: versionId },\n { type: 'product', id: versionId },\n ],\n },\n },\n})\n\nexport const { useCreateVersionMutation, useDeleteVersionMutation } = uploadVersions\nexport { uploadVersions as versionsQueries }\n"],"names":["gqlApi","versionsApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAM,iBAAiBA,eAAO,iBAA+C;AAAA,EAC3E,WAAW;AAAA,IACT,yBAAyB;AAAA,MACvB,mBAAmB,CAAC,aAClB;;AAAA,8BAAS,QAAQ,SAAS,MAAM,CAAC,MAAjC,mBAAoC;AAAA;AAAA,MACtC,cAAc,CAAC,QAAQ,IAAI,EAAE,UAAA,MAC3B,SACI;AAAA,QACE,EAAE,MAAM,WAAW,IAAI,OAAO,GAAG;AAAA,QACjC,EAAE,MAAM,WAAW,IAAI,OAAO,UAAU;AAAA,UAE1C,CAAC,EAAE,MAAM,WAAW,IAAI,UAAW,CAAA;AAAA,IAAA;AAAA,EAC3C;AAEJ,CAAC;AAEY,MAAA,EAAE,oCAAoC;AAG7C,MAAA,iBAAiBC,iBAAY,iBAAiB;AAAA,EAClD,WAAW;AAAA,IACT,eAAe;AAAA,MACb,iBAAiB,CAAC,IAAI,IAAI,EAAE,uBAAuB;AAAA,QACjD,EAAE,MAAM,WAAW,IAAI,iBAAiB,UAAU;AAAA,QAClD,EAAE,MAAM,YAAY,IAAI,UAAU;AAAA;AAAA,MACpC;AAAA,MACA,wBAAwB,CAAC,UAAgB;;AAAA,iBAAE,UAAS,WAAM,SAAN,mBAAY,OAAO;AAAA;AAAA,IACzE;AAAA,IACA,eAAe;AAAA,MACb,iBAAiB,CAAC,IAAI,IAAI,EAAE,gBAAgB;AAAA,QAC1C,EAAE,MAAM,WAAW,IAAI,UAAU;AAAA,QACjC,EAAE,MAAM,WAAW,IAAI,UAAU;AAAA,MAAA;AAAA,IACnC;AAAA,EACF;AAEJ,CAAC;AAEY,MAAA,EAAE,0BAA0B,6BAA6B;"}
1
+ {"version":3,"file":"updateVersions.es.js","sources":["../../../../../../src/api/queries/versions/updateVersions.ts"],"sourcesContent":["import { GetLatestProductVersionQuery, gqlApi, versionsApi } from '@shared/api/generated'\n\nexport type GetLatestVersionResult =\n GetLatestProductVersionQuery['project']['versions']['edges'][0]['node']\n\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\n// update the definitions to include the new types\ntype UpdatedDefinitions = Omit<Definitions, 'GetLatestProductVersion'> & {\n GetLatestProductVersion: OverrideResultType<\n Definitions['GetLatestProductVersion'],\n GetLatestVersionResult\n >\n}\n\n// get versions for a specific product\nconst enhancedGqlApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n GetLatestProductVersion: {\n transformResponse: (response: GetLatestProductVersionQuery) =>\n response.project.versions.edges[0]?.node,\n providesTags: (result, _e, { productId }) =>\n result\n ? [\n { type: 'version', id: result.id },\n { type: 'product', id: result.productId },\n ]\n : [{ type: 'product', id: productId }],\n },\n },\n})\n\nexport const { useGetLatestProductVersionQuery } = enhancedGqlApi\n\n// create a new version for a specific product\nconst uploadVersions = versionsApi.enhanceEndpoints({\n endpoints: {\n createVersion: {\n invalidatesTags: (_r, _e, { versionPostModel }) => [\n { type: 'product', id: versionPostModel.productId },\n { type: 'entities', id: 'VERSION' }, // invalidate all version entity panels\n ],\n transformErrorResponse: (error: any) => ({ message: error.data?.detail }),\n },\n deleteVersion: {\n invalidatesTags: (_r, _e, { versionId }) => [\n { type: 'version', id: versionId },\n { type: 'product', id: versionId },\n { type: 'entities', id: 'LIST' }, // invalidate all entity panels\n ],\n },\n },\n})\n\nexport const { useCreateVersionMutation, useDeleteVersionMutation } = uploadVersions\nexport { uploadVersions as versionsQueries }\n"],"names":["gqlApi","versionsApi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAM,iBAAiBA,eAAO,iBAA+C;AAAA,EAC3E,WAAW;AAAA,IACT,yBAAyB;AAAA,MACvB,mBAAmB,CAAC,aAClB;;AAAA,8BAAS,QAAQ,SAAS,MAAM,CAAC,MAAjC,mBAAoC;AAAA;AAAA,MACtC,cAAc,CAAC,QAAQ,IAAI,EAAE,UAAA,MAC3B,SACI;AAAA,QACE,EAAE,MAAM,WAAW,IAAI,OAAO,GAAG;AAAA,QACjC,EAAE,MAAM,WAAW,IAAI,OAAO,UAAU;AAAA,UAE1C,CAAC,EAAE,MAAM,WAAW,IAAI,UAAW,CAAA;AAAA,IAAA;AAAA,EAC3C;AAEJ,CAAC;AAEY,MAAA,EAAE,oCAAoC;AAG7C,MAAA,iBAAiBC,iBAAY,iBAAiB;AAAA,EAClD,WAAW;AAAA,IACT,eAAe;AAAA,MACb,iBAAiB,CAAC,IAAI,IAAI,EAAE,uBAAuB;AAAA,QACjD,EAAE,MAAM,WAAW,IAAI,iBAAiB,UAAU;AAAA,QAClD,EAAE,MAAM,YAAY,IAAI,UAAU;AAAA;AAAA,MACpC;AAAA,MACA,wBAAwB,CAAC,UAAgB;;AAAA,iBAAE,UAAS,WAAM,SAAN,mBAAY,OAAO;AAAA;AAAA,IACzE;AAAA,IACA,eAAe;AAAA,MACb,iBAAiB,CAAC,IAAI,IAAI,EAAE,gBAAgB;AAAA,QAC1C,EAAE,MAAM,WAAW,IAAI,UAAU;AAAA,QACjC,EAAE,MAAM,WAAW,IAAI,UAAU;AAAA,QACjC,EAAE,MAAM,YAAY,IAAI,OAAO;AAAA;AAAA,MAAA;AAAA,IACjC;AAAA,EACF;AAEJ,CAAC;AAEY,MAAA,EAAE,0BAA0B,6BAA6B;"}
@@ -117,7 +117,7 @@ const DetailsPanelAttributes = ({
117
117
  const valuesByField = {};
118
118
  const mixedFieldsSet = /* @__PURE__ */ new Set();
119
119
  entities.forEach((entity) => {
120
- var _a, _b, _c, _d;
120
+ var _a, _b, _c;
121
121
  const mappedEntity = {
122
122
  id: entity.id,
123
123
  name: entity.name,
@@ -128,10 +128,10 @@ const DetailsPanelAttributes = ({
128
128
  projectName: entity.projectName,
129
129
  status: entity.status,
130
130
  tags: entity.tags || [],
131
- path: ((_a = entity.folder) == null ? void 0 : _a.path) || "",
132
- folderType: (_b = entity.folder) == null ? void 0 : _b.folderType,
133
- productType: (_c = entity.product) == null ? void 0 : _c.productType,
134
- taskType: (_d = entity.task) == null ? void 0 : _d.taskType
131
+ path: entity.path,
132
+ folderType: (_a = entity.folder) == null ? void 0 : _a.folderType,
133
+ productType: (_b = entity.product) == null ? void 0 : _b.productType,
134
+ taskType: (_c = entity.task) == null ? void 0 : _c.taskType
135
135
  };
136
136
  Object.keys(mappedEntity).forEach((key) => {
137
137
  if (visibleFields.includes(key)) {