UNPKG

@netcreaties/ngx-smart-banner

Version:

Angular service for the imlementation of a smart banner to notify your users about your available app.

94 lines 13.2 kB
import { isPlatformServer } from '@angular/common'; import { EventEmitter, Inject, Injectable, PLATFORM_ID, } from '@angular/core'; import { NgxSmartBannerComponent } from './ngx-smart-banner.component'; import { NgxSmartBannerPlatform, } from './settings.interface'; import * as i0 from "@angular/core"; import * as i1 from "@angular/cdk/platform"; import * as i2 from "./utils/cookie-service"; export class NgxSmartBannerService { constructor(platform, componentResolver, platformId, cookieService) { this.platform = platform; this.componentResolver = componentResolver; this.platformId = platformId; this.cookieService = cookieService; this.smartBanner = null; this.onOpen = new EventEmitter(); this.onClose = new EventEmitter(); this.isServer = isPlatformServer(this.platformId); this.settings = { title: 'Smart application', author: 'Smartbanner contributors', price: 'FREE', closeLabel: 'Close', buttonLabel: 'VIEW', enabledPlatforms: [ NgxSmartBannerPlatform.Android, NgxSmartBannerPlatform.IOS, ], viewContainerRef: null, priceSuffix: { ios: ' - On the App Store', android: ' - In Google play', }, rating: { ios: 2, android: 5, }, hideRating: false, }; } /** * Initializes ngx smart banner service * * @params settings */ initialize(settings) { this.settings = Object.assign(Object.assign({}, this.settings), settings); if (!this.settings.viewContainerRef) { throw new Error('No view container ref provided'); } if (this.isServer || this.cookieService.check('smartbanner_closed')) { return; } if (!this.platformEnabled) { return; } if (this.smartBanner === null) { const componentFactory = this.componentResolver.resolveComponentFactory(NgxSmartBannerComponent); const componentRef = this.settings.viewContainerRef.createComponent(componentFactory); this.onOpen.emit(); componentRef.instance.componentRef = componentRef; this.smartBanner = componentRef.instance; this.onCloseSubscription$ = this.smartBanner.onClose.subscribe(() => { this.onClose.emit(); this.onCloseSubscription$.unsubscribe(); }); } this.smartBanner.settings = this.settings; } /** * Determine if platform is enabled */ get platformEnabled() { var _a, _b; if (this.platform.ANDROID) { return !!((_a = this.settings.enabledPlatforms) === null || _a === void 0 ? void 0 : _a.includes(NgxSmartBannerPlatform.Android)); } if (this.platform.IOS) { return !!((_b = this.settings.enabledPlatforms) === null || _b === void 0 ? void 0 : _b.includes(NgxSmartBannerPlatform.IOS)); } return false; } } NgxSmartBannerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: NgxSmartBannerService, deps: [{ token: i1.Platform }, { token: i0.ComponentFactoryResolver }, { token: PLATFORM_ID }, { token: i2.CookieService }], target: i0.ɵɵFactoryTarget.Injectable }); NgxSmartBannerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: NgxSmartBannerService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: NgxSmartBannerService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.ComponentFactoryResolver }, { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID] }] }, { type: i2.CookieService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNtYXJ0LWJhbm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0LWJhbm5lci9zcmMvbGliL25neC1zbWFydC1iYW5uZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBRUgsWUFBWSxFQUNaLE1BQU0sRUFDTixVQUFVLEVBQ1YsV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFDSCxzQkFBc0IsR0FFekIsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQU05QixNQUFNLE9BQU8scUJBQXFCO0lBVzlCLFlBQ3FCLFFBQWtCLEVBQ2xCLGlCQUEyQyxFQUN0QixVQUFrQixFQUN2QyxhQUE0QjtRQUg1QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUN2QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVh6QyxnQkFBVyxHQUFtQyxJQUFJLENBQUM7UUFhdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVsQyxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ1osS0FBSyxFQUFFLG1CQUFtQjtZQUMxQixNQUFNLEVBQUUsMEJBQTBCO1lBQ2xDLEtBQUssRUFBRSxNQUFNO1lBQ2IsVUFBVSxFQUFFLE9BQU87WUFDbkIsV0FBVyxFQUFFLE1BQU07WUFDbkIsZ0JBQWdCLEVBQUU7Z0JBQ2Qsc0JBQXNCLENBQUMsT0FBTztnQkFDOUIsc0JBQXNCLENBQUMsR0FBRzthQUM3QjtZQUNELGdCQUFnQixFQUFFLElBQUk7WUFDdEIsV0FBVyxFQUFFO2dCQUNULEdBQUcsRUFBRSxxQkFBcUI7Z0JBQzFCLE9BQU8sRUFBRSxtQkFBbUI7YUFDL0I7WUFDRCxNQUFNLEVBQUU7Z0JBQ0osR0FBRyxFQUFFLENBQUM7Z0JBQ04sT0FBTyxFQUFFLENBQUM7YUFDYjtZQUNELFVBQVUsRUFBRSxLQUFLO1NBQ3BCLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxRQUFnQztRQUM5QyxJQUFJLENBQUMsUUFBUSxtQ0FBUSxJQUFJLENBQUMsUUFBUSxHQUFLLFFBQVEsQ0FBRSxDQUFDO1FBRWxELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNyRDtRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQ2pFLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3ZCLE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUU7WUFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQ25FLHVCQUF1QixDQUMxQixDQUFDO1lBQ0YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQy9ELGdCQUFnQixDQUNuQixDQUFDO1lBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQixZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7WUFFbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBRXpDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQzFELEdBQUcsRUFBRTtnQkFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUVwQixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUMsQ0FBQyxDQUNKLENBQUM7U0FDTDtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBWSxlQUFlOztRQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQiwwQ0FBRSxRQUFRLENBQzdDLHNCQUFzQixDQUFDLE9BQU8sQ0FDakMsQ0FBQSxDQUFDO1NBQ0w7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQiwwQ0FBRSxRQUFRLENBQzdDLHNCQUFzQixDQUFDLEdBQUcsQ0FDN0IsQ0FBQSxDQUFDO1NBQ0w7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOztrSEEzR1EscUJBQXFCLGtGQWNsQixXQUFXO3NIQWRkLHFCQUFxQixjQUZsQixNQUFNOzJGQUVULHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQWVRLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcclxuaW1wb3J0IHsgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbmplY3RhYmxlLFxyXG4gICAgUExBVEZPUk1fSUQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBOZ3hTbWFydEJhbm5lckNvbXBvbmVudCB9IGZyb20gJy4vbmd4LXNtYXJ0LWJhbm5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gICAgTmd4U21hcnRCYW5uZXJQbGF0Zm9ybSxcclxuICAgIE5neFNtYXJ0QmFubmVyU2V0dGluZ3MsXHJcbn0gZnJvbSAnLi9zZXR0aW5ncy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi91dGlscy9jb29raWUtc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hTbWFydEJhbm5lclNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc1NlcnZlcjogYm9vbGVhbjtcclxuXHJcbiAgICBwdWJsaWMgc2V0dGluZ3M6IE5neFNtYXJ0QmFubmVyU2V0dGluZ3M7XHJcbiAgICBwcml2YXRlIHNtYXJ0QmFubmVyOiBOZ3hTbWFydEJhbm5lckNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIHB1YmxpYyBvbk9wZW46IEV2ZW50RW1pdHRlcjx2b2lkPjtcclxuICAgIHB1YmxpYyBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8dm9pZD47XHJcblxyXG4gICAgcHJpdmF0ZSBvbkNsb3NlU3Vic2NyaXB0aW9uJCE6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtOiBQbGF0Zm9ybSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudFJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkOiBzdHJpbmcsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5vbk9wZW4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICAgICAgdGhpcy5vbkNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgICAgICB0aGlzLmlzU2VydmVyID0gaXNQbGF0Zm9ybVNlcnZlcih0aGlzLnBsYXRmb3JtSWQpO1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmdzID0ge1xyXG4gICAgICAgICAgICB0aXRsZTogJ1NtYXJ0IGFwcGxpY2F0aW9uJyxcclxuICAgICAgICAgICAgYXV0aG9yOiAnU21hcnRiYW5uZXIgY29udHJpYnV0b3JzJyxcclxuICAgICAgICAgICAgcHJpY2U6ICdGUkVFJyxcclxuICAgICAgICAgICAgY2xvc2VMYWJlbDogJ0Nsb3NlJyxcclxuICAgICAgICAgICAgYnV0dG9uTGFiZWw6ICdWSUVXJyxcclxuICAgICAgICAgICAgZW5hYmxlZFBsYXRmb3JtczogW1xyXG4gICAgICAgICAgICAgICAgTmd4U21hcnRCYW5uZXJQbGF0Zm9ybS5BbmRyb2lkLFxyXG4gICAgICAgICAgICAgICAgTmd4U21hcnRCYW5uZXJQbGF0Zm9ybS5JT1MsXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IG51bGwsXHJcbiAgICAgICAgICAgIHByaWNlU3VmZml4OiB7XHJcbiAgICAgICAgICAgICAgICBpb3M6ICcgLSBPbiB0aGUgQXBwIFN0b3JlJyxcclxuICAgICAgICAgICAgICAgIGFuZHJvaWQ6ICcgLSBJbiBHb29nbGUgcGxheScsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHJhdGluZzoge1xyXG4gICAgICAgICAgICAgICAgaW9zOiAyLFxyXG4gICAgICAgICAgICAgICAgYW5kcm9pZDogNSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgaGlkZVJhdGluZzogZmFsc2UsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIG5neCBzbWFydCBiYW5uZXIgc2VydmljZVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbXMgc2V0dGluZ3NcclxuICAgICAqL1xyXG4gICAgcHVibGljIGluaXRpYWxpemUoc2V0dGluZ3M6IE5neFNtYXJ0QmFubmVyU2V0dGluZ3MpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzID0geyAuLi50aGlzLnNldHRpbmdzLCAuLi5zZXR0aW5ncyB9O1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc2V0dGluZ3Mudmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHZpZXcgY29udGFpbmVyIHJlZiBwcm92aWRlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNTZXJ2ZXIgfHwgdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKCdzbWFydGJhbm5lcl9jbG9zZWQnKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMucGxhdGZvcm1FbmFibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNtYXJ0QmFubmVyID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudFJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxyXG4gICAgICAgICAgICAgICAgTmd4U21hcnRCYW5uZXJDb21wb25lbnQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuc2V0dGluZ3Mudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoXHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnRGYWN0b3J5LFxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vbk9wZW4uZW1pdCgpO1xyXG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY29tcG9uZW50UmVmID0gY29tcG9uZW50UmVmO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zbWFydEJhbm5lciA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMub25DbG9zZVN1YnNjcmlwdGlvbiQgPSB0aGlzLnNtYXJ0QmFubmVyLm9uQ2xvc2Uuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZVN1YnNjcmlwdGlvbiQudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNtYXJ0QmFubmVyLnNldHRpbmdzID0gdGhpcy5zZXR0aW5ncztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERldGVybWluZSBpZiBwbGF0Zm9ybSBpcyBlbmFibGVkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0IHBsYXRmb3JtRW5hYmxlZCgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybS5BTkRST0lEKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhIXRoaXMuc2V0dGluZ3MuZW5hYmxlZFBsYXRmb3Jtcz8uaW5jbHVkZXMoXHJcbiAgICAgICAgICAgICAgICBOZ3hTbWFydEJhbm5lclBsYXRmb3JtLkFuZHJvaWQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybS5JT1MpIHtcclxuICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5zZXR0aW5ncy5lbmFibGVkUGxhdGZvcm1zPy5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgIE5neFNtYXJ0QmFubmVyUGxhdGZvcm0uSU9TLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==