UNPKG

react-application-core

Version:

A react-based application core for the business applications.

123 lines 5.73 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GooglePlaceApi = void 0; var inversify_1 = require("inversify"); var BPromise = require("bluebird"); var di_1 = require("../../../di"); var definition_1 = require("../../../definition"); var util_1 = require("../../../util"); var GooglePlaceApi = /** @class */ (function () { function GooglePlaceApi() { var _this = this; /** * @stable [10.01.2020] * @param {(resolve: (value?: TResult) => void) => void} callback * @returns {Bluebird<TResult>} */ this.makePromise = function (callback) { return new BPromise(function (resolve) { return (_this.asyncLibManager .loadLib({ alias: definition_1.AsyncLibsEnum.GOOGLE_MAPS }) .then(function () { callback(resolve); })); }); }; } /** * @stable [09.01.2020] * @param {IPlaceGeoCodeRequestEntity} req * @returns {Bluebird<IPlaceEntity[]> | AnyT} */ GooglePlaceApi.prototype.getPlaceGeoCode = function (req) { var _this = this; var request = util_1.FilterUtils.notNilValuesFilter(__assign({ placeId: req.placeId }, (util_1.ConditionUtils.ifNotNilThanValue(util_1.NvlUtils.nvl(req.lat, req.lng), function () { return ({ location: { lat: req.lat, lng: req.lng } }); })))); return this.makePromise(function (resolve) { new google.maps.Geocoder().geocode(request, function (result) { if (util_1.ObjectUtils.isObjectNotEmpty(result)) { var converter = _this.fieldConverter.converter({ from: definition_1.FieldConverterTypesEnum.GEO_CODER_RESULT, to: definition_1.FieldConverterTypesEnum.PLACE_ENTITY, }); if (util_1.TypeUtils.isFn(converter)) { resolve(result.map(converter)); } else { resolve(result); } } else { resolve([]); } }); }); }; /** * @stable [10.01.2020] * @param {ISearchPlacesEntity} request * @returns {Bluebird<ISearchPlaceEntity[]> | AnyT} */ GooglePlaceApi.prototype.searchPlaces = function (request) { var _this = this; request = util_1.NvlUtils.nvl(request, {}); var _a = request.query, query = _a === void 0 ? ' ' : _a; return this.makePromise(function (resolve) { var searchService = new google.maps.places.AutocompleteService(); searchService.getPlacePredictions(__assign(__assign({}, _this.getDefaultParams(request.country)), { input: query }), function (result) { resolve((result || []).map(function (entity) { return ({ id: entity.place_id || util_1.UuidUtils.uuid(), name: entity.description, }); })); }); }); }; /** * @stable [11.01.2020] * @param {string} requestCountry * @returns {IKeyValue} */ GooglePlaceApi.prototype.getDefaultParams = function (requestCountry) { var _a = (this.settings || {}).googleMaps, googleMaps = _a === void 0 ? {} : _a; var _b = googleMaps.componentRestrictions, componentRestrictions = _b === void 0 ? {} : _b; var _c = (componentRestrictions || {}).country, country = _c === void 0 ? {} : _c; return util_1.FilterUtils.notNilValuesFilter({ componentRestrictions: util_1.FilterUtils.notNilValuesFilter({ country: util_1.NvlUtils.nvl(requestCountry, country) }), }); }; __decorate([ di_1.lazyInject(di_1.DI_TYPES.AsyncLibManager), __metadata("design:type", Object) ], GooglePlaceApi.prototype, "asyncLibManager", void 0); __decorate([ di_1.lazyInject(di_1.DI_TYPES.FieldConverter), __metadata("design:type", Object) ], GooglePlaceApi.prototype, "fieldConverter", void 0); __decorate([ di_1.lazyInject(di_1.DI_TYPES.Settings), __metadata("design:type", Object) ], GooglePlaceApi.prototype, "settings", void 0); GooglePlaceApi = __decorate([ inversify_1.injectable() ], GooglePlaceApi); return GooglePlaceApi; }()); exports.GooglePlaceApi = GooglePlaceApi; //# sourceMappingURL=google-place-api.service.js.map