HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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);
  }

}