File: /var/www/vhost/disk-apps/pwa.sports-crowd.com/src/app/services/comms.service.ts
import { Injectable } from "@angular/core";
import { ApiService } from "./api.service";
import { StorageService } from './storage.service';
import { UtilsService } from './utils.service';
import { ModalController } from "@ionic/angular";
import { ModalPopupPage } from "../pages/modal-popup/modal-popup.page";
import { ModalInappPage } from "../pages/modal-inapp/modal-inapp.page";
@Injectable({
providedIn: "root",
})
export class CommsService {
popup: any;
constructor(
public api: ApiService,
private storage: StorageService,
private utilsService: UtilsService,
public modalController: ModalController
) { }
getBookcase(token) {
return this.api.get("comms/bookcase_embed", token);
}
async presentModal(popup: any) {
const modal = await this.modalController.create({
component: ModalPopupPage,
cssClass: "modal-popup",
showBackdrop: false,
swipeToClose: false,
backdropDismiss: false,
componentProps: { popup: popup },
});
return await modal.present();
}
async presentInapp(inapp: any) {
var me = this;
me.closePopup(me.popup);
me.modalController.create({
component: ModalInappPage,
cssClass: "modal-popup",
showBackdrop: false,
swipeToClose: false,
backdropDismiss: false,
componentProps: { image: inapp.image }
}).then((popup) => {
popup.present();
popup.addEventListener("ionModalDidPresent", (obj) => {
if (obj.target) {
obj.target.addEventListener('focusout', (event: any) => {
if (event.sourceCapabilities && me.popup)
me.closePopup(me.popup);
});
}
});
me.popup = popup;
});
}
async presentPopup(component: any, object: object) {
var me = this;
me.closePopup(me.popup);
me.modalController.create({
component: component,
cssClass: "modal-popup",
showBackdrop: false,
swipeToClose: true,
backdropDismiss: true,
componentProps: { object: object }
}).then((popup) => {
popup.present();
popup.addEventListener("ionModalDidPresent", (obj) => {
if (obj.target)
obj.target.addEventListener('focusout', (event: any) => {
if (event.sourceCapabilities && me.popup)
me.closePopup(me.popup);
});
});
me.popup = popup;
});
}
closePopup(popup: any) {
if (popup)
popup.dismiss();
}
getRadio(token) {
return this.api.get("comms/radio_embed", token);
}
getSocialNetworkAccounts(token) {
return this.api.get("comms/social_network_accounts", token);
}
getTiktok(token) {
return this.api.get("comms/video_tiktok", token);
}
getYoutube(token, take) {
return this.api.get("comms/video_youtube" + (take ? '/' + take : ''), token);
}
async getYoutubeData() {
return new Promise(async (resolve, reject) => {
let seq = this.api.get("comms/video_youtube", await this.utilsService.getAccessToken());
(await seq).subscribe(
(resp: any) => {
resolve(resp);
},
(error) => {
reject(error);
}
);
});
}
getInstagram(token, take) {
return this.api.get("comms/photo_instagram" + (take ? '/' + take : ''), token);
}
getTwitter(token) {
return this.api.get("comms/official_twitter", token);
}
getFacebook(token) {
return this.api.get("comms/official_facebook", token);
}
async getBanners(target?: string) {
return new Promise(async (resolve, reject) => {
let seq = this.api.get("comms/getBanners/" + target, await this.utilsService.getAccessToken());
(await seq).subscribe({
next: (banners: any) => {
resolve(banners);
},
error: (error) => {
reject(error);
},
complete: () => { }
});
});
}
async getPopups(target?: string) {
this.storage.get('popups').then((storagePopups) => {
return new Promise(async (resolve, reject) => {
let newStoragePopups = storagePopups ? storagePopups : [];
let seq = this.api.get("comms/getPopups/" + target, await this.utilsService.getAccessToken());
(await seq).subscribe({
next: (popups: any) => {
popups.forEach((popup: any) => {
if (popup.frequency === 0) {
this.openPopup(popup);
} else {
let popupStored = newStoragePopups.find((item: any) => item.id === popup.id);
if (popupStored && popupStored.views === popupStored.frequency) {
return;
} else {
if (!popupStored) {
popup.views = 1;
newStoragePopups.push(popup);
} else {
popupStored.views += 1;
}
this.openPopup(popup);
}
}
});
this.storage.set('popups', newStoragePopups);
resolve(popups);
},
error: (err) => {
reject(err);
},
complete: () => { }
});
});
});
}
openPopup(popup: any) {
this.presentModal(popup);
}
}