UNPKG

@cause-911/core

Version:

Run `npm install @cause-911/core --save` to add this library to your project

173 lines 12.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { CoreService } from './../../core.service'; import { EventEmitter, Injectable, Output } from '@angular/core'; import { Observable } from 'rxjs'; import { ApiLookupService } from './api-lookup.service'; import { Browser } from '../classes/browser'; import { OperatingSystem } from '../classes/operating-system'; import * as i0 from "@angular/core"; import * as i1 from "../../core.service"; import * as i2 from "./api-lookup.service"; export class ClientInformationService { /** * @param {?} coreService * @param {?} apiLookup */ constructor(coreService, apiLookup) { this.apiLookup = apiLookup; this.visibilityChange = new EventEmitter(); this.config = coreService.getConfig(); document.addEventListener('visibilitychange webkitvisibilitychange mozvisibilitychange msvisibilitychange', (/** * @return {?} */ () => this.onVisibilityChange(document.visibilityState === 'visible'))); } /** * @return {?} */ getCoordinates() { return new Observable((/** * @param {?} observer * @return {?} */ observer => { if (navigator && 'geolocation' in navigator) { navigator.geolocation.getCurrentPosition((/** * @param {?} position * @return {?} */ position => { observer.next([ position.coords.longitude, position.coords.latitude, ]); observer.complete(); }), (/** * @return {?} */ () => this.getCoordinatesWithClientIP(observer))); } else { this.getCoordinatesWithClientIP(observer); } })); } /** * @return {?} */ getLanguage() { return new Observable((/** * @param {?} observer * @return {?} */ observer => { /** @type {?} */ let lang = [this.config.locale]; if (navigator && 'languages' in navigator) { lang = (/** @type {?} */ (navigator.languages)); } else if (navigator && 'language' in navigator) { lang = [navigator.language]; } else if (navigator && 'userLanguage' in navigator) { lang = [navigator['userLanguage']]; } observer.next(lang); observer.complete(); })); } /** * @return {?} */ getBrowser() { return new Observable((/** * @param {?} observer * @return {?} */ observer => { /** @type {?} */ const browser = new Browser(); observer.next(browser); observer.complete(); })); } /** * @return {?} */ getOperatingSystem() { return new Observable((/** * @param {?} observer * @return {?} */ observer => { /** @type {?} */ const os = new OperatingSystem(); observer.next(os); observer.complete(); })); } /** * @private * @param {?} observer * @return {?} */ getCoordinatesWithClientIP(observer) { this.apiLookup.getIpInformation().subscribe((/** * @param {?} info * @return {?} */ info => { observer.next([ info.longitude, info.latitude, ]); observer.complete(); }), (/** * @return {?} */ () => { observer.next([-71.00, 48.00]); observer.error('Can\'t find the client location'); })); } /** * @private * @param {?} visible * @return {?} */ onVisibilityChange(visible) { this.visibilityChange.emit(visible); } } ClientInformationService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ ClientInformationService.ctorParameters = () => [ { type: CoreService }, { type: ApiLookupService } ]; ClientInformationService.propDecorators = { visibilityChange: [{ type: Output }] }; /** @nocollapse */ ClientInformationService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ClientInformationService_Factory() { return new ClientInformationService(i0.ɵɵinject(i1.CoreService), i0.ɵɵinject(i2.ApiLookupService)); }, token: ClientInformationService, providedIn: "root" }); if (false) { /** * @type {?} * @private */ ClientInformationService.prototype.config; /** @type {?} */ ClientInformationService.prototype.visibilityChange; /** * @type {?} * @private */ ClientInformationService.prototype.apiLookup; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWluZm9ybWF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY2F1c2UtOTExL2NvcmUvIiwic291cmNlcyI6WyJsaWIvc2hhcmVkL3NlcnZpY2VzL2NsaWVudC1pbmZvcm1hdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUs1RCxNQUFNLE9BQU8sd0JBQXdCOzs7OztJQU1uQyxZQUNJLFdBQXdCLEVBQ2hCLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBSmhDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFNM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFdEMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGdGQUFnRjs7O1FBQ3RHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxFQUN4RSxDQUFDO0lBQ0osQ0FBQzs7OztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLFVBQVU7Ozs7UUFBQyxRQUFRLENBQUMsRUFBRTtZQUMvQixJQUFJLFNBQVMsSUFBSSxhQUFhLElBQUksU0FBUyxFQUFFO2dCQUMzQyxTQUFTLENBQUMsV0FBVyxDQUFDLGtCQUFrQjs7OztnQkFBQyxRQUFRLENBQUMsRUFBRTtvQkFDbEQsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDWixRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVM7d0JBQ3pCLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUTtxQkFDekIsQ0FBQyxDQUFDO29CQUNILFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQzs7O2dCQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDO2FBQ3JEO2lCQUFNO2dCQUNMLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMzQztRQUNILENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLFVBQVU7Ozs7UUFBQyxRQUFRLENBQUMsRUFBRTs7Z0JBQzNCLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBRS9CLElBQUksU0FBUyxJQUFJLFdBQVcsSUFBSSxTQUFTLEVBQUU7Z0JBQ3pDLElBQUksR0FBRyxtQkFBVSxTQUFTLENBQUMsU0FBUyxFQUFBLENBQUM7YUFDdEM7aUJBQU0sSUFBSSxTQUFTLElBQUksVUFBVSxJQUFJLFNBQVMsRUFBRTtnQkFDL0MsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzdCO2lCQUFNLElBQUksU0FBUyxJQUFJLGNBQWMsSUFBSSxTQUFTLEVBQUU7Z0JBQ25ELElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2FBQ3BDO1lBRUQsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRU0sVUFBVTtRQUNmLE9BQU8sSUFBSSxVQUFVOzs7O1FBQUMsUUFBUSxDQUFDLEVBQUU7O2tCQUN6QixPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUU7WUFFN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRU0sa0JBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxVQUFVOzs7O1FBQUMsUUFBUSxDQUFDLEVBQUU7O2tCQUN6QixFQUFFLEdBQUcsSUFBSSxlQUFlLEVBQUU7WUFFaEMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7Ozs7SUFFTywwQkFBMEIsQ0FBQyxRQUFRO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTOzs7O1FBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakQsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDWixJQUFJLENBQUMsU0FBUztnQkFDZCxJQUFJLENBQUMsUUFBUTthQUNkLENBQUMsQ0FBQztZQUNILFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixDQUFDOzs7UUFBRSxHQUFHLEVBQUU7WUFDTixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMvQixRQUFRLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7Ozs7SUFFTyxrQkFBa0IsQ0FBQyxPQUFnQjtRQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OztZQXRGRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7WUFWUSxXQUFXO1lBR1osZ0JBQWdCOzs7K0JBV3JCLE1BQU07Ozs7Ozs7O0lBRlAsMENBQThCOztJQUU5QixvREFDNkM7Ozs7O0lBSXpDLDZDQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcmVTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9jb3JlLnNlcnZpY2UnO1xuaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBcGlMb29rdXBTZXJ2aWNlfSBmcm9tICcuL2FwaS1sb29rdXAuc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL2NsYXNzZXMvY29uZmlndXJhdGlvbic7XG5pbXBvcnQge0Jyb3dzZXJ9IGZyb20gJy4uL2NsYXNzZXMvYnJvd3Nlcic7XG5pbXBvcnQge09wZXJhdGluZ1N5c3RlbX0gZnJvbSAnLi4vY2xhc3Nlcy9vcGVyYXRpbmctc3lzdGVtJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2xpZW50SW5mb3JtYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb25maWc6IENvbmZpZ3VyYXRpb247XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB2aXNpYmlsaXR5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgY29yZVNlcnZpY2U6IENvcmVTZXJ2aWNlLFxuICAgICAgcHJpdmF0ZSBhcGlMb29rdXA6IEFwaUxvb2t1cFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb3JlU2VydmljZS5nZXRDb25maWcoKTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2Ugd2Via2l0dmlzaWJpbGl0eWNoYW5nZSBtb3p2aXNpYmlsaXR5Y2hhbmdlIG1zdmlzaWJpbGl0eWNoYW5nZScsXG4gICAgICAgICgpID0+IHRoaXMub25WaXNpYmlsaXR5Q2hhbmdlKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gJ3Zpc2libGUnKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29vcmRpbmF0ZXMoKTogT2JzZXJ2YWJsZTxudW1iZXJbXT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICBpZiAobmF2aWdhdG9yICYmICdnZW9sb2NhdGlvbicgaW4gbmF2aWdhdG9yKSB7XG4gICAgICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24gPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoW1xuICAgICAgICAgICAgcG9zaXRpb24uY29vcmRzLmxvbmdpdHVkZSxcbiAgICAgICAgICAgIHBvc2l0aW9uLmNvb3Jkcy5sYXRpdHVkZSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9LCAoKSA9PiB0aGlzLmdldENvb3JkaW5hdGVzV2l0aENsaWVudElQKG9ic2VydmVyKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdldENvb3JkaW5hdGVzV2l0aENsaWVudElQKG9ic2VydmVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYW5ndWFnZSgpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIGxldCBsYW5nID0gW3RoaXMuY29uZmlnLmxvY2FsZV07XG5cbiAgICAgIGlmIChuYXZpZ2F0b3IgJiYgJ2xhbmd1YWdlcycgaW4gbmF2aWdhdG9yKSB7XG4gICAgICAgIGxhbmcgPSA8c3RyaW5nW10+bmF2aWdhdG9yLmxhbmd1YWdlcztcbiAgICAgIH0gZWxzZSBpZiAobmF2aWdhdG9yICYmICdsYW5ndWFnZScgaW4gbmF2aWdhdG9yKSB7XG4gICAgICAgIGxhbmcgPSBbbmF2aWdhdG9yLmxhbmd1YWdlXTtcbiAgICAgIH0gZWxzZSBpZiAobmF2aWdhdG9yICYmICd1c2VyTGFuZ3VhZ2UnIGluIG5hdmlnYXRvcikge1xuICAgICAgICBsYW5nID0gW25hdmlnYXRvclsndXNlckxhbmd1YWdlJ11dO1xuICAgICAgfVxuXG4gICAgICBvYnNlcnZlci5uZXh0KGxhbmcpO1xuICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRCcm93c2VyKCk6IE9ic2VydmFibGU8QnJvd3Nlcj4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICBjb25zdCBicm93c2VyID0gbmV3IEJyb3dzZXIoKTtcblxuICAgICAgb2JzZXJ2ZXIubmV4dChicm93c2VyKTtcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0T3BlcmF0aW5nU3lzdGVtKCk6IE9ic2VydmFibGU8T3BlcmF0aW5nU3lzdGVtPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIGNvbnN0IG9zID0gbmV3IE9wZXJhdGluZ1N5c3RlbSgpO1xuXG4gICAgICBvYnNlcnZlci5uZXh0KG9zKTtcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvb3JkaW5hdGVzV2l0aENsaWVudElQKG9ic2VydmVyKTogdm9pZCB7XG4gICAgdGhpcy5hcGlMb29rdXAuZ2V0SXBJbmZvcm1hdGlvbigpLnN1YnNjcmliZShpbmZvID0+IHtcbiAgICAgIG9ic2VydmVyLm5leHQoW1xuICAgICAgICBpbmZvLmxvbmdpdHVkZSxcbiAgICAgICAgaW5mby5sYXRpdHVkZSxcbiAgICAgIF0pO1xuICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICB9LCAoKSA9PiB7XG4gICAgICBvYnNlcnZlci5uZXh0KFstNzEuMDAsIDQ4LjAwXSk7XG4gICAgICBvYnNlcnZlci5lcnJvcignQ2FuXFwndCBmaW5kIHRoZSBjbGllbnQgbG9jYXRpb24nKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25WaXNpYmlsaXR5Q2hhbmdlKHZpc2libGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2liaWxpdHlDaGFuZ2UuZW1pdCh2aXNpYmxlKTtcbiAgfVxufVxuIl19