@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
JavaScript
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==