{"version":3,"file":"release.mjs","sources":["../../../admin/src/services/release.ts"],"sourcesContent":["import { adminApi } from '@strapi/admin/strapi-admin';\n\nimport {\n  CreateReleaseAction,\n  CreateManyReleaseActions,\n  DeleteReleaseAction,\n} from '../../../shared/contracts/release-actions';\n\nimport type {\n  GetReleaseActions,\n  UpdateReleaseAction,\n  ReleaseActionGroupBy,\n} from '../../../shared/contracts/release-actions';\nimport type {\n  CreateRelease,\n  DeleteRelease,\n  GetReleases,\n  GetReleasesByDocumentAttached,\n  UpdateRelease,\n  GetRelease,\n  PublishRelease,\n  MapEntriesToReleases,\n} from '../../../shared/contracts/releases';\nimport type { GetSettings, UpdateSettings } from '../../../shared/contracts/settings';\nimport type { EndpointDefinition } from '@reduxjs/toolkit/query';\n\nexport interface GetReleasesQueryParams {\n  page?: number;\n  pageSize?: number;\n  filters?: {\n    releasedAt?: {\n      // TODO: this should be a boolean, find a way to avoid strings\n      $notNull?: boolean | 'true' | 'false';\n    };\n  };\n}\n\nexport interface GetReleaseActionsQueryParams {\n  page?: number;\n  pageSize?: number;\n  groupBy?: ReleaseActionGroupBy;\n}\n\ntype GetReleasesTabResponse = GetReleases.Response & {\n  meta: {\n    activeTab: 'pending' | 'done';\n  };\n};\n\ntype AnyEndpointDefinition = EndpointDefinition<any, any, any, any>;\n\n// TODO: move this into the admin code & expose an improved version of enhanceEndpoints or a new function\nconst extendInvalidatesTags = (\n  endpoint: AnyEndpointDefinition,\n  extraTags: string[] | { type: string; id: string }[]\n) => {\n  if (!endpoint) {\n    return;\n  }\n\n  const originalInvalidatesTags = endpoint.invalidatesTags;\n\n  const newInvalidatesTags: AnyEndpointDefinition['invalidatesTags'] = (\n    result,\n    err,\n    args,\n    meta\n  ) => {\n    const originalTags =\n      typeof originalInvalidatesTags === 'function'\n        ? originalInvalidatesTags(result, err, args, meta)\n        : originalInvalidatesTags;\n\n    return [...(originalTags ?? []), ...extraTags];\n  };\n\n  Object.assign(endpoint, { invalidatesTags: newInvalidatesTags });\n};\n\nconst releaseApi = adminApi\n  .enhanceEndpoints({\n    addTagTypes: [\n      'Release',\n      'ReleaseAction',\n      'EntriesInRelease',\n      'ReleaseSettings',\n      'Document',\n      'UpcomingReleasesList',\n    ],\n    endpoints: {\n      updateDocument(endpoint: AnyEndpointDefinition) {\n        extendInvalidatesTags(endpoint, [\n          { type: 'Release', id: 'LIST' },\n          { type: 'ReleaseAction', id: 'LIST' },\n        ]);\n      },\n      deleteDocument(endpoint: AnyEndpointDefinition) {\n        extendInvalidatesTags(endpoint, [\n          { type: 'Release', id: 'LIST' },\n          { type: 'ReleaseAction', id: 'LIST' },\n        ]);\n      },\n      deleteManyDocuments(endpoint: AnyEndpointDefinition) {\n        extendInvalidatesTags(endpoint, [\n          { type: 'Release', id: 'LIST' },\n          { type: 'ReleaseAction', id: 'LIST' },\n        ]);\n      },\n      discardDocument(endpoint: AnyEndpointDefinition) {\n        extendInvalidatesTags(endpoint, [\n          { type: 'Release', id: 'LIST' },\n          { type: 'ReleaseAction', id: 'LIST' },\n        ]);\n      },\n      createWorkflow(endpoint: AnyEndpointDefinition) {\n        extendInvalidatesTags(endpoint, [\n          { type: 'Release', id: 'LIST' },\n          { type: 'ReleaseAction', id: 'LIST' },\n        ]);\n      },\n      updateWorkflow(endpoint: AnyEndpointDefinition) {\n        extendInvalidatesTags(endpoint, [\n          { type: 'Release', id: 'LIST' },\n          { type: 'ReleaseAction', id: 'LIST' },\n        ]);\n      },\n      deleteWorkflow(endpoint: AnyEndpointDefinition) {\n        extendInvalidatesTags(endpoint, [\n          { type: 'Release', id: 'LIST' },\n          { type: 'ReleaseAction', id: 'LIST' },\n        ]);\n      },\n    },\n  })\n  .injectEndpoints({\n    endpoints: (build) => {\n      return {\n        getReleasesForEntry: build.query<\n          GetReleasesByDocumentAttached.Response,\n          Partial<GetReleasesByDocumentAttached.Request['query']>\n        >({\n          query(params) {\n            return {\n              url: '/content-releases/getByDocumentAttached',\n              method: 'GET',\n              config: {\n                params,\n              },\n            };\n          },\n          providesTags: (result) =>\n            result\n              ? [\n                  ...result.data.map(({ id }) => ({ type: 'Release' as const, id })),\n                  { type: 'Release', id: 'LIST' },\n                ]\n              : [],\n        }),\n        getReleases: build.query<GetReleasesTabResponse, GetReleasesQueryParams | void>({\n          query(\n            { page, pageSize, filters } = {\n              page: 1,\n              pageSize: 16,\n              filters: {\n                releasedAt: {\n                  $notNull: false,\n                },\n              },\n            }\n          ) {\n            return {\n              url: '/content-releases',\n              method: 'GET',\n              config: {\n                params: {\n                  page: page || 1,\n                  pageSize: pageSize || 16,\n                  filters: filters || {\n                    releasedAt: {\n                      $notNull: false,\n                    },\n                  },\n                },\n              },\n            };\n          },\n          transformResponse(response: GetReleasesTabResponse, meta, arg) {\n            const releasedAtValue = arg?.filters?.releasedAt?.$notNull;\n            const isActiveDoneTab = releasedAtValue === 'true';\n            const newResponse: GetReleasesTabResponse = {\n              ...response,\n              meta: {\n                ...response.meta,\n                activeTab: isActiveDoneTab ? 'done' : 'pending',\n              },\n            };\n\n            return newResponse;\n          },\n          providesTags: (result) =>\n            result\n              ? [\n                  ...result.data.map(({ id }) => ({ type: 'Release' as const, id })),\n                  { type: 'Release', id: 'LIST' },\n                ]\n              : [{ type: 'Release', id: 'LIST' }],\n        }),\n        getRelease: build.query<GetRelease.Response, GetRelease.Request['params']>({\n          query({ id }) {\n            return {\n              url: `/content-releases/${id}`,\n              method: 'GET',\n            };\n          },\n          providesTags: (result, error, arg) => [\n            { type: 'Release', id: 'LIST' },\n            { type: 'Release' as const, id: arg.id },\n          ],\n        }),\n        getReleaseActions: build.query<\n          GetReleaseActions.Response,\n          GetReleaseActions.Request['params'] & GetReleaseActions.Request['query']\n        >({\n          query({ releaseId, ...params }) {\n            return {\n              url: `/content-releases/${releaseId}/actions`,\n              method: 'GET',\n              config: {\n                params,\n              },\n            };\n          },\n          providesTags: [{ type: 'ReleaseAction', id: 'LIST' }],\n        }),\n        createRelease: build.mutation<CreateRelease.Response, CreateRelease.Request['body']>({\n          query(data) {\n            return {\n              url: '/content-releases',\n              method: 'POST',\n              data,\n            };\n          },\n          invalidatesTags: [{ type: 'Release', id: 'LIST' }, 'UpcomingReleasesList'],\n        }),\n        updateRelease: build.mutation<\n          void,\n          UpdateRelease.Request['params'] & UpdateRelease.Request['body']\n        >({\n          query({ id, ...data }) {\n            return {\n              url: `/content-releases/${id}`,\n              method: 'PUT',\n              data,\n            };\n          },\n          invalidatesTags: (result, error, arg) => [\n            { type: 'Release', id: arg.id },\n            'UpcomingReleasesList',\n          ],\n        }),\n        createReleaseAction: build.mutation<\n          CreateReleaseAction.Response,\n          CreateReleaseAction.Request\n        >({\n          query({ body, params }) {\n            return {\n              url: `/content-releases/${params.releaseId}/actions`,\n              method: 'POST',\n              data: body,\n            };\n          },\n          invalidatesTags: [\n            { type: 'Release', id: 'LIST' },\n            { type: 'ReleaseAction', id: 'LIST' },\n            'UpcomingReleasesList',\n          ],\n        }),\n        createManyReleaseActions: build.mutation<\n          CreateManyReleaseActions.Response,\n          CreateManyReleaseActions.Request\n        >({\n          query({ body, params }) {\n            return {\n              url: `/content-releases/${params.releaseId}/actions/bulk`,\n              method: 'POST',\n              data: body,\n            };\n          },\n          invalidatesTags: [\n            { type: 'Release', id: 'LIST' },\n            { type: 'ReleaseAction', id: 'LIST' },\n            { type: 'EntriesInRelease' },\n            'UpcomingReleasesList',\n          ],\n        }),\n        updateReleaseAction: build.mutation<\n          UpdateReleaseAction.Response,\n          UpdateReleaseAction.Request & { query: GetReleaseActions.Request['query'] } & {\n            actionPath: [string, number];\n          }\n        >({\n          query({ body, params }) {\n            return {\n              url: `/content-releases/${params.releaseId}/actions/${params.actionId}`,\n              method: 'PUT',\n              data: body,\n            };\n          },\n          invalidatesTags: (res, error, arg) => [\n            { type: 'ReleaseAction', id: 'LIST' },\n            { type: 'Release', id: 'LIST' },\n            { type: 'Release', id: arg.params.releaseId },\n            'UpcomingReleasesList',\n          ],\n          async onQueryStarted({ body, params, query, actionPath }, { dispatch, queryFulfilled }) {\n            // We need to mimic the same params received by the getReleaseActions query\n            const paramsWithoutActionId = {\n              releaseId: params.releaseId,\n              ...query,\n            };\n\n            const patchResult = dispatch(\n              releaseApi.util.updateQueryData(\n                'getReleaseActions',\n                paramsWithoutActionId,\n                (draft) => {\n                  const [key, index] = actionPath;\n                  const action = draft.data[key][index];\n\n                  if (action) {\n                    action.type = body.type;\n                  }\n                }\n              )\n            );\n\n            try {\n              await queryFulfilled;\n            } catch {\n              patchResult.undo();\n            }\n          },\n        }),\n        deleteReleaseAction: build.mutation<\n          DeleteReleaseAction.Response,\n          DeleteReleaseAction.Request\n        >({\n          query({ params }) {\n            return {\n              url: `/content-releases/${params.releaseId}/actions/${params.actionId}`,\n              method: 'DELETE',\n            };\n          },\n          invalidatesTags: (result, error, arg) => [\n            { type: 'Release', id: 'LIST' },\n            { type: 'Release', id: arg.params.releaseId },\n            { type: 'ReleaseAction', id: 'LIST' },\n            { type: 'EntriesInRelease' },\n            'UpcomingReleasesList',\n          ],\n        }),\n        publishRelease: build.mutation<PublishRelease.Response, PublishRelease.Request['params']>({\n          query({ id }) {\n            return {\n              url: `/content-releases/${id}/publish`,\n              method: 'POST',\n            };\n          },\n          invalidatesTags: (result, error, arg) => [\n            { type: 'Release', id: arg.id },\n            { type: 'Document' },\n            'UpcomingReleasesList',\n          ],\n        }),\n        deleteRelease: build.mutation<DeleteRelease.Response, DeleteRelease.Request['params']>({\n          query({ id }) {\n            return {\n              url: `/content-releases/${id}`,\n              method: 'DELETE',\n            };\n          },\n          invalidatesTags: () => [\n            { type: 'Release', id: 'LIST' },\n            { type: 'EntriesInRelease' },\n            'UpcomingReleasesList',\n          ],\n        }),\n        getMappedEntriesInReleases: build.query<\n          MapEntriesToReleases.Response['data'],\n          MapEntriesToReleases.Request['query']\n        >({\n          query(params) {\n            return {\n              url: '/content-releases/mapEntriesToReleases',\n              method: 'GET',\n              config: {\n                params,\n              },\n            };\n          },\n          transformResponse(response: MapEntriesToReleases.Response) {\n            return response.data;\n          },\n          providesTags: [{ type: 'EntriesInRelease' }],\n        }),\n        getReleaseSettings: build.query<GetSettings.Response, GetSettings.Request | void>({\n          query: () => '/content-releases/settings',\n          providesTags: [{ type: 'ReleaseSettings' }],\n        }),\n        updateReleaseSettings: build.mutation<void, UpdateSettings.Request['body']>({\n          query(data) {\n            return {\n              url: '/content-releases/settings',\n              method: 'PUT',\n              data,\n            };\n          },\n          invalidatesTags: [{ type: 'ReleaseSettings' }, 'UpcomingReleasesList'],\n        }),\n      };\n    },\n  });\n\nconst {\n  useGetReleasesQuery,\n  useGetReleasesForEntryQuery,\n  useGetReleaseQuery,\n  useGetReleaseActionsQuery,\n  useCreateReleaseMutation,\n  useCreateReleaseActionMutation,\n  useCreateManyReleaseActionsMutation,\n  useUpdateReleaseMutation,\n  useUpdateReleaseActionMutation,\n  usePublishReleaseMutation,\n  useDeleteReleaseActionMutation,\n  useDeleteReleaseMutation,\n  useGetMappedEntriesInReleasesQuery,\n  useGetReleaseSettingsQuery,\n  useUpdateReleaseSettingsMutation,\n} = releaseApi;\n\nexport {\n  useGetReleasesQuery,\n  useGetReleasesForEntryQuery,\n  useGetReleaseQuery,\n  useGetReleaseActionsQuery,\n  useCreateReleaseMutation,\n  useCreateReleaseActionMutation,\n  useCreateManyReleaseActionsMutation,\n  useUpdateReleaseMutation,\n  useUpdateReleaseActionMutation,\n  usePublishReleaseMutation,\n  useDeleteReleaseActionMutation,\n  useDeleteReleaseMutation,\n  useGetMappedEntriesInReleasesQuery,\n  useGetReleaseSettingsQuery,\n  useUpdateReleaseSettingsMutation,\n  releaseApi,\n};\n"],"names":["extendInvalidatesTags","endpoint","extraTags","originalInvalidatesTags","invalidatesTags","newInvalidatesTags","result","err","args","meta","originalTags","Object","assign","releaseApi","adminApi","enhanceEndpoints","addTagTypes","endpoints","updateDocument","type","id","deleteDocument","deleteManyDocuments","discardDocument","createWorkflow","updateWorkflow","deleteWorkflow","injectEndpoints","build","getReleasesForEntry","query","params","url","method","config","providesTags","data","map","getReleases","page","pageSize","filters","releasedAt","$notNull","transformResponse","response","arg","releasedAtValue","isActiveDoneTab","newResponse","activeTab","getRelease","error","getReleaseActions","releaseId","createRelease","mutation","updateRelease","createReleaseAction","body","createManyReleaseActions","updateReleaseAction","actionId","res","onQueryStarted","actionPath","dispatch","queryFulfilled","paramsWithoutActionId","patchResult","util","updateQueryData","draft","key","index","action","undo","deleteReleaseAction","publishRelease","deleteRelease","getMappedEntriesInReleases","getReleaseSettings","updateReleaseSettings","useGetReleasesQuery","useGetReleasesForEntryQuery","useGetReleaseQuery","useGetReleaseActionsQuery","useCreateReleaseMutation","useCreateReleaseActionMutation","useCreateManyReleaseActionsMutation","useUpdateReleaseMutation","useUpdateReleaseActionMutation","usePublishReleaseMutation","useDeleteReleaseActionMutation","useDeleteReleaseMutation","useGetMappedEntriesInReleasesQuery","useGetReleaseSettingsQuery","useUpdateReleaseSettingsMutation"],"mappings":"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"}