{"version":3,"file":"index-DueVvs0A.js","sources":["../../../app/assets/javascripts/app/resources/listing_search/create/index.ts"],"sourcesContent":["\n// region JS Imports\n\n// region External Modules\nimport Promise from \"plugins/bluebird\"\n\nimport I18n from \"plugins/i18n-js\"\n// endregion External Modules\n\n// region Private Modules\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\nimport {\n captureMessage,\n} from \"app/error_reporting\"\n// endregion Private Modules\n\n// region Public Components\n// endregion Public Components\n\n// region Private Components\n// endregion Private Components\n\n// endregion JS Imports\n\n\n\nimport {\n ListingSearchDataSourceLevelTwoIdentifier,\n} from \"app/resources/listing_search/data_source_level_two_identifier/enum\"\n\ninterface ListingSearchAttributes {\n show_extended_target_record?: boolean,\n [key: string]: any,\n}\n\nexport interface Inputs {\n user_authentication_handle: string,\n listing_search_attributes: ListingSearchAttributes,\n saving_when_only_default_criteria_detected_allowed?: boolean,\n source_identifier: string,\n reject_promotions?: boolean | null,\n\n listing_search_data_source_level_two_identifier?: ListingSearchDataSourceLevelTwoIdentifier,\n}\n\n/* eslint-disable no-unused-vars */\nenum ResultTypeEnums {\n SUCCESS = \"SUCCESS\",\n UNAUTHENTICATED = \"UNAUTHENTICATED\",\n RECORD_WITH_SAME_CRITERIA_EXIST = \"RECORD_WITH_SAME_CRITERIA_EXIST\",\n ONLY_DEFAULT_CRITERIA_DETECTED = \"ONLY_DEFAULT_CRITERIA_DETECTED\",\n INVALID = \"INVALID\",\n SERVER_ERROR = \"SERVER_ERROR\",\n}\n/* eslint-enable no-unused-vars */\n\ntype PromiseResolvePayload = {\n result_type: ResultTypeEnums.SUCCESS,\n data: {\n listing_search_url: string,\n listing_search: ListingSearchAttributes,\n },\n http_response_status_code: number,\n} | {\n result_type: ResultTypeEnums.RECORD_WITH_SAME_CRITERIA_EXIST,\n http_response_status_code: number,\n data: {\n listing_search_url: string,\n }\n} | {\n result_type:\n ResultTypeEnums.ONLY_DEFAULT_CRITERIA_DETECTED |\n ResultTypeEnums.UNAUTHENTICATED |\n ResultTypeEnums.SERVER_ERROR,\n http_response_status_code: number,\n data: null,\n} | {\n result_type: ResultTypeEnums.INVALID,\n http_response_status_code: number | null,\n data: null,\n}\n\nconst create = ({\n user_authentication_handle,\n listing_search_attributes,\n\n source_identifier,\n\n saving_when_only_default_criteria_detected_allowed,\n reject_promotions,\n\n listing_search_data_source_level_two_identifier,\n}: Inputs): Promise => {\n if (listing_search_attributes == null) {\n\n captureMessage(\n `listing_search_attributes is null when trying to create listing_search from <${source_identifier}>`,\n {\n user_authentication_handle: user_authentication_handle,\n listing_search_attributes: listing_search_attributes,\n\n source_identifier: source_identifier,\n\n saving_when_only_default_criteria_detected_allowed:\n saving_when_only_default_criteria_detected_allowed,\n },\n )\n\n return Promise.resolve(({\n result_type: ResultTypeEnums.INVALID,\n http_response_status_code: null,\n data: null,\n }))\n }\n\n const request_inputs: {\n [key: string]: string | boolean | null | undefined | {\n [key: string]: string | boolean,\n },\n } = {\n user_authentication_handle: user_authentication_handle,\n listing_search_attributes: listing_search_attributes,\n locale: I18n.locale,\n show_extended_target_record: listing_search_attributes.show_extended_target_record || false,\n\n reject_promotions:\n reject_promotions,\n saving_when_only_default_criteria_detected_allowed:\n saving_when_only_default_criteria_detected_allowed || false,\n }\n if (listing_search_data_source_level_two_identifier != null) {\n request_inputs.listing_search_data_source_level_two_identifier =\n listing_search_data_source_level_two_identifier\n }\n\n return q_ajax_3(\n {\n url: \"/api/web_app/listing_searches\",\n type: \"POST\",\n\n // Expect JSON in response\n dataType: \"JSON\",\n\n // Sending JSON to server\n contentType: \"application/json; charset=utf-8\",\n data: JSON.stringify(request_inputs),\n },\n {\n custom_error_handler: ({http_status_code}) => {\n if (http_status_code === 401) {\n return AJAX_ERROR_HANDLER_ACTIONS.STOP_RETRY\n }\n if (http_status_code === 409) {\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 .then(({data, response}) => {\n return (\n {\n result_type: ResultTypeEnums.SUCCESS,\n http_response_status_code: response.status,\n\n data: {\n listing_search_url: data.data.listing_search_url,\n listing_search: {\n id: data.data.listing_search.id,\n },\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 ({\n result_type: ResultTypeEnums.SERVER_ERROR,\n http_response_status_code: response.status,\n data: null,\n })\n case 401:\n return ({\n result_type: ResultTypeEnums.UNAUTHENTICATED,\n http_response_status_code: response.status,\n data: null,\n })\n case 409:\n return response.json()\n .then((responseJSON: any) => {\n return ({\n result_type: ResultTypeEnums.RECORD_WITH_SAME_CRITERIA_EXIST,\n http_response_status_code: response.status,\n\n data: {\n listing_search_url: responseJSON.data.listing_search_url,\n },\n })\n })\n case 422: {\n return response.json()\n .then((responseJSON: any) => {\n if (responseJSON?.data?.error_type === \"only_default_criteria_detected\") {\n return ({\n result_type: ResultTypeEnums.ONLY_DEFAULT_CRITERIA_DETECTED,\n http_response_status_code: response.status,\n data: null,\n })\n }\n\n return ({\n result_type: ResultTypeEnums.INVALID,\n http_response_status_code: response.status,\n data: null,\n })\n })\n }\n default:\n return ({\n result_type: ResultTypeEnums.INVALID,\n http_response_status_code: response.status,\n data: null,\n })\n }\n })\n}\n\nexport {\n create as default,\n create,\n ResultTypeEnums,\n ListingSearchDataSourceLevelTwoIdentifier,\n}\n"],"names":["ResultTypeEnums","create","user_authentication_handle","listing_search_attributes","source_identifier","saving_when_only_default_criteria_detected_allowed","reject_promotions","listing_search_data_source_level_two_identifier","captureMessage","Promise","request_inputs","I18n","q_ajax_3","http_status_code","AJAX_ERROR_HANDLER_ACTIONS","data","response","reason_or_error","responseJSON","_a"],"mappings":"iLAmDK,IAAAA,GAAAA,IACHA,EAAA,QAAU,UACVA,EAAA,gBAAkB,kBAClBA,EAAA,gCAAkC,kCAClCA,EAAA,+BAAiC,iCACjCA,EAAA,QAAU,UACVA,EAAA,aAAe,eANZA,IAAAA,GAAA,CAAA,CAAA,EAoCL,MAAMC,EAAS,CAAC,CACd,2BAAAC,EACA,0BAAAC,EAEA,kBAAAC,EAEA,mDAAAC,EACA,kBAAAC,EAEA,gDAAAC,CACF,IAA8C,CAC5C,GAAIJ,GAA6B,KAE/B,OAAAK,EACE,gFAAgF,OAAAJ,EAAiB,KACjG,CACE,2BAAAF,EACA,0BAAAC,EAEA,kBAAAC,EAEA,mDAAAC,CAAA,CAGJ,EAEOI,EAAQ,QAAS,CACtB,YAA4B,UAC5B,0BAA4B,KAC5B,KAA4B,IAAA,CAC5B,EAGJ,MAAMC,EAIF,CACF,2BAAAR,EACA,0BAAAC,EACA,OAA8BQ,EAAK,OACnC,4BAA8BR,EAA0B,6BAA+B,GAEvF,kBAAAG,EAEA,mDACED,GAAsD,EAC1D,EACA,OAAIE,GAAmD,OACrDG,EAAe,gDACbH,GAGGK,EACL,CACE,IAAU,gCACV,KAAU,OAGV,SAAU,OAGV,YAAc,kCACd,KAAc,KAAK,UAAUF,CAAc,CAC7C,EACA,CACE,qBAAsB,CAAC,CAAC,iBAAAG,KAClBA,IAAqB,IAChBC,EAA2B,WAEhCD,IAAqB,IAChBC,EAA2B,WAEhCD,IAAqB,IAChBC,EAA2B,WAG7BA,EAA2B,cACpC,GAGH,KAAK,CAAC,CAAC,KAAAC,EAAM,SAAAC,MAEV,CACE,YAA4B,UAC5B,0BAA4BA,EAAS,OAErC,KAAM,CACJ,mBAAoBD,EAAK,KAAK,mBAC9B,eAAoB,CAClB,GAAIA,EAAK,KAAK,eAAe,EAAA,CAC/B,CAEJ,EAEH,EACA,MAAOE,GAAoB,CAC1B,GAAIA,aAA2B,MACvB,MAAAA,EAGF,KAAA,CAAE,SAAAD,GAAaC,EACrB,OAAQD,EAAS,OAAQ,CACvB,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACK,MAAA,CACN,YAA4B,eAC5B,0BAA4BA,EAAS,OACrC,KAA4B,IAC9B,EACF,IAAK,KACK,MAAA,CACN,YAA4B,kBAC5B,0BAA4BA,EAAS,OACrC,KAA4B,IAC9B,EACF,IAAK,KACH,OAAOA,EAAS,KAAA,EACf,KAAME,IACG,CACN,YAA4B,kCAC5B,0BAA4BF,EAAS,OAErC,KAAM,CACJ,mBAAoBE,EAAa,KAAK,kBAAA,CAE1C,EACD,EACH,IAAK,KACH,OAAOF,EAAS,KAAA,EACf,KAAME,GAAsB,OACvB,QAAAC,EAAAD,GAAA,YAAAA,EAAc,OAAd,YAAAC,EAAoB,cAAe,iCAC7B,CACN,YAA4B,iCAC5B,0BAA4BH,EAAS,OACrC,KAA4B,IAC9B,EAGM,CACN,YAA4B,UAC5B,0BAA4BA,EAAS,OACrC,KAA4B,IAC9B,CAAA,CACD,EAEH,QACU,MAAA,CACN,YAA4B,UAC5B,0BAA4BA,EAAS,OACrC,KAA4B,IAC9B,CAAA,CACJ,CACD,CACH"}