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/parameter.service.ts
import { Injectable } from '@angular/core';
import { ApiService } from "./api.service";
import { StorageService } from './storage.service';
import { TranslateService } from "@ngx-translate/core";
import { NavController, Platform, AlertController } from "@ionic/angular";
import { App } from '@capacitor/app';
import { NativeMarket } from "@capacitor-community/native-market";
import { Capacitor } from "@capacitor/core";

@Injectable({
  providedIn: 'root'
})
export class ParameterService {
  parameters: any;
  backButtonSubscription: any;
  lastValidationDate: any;
  minimumValidationTime: number = 1000 * 60 * 60 * 24;

  constructor(
    private storage: StorageService,
    private platform: Platform,
    private translate: TranslateService,
    public navCtrl: NavController,
    public alertController: AlertController,
    public api: ApiService
  ) { }

  getParameters(keys?: any) {
    return new Promise(async (resolve, reject) => {
      let seq = await this.api.getFree("parameters/info" + (keys ? '?keys=' + keys : ''));
      seq.subscribe(
        (res: any) => {
          if (res.status == "success") {
            if (!keys) {
              this.parameters = res.parameters;
              this.storage.set("parameters", res.parameters);
            }
          }
          resolve(res);
        },
        (err) => {
          console.error("Error provider getParameters", err);
          reject(err);
        }
      );
    });
  }

  async startApp(isNavigator: boolean) {
    if (Capacitor.isNativePlatform()) {
      this.getParameters().then(
        (resp: any) => {
          this.runNavigation(resp["parameters"], isNavigator);
        }).catch(error => {
          console.log("error startApp service: ", error);
        });
    } else {
      if (isNavigator) {
        this.navCtrl.navigateRoot("/welcome");
      }
    }
  }

  async runNavigation(parameters, isNavigator) {
    var versionNumber = (await App.getInfo()).version;
    let minimal_version = parseInt(parameters.minimal_version.split(".").join(""));
    let versionInApp = parseInt(versionNumber.split(".").join(""));

    let platform = Capacitor.getPlatform();
    if (platform == "android" && minimal_version > versionInApp) {
      this.showConfirmVersionAppOld(parameters.android_play_store, parameters.optional_app_upgrade, true, isNavigator);
    } else if (platform == "ios" && minimal_version > versionInApp) {
      this.showConfirmVersionAppOld(parameters.ios_app_store, parameters.optional_app_upgrade_ios, false, isNavigator);
    } else {
      if (isNavigator) {
        this.navCtrl.navigateRoot("/welcome");
      }
    }
  }

  async showConfirmVersionAppOld(appId, optionalAppUpgrade = false, enableCloseApp = false, isNavigator = false) {
    let buttons = [];
    if (optionalAppUpgrade) {
      buttons.push({
        text: this.translate.instant("BUTTON3_ALERT_UPDATE_APP"),
        handler: () => {
          this.lastValidationDate = new Date().getTime();
          if (isNavigator) {
            this.navCtrl.navigateRoot("/welcome");
          }
        }
      });
    }

    if (enableCloseApp) {
      buttons.push({
        text: this.translate.instant("BUTTON1_ALERT_UPDATE_APP"),
        handler: () => {
          this.exitApp();
          this.navCtrl.navigateRoot("/welcome");
        }
      });
    }

    buttons.push({
      text: this.translate.instant("BUTTON2_ALERT_UPDATE_APP"),
      handler: () => {
        NativeMarket.openStoreListing({ appId: appId });
        this.showConfirmVersionAppOld(appId, optionalAppUpgrade, enableCloseApp, isNavigator);
      }
    });

    const alert = await this.alertController.create({
      header: this.translate.instant("TITLE_ALERT_UPDATE_APP"),
      message: this.translate.instant("TEXT_ALERT_UPDATE_APP"),
      backdropDismiss: false,
      buttons: buttons
    });
    if (!this.lastValidationDate || (new Date().getTime() - this.lastValidationDate > this.minimumValidationTime)) {
      this.lastValidationDate = null;
      await alert.present();
    }
  }

  exitApp() {
    this.backButtonSubscription = this.platform.backButton.subscribe(() => {
      navigator["app"].exitApp();
    });
  }

}