{
  "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"]
}