{"version":3,"mappings":"kIAaK,IAAAA,OACHA,EAAA,QAAqB,UACrBA,EAAA,mBAAqB,qBACrBA,EAAA,eAAqB,iBACrBA,EAAA,aAAqB,eAJlBA,OAAA,IA6BC,MAAAC,EAAWC,GACRC,EAAQ,QAAAC,EAAA,IACb,OACE,wBACF,OAED,KAAMC,GACEC,EACL,CAEE,IAAKD,EAAO,iCAAiC,CAC3C,GAAI,mBAAmBH,EAAO,EAAE,EACjC,EACD,OAAU,MACV,SAAU,MACZ,EACA,CACE,qBAAsB,CAAC,CAAC,iBAAAK,KAClBA,IAAqB,IAChBC,EAA2B,WAEhCD,IAAqB,IAChBC,EAA2B,WAG7BA,EAA2B,cACpC,CAEJ,CACD,EACA,KAAK,CAAC,CAAC,KAAAC,MAEJ,CACE,YAAa,UAEb,KAAM,CACJ,GAAIA,EAAK,KAAK,GAEd,UAAwBA,EAAK,KAAK,UAClC,sBAAwBA,EAAK,KAAK,sBAElC,0BAA8BA,EAAK,KAAK,0BACxC,4BAA8BA,EAAK,KAAK,4BAExC,uBAA8BA,EAAK,KAAK,uBACxC,uBAA8BA,EAAK,KAAK,uBACxC,uBAA8BA,EAAK,KAAK,uBAExC,sBAA8BA,EAAK,KAAK,sBAE5C,EAEH,EACA,MAAOC,GAAoB,CAC1B,GAAIA,aAA2B,MACvB,MAAAA,EAGF,MAAE,SAAAC,GAAaD,EACrB,OAAQC,EAAS,OAAQ,CACvB,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACK,OAAC,YAAa,cAA4B,EACpD,IAAK,KACK,OAAC,YAAa,oBAAkC,EAC1D,IAAK,KACK,OAAC,YAAa,oBAAkC,EAC1D,QACU,OAAC,YAAa,gBAA8B,EACxD,CACD","names":["ResultTypeEnums","get_one","inputs","Promise","__vitePreload","Routes","q_ajax_3","http_status_code","AJAX_ERROR_HANDLER_ACTIONS","data","reason_or_error","response"],"ignoreList":[],"sources":["../../../app/assets/javascripts/app/resources/listings/get_one/index.ts"],"sourcesContent":["\nimport Promise from \"plugins/bluebird\"\n\nimport {\n  q_ajax_3,\n  ERROR_HANDLER_ACTIONS as AJAX_ERROR_HANDLER_ACTIONS,\n} from \"app/utils/q_ajax/q_ajax_3\"\n\ninterface Inputs {\n  id: string | number,\n}\n\n/* eslint-disable no-unused-vars */\nenum ResultTypeEnums {\n  SUCCESS =            \"SUCCESS\",\n  RESOURCE_NOT_FOUND = \"RESOURCE_NOT_FOUND\",\n  INPUTS_INVALID =     \"INPUTS_INVALID\",\n  SERVER_ERROR =       \"SERVER_ERROR\",\n}\n/* eslint-enable no-unused-vars */\n\ninterface ListingDetails {\n  id: string,\n\n  is_rental: boolean,\n  is_commercial_listing: boolean,\n\n  is_for_serviced_apartment:    boolean,\n  for_overseas_marketing_only:  boolean,\n\n  is_for_business_center:       boolean,\n  is_for_serviced_office:       boolean,\n  is_for_coworking_space:       boolean,\n\n  is_for_coliving_space:        boolean,\n}\n\ninterface PromiseResolvePayload {\n  result_type: ResultTypeEnums,\n  data?: ListingDetails,\n}\n\nconst get_one = (inputs: Inputs): Promise<PromiseResolvePayload> => {\n  return Promise.resolve(\n    import(\n      \"plugins/js-routes\"\n    )\n  )\n  .then((Routes) => {\n    return q_ajax_3(\n      {\n        // Routes don't encode input automatically\n        url: Routes.get_one_api_web_app_listing_path({\n          id: encodeURIComponent(inputs.id),\n        }),\n        method:   \"GET\",\n        dataType: \"json\",\n      },\n      {\n        custom_error_handler: ({http_status_code}) => {\n          if (http_status_code === 404) {\n            return AJAX_ERROR_HANDLER_ACTIONS.STOP_RETRY\n          }\n          if (http_status_code === 422) {\n            return AJAX_ERROR_HANDLER_ACTIONS.STOP_RETRY\n          }\n\n          return AJAX_ERROR_HANDLER_ACTIONS.CONTINUE_RETRY\n        },\n      },\n    )\n  })\n  .then(({data}) => {\n    return (\n      {\n        result_type: ResultTypeEnums.SUCCESS,\n\n        data: {\n          id: data.data.id,\n\n          is_rental:              data.data.is_rental,\n          is_commercial_listing:  data.data.is_commercial_listing,\n\n          is_for_serviced_apartment:    data.data.is_for_serviced_apartment,\n          for_overseas_marketing_only:  data.data.for_overseas_marketing_only,\n\n          is_for_business_center:       data.data.is_for_business_center,\n          is_for_serviced_office:       data.data.is_for_serviced_office,\n          is_for_coworking_space:       data.data.is_for_coworking_space,\n\n          is_for_coliving_space:        data.data.is_for_coliving_space,\n        },\n      }\n    )\n  })\n  .catch((reason_or_error) => {\n    if (reason_or_error instanceof Error) {\n      throw reason_or_error\n    }\n\n    const { response } = reason_or_error\n    switch (response.status) {\n      case 500:\n      case 502:\n      case 503:\n      case 504:\n        return ({result_type: ResultTypeEnums.SERVER_ERROR})\n      case 404:\n        return ({result_type: ResultTypeEnums.RESOURCE_NOT_FOUND})\n      case 422:\n        return ({result_type: ResultTypeEnums.RESOURCE_NOT_FOUND})\n      default:\n        return ({result_type: ResultTypeEnums.INPUTS_INVALID})\n    }\n  })\n}\n\nexport {\n  get_one,\n  ResultTypeEnums,\n}\n"],"file":"assets/index-DiSGSbNo.js"}