{ "version": 3, "sources": ["../../../../../../owl-nest/ulule/features/project/src/actions/project.ts"], "sourcesContent": ["import * as api from '@owl-nest/api-client/latest'\nimport * as models from '@owl-nest/models'\nimport * as services from '@owl-nest/services'\n\nimport type { RequestFailure, ApiResponse, RequestSuccess } from '@owl-nest/api-client'\nimport type { PromiseAction } from '@owl-nest/redux-wrapper'\nimport type { RootState } from '../reducers'\n\nexport enum ACTION_TYPE {\n LIKE_PROJECT_FAILURE = 'LIKE_PROJECT_FAILURE',\n LIKE_PROJECT_REQUEST = 'LIKE_PROJECT_REQUEST',\n LIKE_PROJECT_SUCCESS = 'LIKE_PROJECT_SUCCESS',\n\n UNLIKE_PROJECT_FAILURE = 'UNLIKE_PROJECT_FAILURE',\n UNLIKE_PROJECT_REQUEST = 'UNLIKE_PROJECT_REQUEST',\n UNLIKE_PROJECT_SUCCESS = 'UNLIKE_PROJECT_SUCCESS',\n\n UPDATE_REQUEST = 'PROJECT.UPDATE_REQUEST',\n UPDATE_FAILURE = 'PROJECT.UPDATE_FAILURE',\n UPDATE_SUCCESS = 'PROJECT.UPDATE_SUCCESS',\n\n COMPUTE_EXAMPLES_REQUEST = 'PROJECT.COMPUTE_EXAMPLES_REQUEST',\n COMPUTE_EXAMPLES_FAILURE = 'PROJECT.COMPUTE_EXAMPLES_FAILURE',\n COMPUTE_EXAMPLES_SUCCESS = 'PROJECT.COMPUTE_EXAMPLES_SUCCESS',\n\n SUBMIT_REQUEST = 'PROJECT.SUBMIT_REQUEST',\n SUBMIT_FAILURE = 'PROJECT.SUBMIT_FAILURE',\n SUBMIT_SUCCESS = 'PROJECT.SUBMIT_SUCCESS',\n\n LOAD_REQUEST = 'PROJECT.LOAD_REQUEST',\n LOAD_FAILURE = 'PROJECT.LOAD_FAILURE',\n LOAD_SUCCESS = 'PROJECT.LOAD_SUCCESS',\n}\n\ntype LikeProjectFailure = { type: ACTION_TYPE.LIKE_PROJECT_FAILURE }\ntype LikeProjectRequest = { type: ACTION_TYPE.LIKE_PROJECT_REQUEST }\ntype LikeProjectSuccess = { type: ACTION_TYPE.LIKE_PROJECT_SUCCESS }\n\nexport type ProjectAction =\n | LikeProjectFailure\n | LikeProjectRequest\n | LikeProjectSuccess\n | UpdateRequest\n | UpdateFailure\n | UpdateSuccess\n | ComputeExampleRequest\n | ComputeExampleFailure\n | ComputeExampleSuccess\n | SubmitRequest\n | SubmitFailure\n | SubmitSuccess\n | LoadRequest\n | LoadFailure\n | LoadSuccess\n\nexport function likeProject(projectId: number): PromiseAction<RootState, RequestSuccess<void>> {\n return {\n types: [ACTION_TYPE.LIKE_PROJECT_REQUEST, ACTION_TYPE.LIKE_PROJECT_SUCCESS, ACTION_TYPE.LIKE_PROJECT_FAILURE],\n promise: async () => {\n const response = await api.api.post.likeProject({\n urlParams: { projectId: String(projectId) },\n })\n\n // TODO: HACK: Temporary, until we discuss a better behaviour with Product\n return response.doThrow()\n },\n }\n}\n\n// TODO: FIXME: any\nexport function unlikeProject(projectId: number): any {\n return {\n types: [ACTION_TYPE.UNLIKE_PROJECT_REQUEST, ACTION_TYPE.UNLIKE_PROJECT_SUCCESS, ACTION_TYPE.UNLIKE_PROJECT_FAILURE],\n promise: async () => {\n const response = await api.api.post.unlikeProject({\n urlParams: { projectId: String(projectId) },\n })\n\n // TODO: HACK: Temporary, until we discuss a better behaviour with Product\n return response.doThrow()\n },\n }\n}\n\ntype UpdateRequest = { type: ACTION_TYPE.UPDATE_REQUEST }\ntype UpdateFailure = { type: ACTION_TYPE.UPDATE_FAILURE; failure: RequestFailure }\ntype UpdateSuccess = { type: ACTION_TYPE.UPDATE_SUCCESS; success: models.project.ProjectForOwner }\n\nexport function update(\n project: models.project.ProjectForOwner,\n update: models.project.UpdateProject,\n): PromiseAction<ApiResponse<models.project.ProjectForOwner>> {\n return {\n types: [ACTION_TYPE.UPDATE_REQUEST, ACTION_TYPE.UPDATE_SUCCESS, ACTION_TYPE.UPDATE_FAILURE],\n promise: async () => {\n return services.project.update(project.id, update, { extraFields: models.project.OWNER_EXTRA_FIELDS })\n },\n }\n}\n\ntype ComputeExampleRequest = { type: ACTION_TYPE.COMPUTE_EXAMPLES_REQUEST }\ntype ComputeExampleFailure = { type: ACTION_TYPE.COMPUTE_EXAMPLES_FAILURE; failure: RequestFailure }\ntype ComputeExampleSuccess = {\n type: ACTION_TYPE.COMPUTE_EXAMPLES_SUCCESS\n success: api.ProjectExamplesResponse | undefined\n}\n\nexport function computeExamples(\n project: api.Project,\n config: api.ProjectExamplesRequest,\n): PromiseAction<ApiResponse<api.ProjectExamplesResponse | undefined>> {\n return {\n types: [\n ACTION_TYPE.COMPUTE_EXAMPLES_REQUEST,\n ACTION_TYPE.COMPUTE_EXAMPLES_SUCCESS,\n ACTION_TYPE.COMPUTE_EXAMPLES_FAILURE,\n ],\n promise: async () => {\n return services.project.computeExamples(project.id, config)\n },\n }\n}\n\ntype SubmitRequest = { type: ACTION_TYPE.SUBMIT_REQUEST }\ntype SubmitFailure = { type: ACTION_TYPE.SUBMIT_FAILURE; failure: RequestFailure }\ntype SubmitSuccess = { type: ACTION_TYPE.SUBMIT_SUCCESS; success: models.project.ProjectForOwner }\n\nexport function submit(\n project: models.project.ProjectForOwner,\n config: api.ProjectSubmitRequest,\n): PromiseAction<RootState, ApiResponse<models.project.ProjectForOwner>> {\n return {\n types: [ACTION_TYPE.SUBMIT_REQUEST, ACTION_TYPE.SUBMIT_SUCCESS, ACTION_TYPE.SUBMIT_FAILURE],\n promise: async (_, state) => {\n const result = await services.project.submit(project.id, config)\n // FIXME: if `POST /projects/:id/submit` returned the project, this second call\n // would not be needed\n return result.nextAsync<models.project.ProjectForOwner>(async () => {\n return await services.project.load(project.slug, {\n withToken: state.user.identity.type === 'loggedin',\n extraFields: models.project.OWNER_EXTRA_FIELDS,\n })\n })\n },\n }\n}\n\ntype LoadRequest = { type: ACTION_TYPE.LOAD_REQUEST }\ntype LoadFailure = { type: ACTION_TYPE.LOAD_FAILURE; failure: RequestFailure }\ntype LoadSuccess = { type: ACTION_TYPE.LOAD_SUCCESS; success: models.project.ProjectForOwner }\n\nexport function load(slug: string): PromiseAction<RootState, ApiResponse<models.project.ProjectForOwner>> {\n return {\n types: [ACTION_TYPE.LOAD_REQUEST, ACTION_TYPE.LOAD_SUCCESS, ACTION_TYPE.LOAD_FAILURE],\n promise: async (_, state) => {\n return await services.project.load(slug, {\n withToken: state.user.identity.type === 'loggedin',\n extraFields: models.project.OWNER_EXTRA_FIELDS,\n })\n },\n }\n}\n"], "mappings": "+LAAAA,IAAAC,IAuDO,SAASC,EAAYC,EAAmE,CAC7F,MAAO,CACL,MAAO,CAAC,uBAAkC,uBAAkC,sBAAgC,EAC5G,QAAS,UACU,MAAUC,EAAI,KAAK,YAAY,CAC9C,UAAW,CAAE,UAAW,OAAOD,CAAS,CAAE,CAC5C,CAAC,GAGe,QAAQ,CAE5B,CACF,CAGO,SAASE,EAAcF,EAAwB,CACpD,MAAO,CACL,MAAO,CAAC,yBAAoC,yBAAoC,wBAAkC,EAClH,QAAS,UACU,MAAUC,EAAI,KAAK,cAAc,CAChD,UAAW,CAAE,UAAW,OAAOD,CAAS,CAAE,CAC5C,CAAC,GAGe,QAAQ,CAE5B,CACF,CAMO,SAASG,EACdC,EACAD,EAC4D,CAC5D,MAAO,CACL,MAAO,CAAC,yBAA4B,yBAA4B,wBAA0B,EAC1F,QAAS,SACSE,EAAQ,OAAOD,EAAQ,GAAID,EAAQ,CAAE,YAAoBE,EAAQ,kBAAmB,CAAC,CAEzG,CACF,CASO,SAASC,EACdF,EACAG,EACqE,CACrE,MAAO,CACL,MAAO,CACL,mCACA,mCACA,kCACF,EACA,QAAS,SACSF,EAAQ,gBAAgBD,EAAQ,GAAIG,CAAM,CAE9D,CACF,CAMO,SAASC,EACdJ,EACAG,EACuE,CACvE,MAAO,CACL,MAAO,CAAC,yBAA4B,yBAA4B,wBAA0B,EAC1F,QAAS,MAAOE,EAAGC,KACF,MAAeL,EAAQ,OAAOD,EAAQ,GAAIG,CAAM,GAGjD,UAA0C,SAC/C,MAAeF,EAAQ,KAAKD,EAAQ,KAAM,CAC/C,UAAWM,EAAM,KAAK,SAAS,OAAS,WACxC,YAAoBL,EAAQ,kBAC9B,CAAC,CACF,CAEL,CACF,CAMO,SAASM,EAAKC,EAAqF,CACxG,MAAO,CACL,MAAO,CAAC,uBAA0B,uBAA0B,sBAAwB,EACpF,QAAS,MAAOH,EAAGC,IACV,MAAeL,EAAQ,KAAKO,EAAM,CACvC,UAAWF,EAAM,KAAK,SAAS,OAAS,WACxC,YAAoBL,EAAQ,kBAC9B,CAAC,CAEL,CACF", "names": ["init_define_process_env", "init_sentry_release_injection_stub", "likeProject", "projectId", "api", "unlikeProject", "update", "project", "project_exports", "computeExamples", "config", "submit", "_", "state", "load", "slug"] }