import { Component } from '@angular/core';
import { ModalController, MenuController } from '@ionic/angular';
import { StatusBar } from '@capacitor/status-bar';
import { Platform } from '@ionic/angular';
import { SplashScreen } from '@capacitor/splash-screen';
import { UserManagerProvider } from '../providers/user-manager/user-manager';
import { SettingsManagerProvider } from '../providers/settings-manager/settings-manager';
import { StorageManagerProvider } from '../providers/storage-manager/storage-manager';
import { CollectionsManagerProvider } from '../providers/collections-manager/collections-manager';
import { SocketManagerProvider } from '../providers/socket-manager/socket-manager';
import * as Tools from '../bayadic-shared-models/tools/Tools';
import * as Enums from '../bayadic-shared-models/enums/Enums';
import { TranslateService } from '@ngx-translate/core';
import { Router } from '@angular/router';
import { PAGES } from '../bayadic-shared-models/enums/Enums';
import { TranslationService } from '../providers/translation-service';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss']
})
export class AppComponent {
rootPage: any;
selectedTheme: string;
modeTitle: string;
availablePages: PAGES = PAGES;
_isBayaPlus: Promise<boolean> | boolean = false;
// startRoute: string = "profile/introduction";
startRoute: string = "profile/introduction";
constructor(
private platform: Platform,
public userManager: UserManagerProvider,
public storageManager: StorageManagerProvider,
private settingsManager: SettingsManagerProvider,
private router: Router,
public collectionManager: CollectionsManagerProvider,
public socketManager: SocketManagerProvider,
public modalCtrl: ModalController,
private menu: MenuController,
private translateService: TranslateService,
private translationService: TranslationService
) {
this.initializeApp();
this.settingsManager.getActiveTheme().subscribe(val => this.selectedTheme = val.toString());
}
private async init() {
Tools.Dom.addCssClass(this.selectedTheme);
await this.translationService.useCurrentTranslation()
const firstUse = await this.userManager.isFirstUse()
this.menu.swipeGesture(false);
let debug = true;
// if (firstUse || debug) {
// await this.checkForLogin();
// }
// else {
// this.router.navigate(["profile/login"]);
// // this.router.navigate(["profile/introduction"]);
// }
// this.collectionManager.changeLanguage(lang);
const autoNightMode = await this.storageManager.get("autoNightMode")
if (autoNightMode) {
if (Tools.Time.getHour() > 22 || Tools.Time.getHour() < 4) {
this.selectNightTheme();
}
}
this.openCustom();
this.isBayaPlus();
this.initModeMenuTitle();
}
async initializeApp() {
await this.platform.ready()
await this.init();
}
getRootNav() {
return this.rootPage;
}
openFirst() {
this.menu.enable(true, 'first');
this.menu.open('first');
}
openEnd() {
this.menu.open('end');
}
openCustom() {
this.menu.enable(true, 'custom');
this.menu.open('custom');
}
toggleTheme() {
Tools.Dom.removeCssClass(this.selectedTheme);
this.settingsManager.setActiveTheme(Enums.THEMES.getNextTheme(this.selectedTheme));
Tools.Dom.addCssClass(this.selectedTheme);
}
isThemeNightMoode() {
return this.selectedTheme == Enums.THEMES.dark;
}
isBayaPlus() {
this.settingsManager.getPrimarySettings().then(settings => {
this._isBayaPlus = settings.isBayaPlus();
})
}
selectNightTheme() {
Tools.Dom.removeCssClass(this.selectedTheme);
this.settingsManager.setActiveTheme(Enums.THEMES.dark);
this.selectedTheme = Enums.THEMES.dark;
Tools.Dom.addCssClass(this.selectedTheme);
}
selectLightTheme() {
Tools.Dom.removeCssClass(this.selectedTheme);
this.settingsManager.setActiveTheme(Enums.THEMES.light);
this.selectedTheme = Enums.THEMES.light;
Tools.Dom.addCssClass(this.selectedTheme);
}
toggleNightMode() {
Tools.Dom.removeCssClass(this.selectedTheme);
if (this.isThemeNightMoode()) {
this.selectedTheme = Enums.THEMES.light;
}
else {
this.selectedTheme = Enums.THEMES.dark;
}
if (this.userManager.theme === true) {
this.userManager.theme = false;
} else {
this.userManager.theme = true;
}
Tools.Dom.addCssClass(this.selectedTheme);
this.initModeMenuTitle();
}
nightMode() {
this.toggleNightMode();
}
lightMode() {
this.toggleNightMode();
}
isNightMode() {
return this.isThemeNightMoode();
}
isLightMode() {
return !this.isNightMode();
}
initModeMenuTitle() {
if (this.isThemeNightMoode()) {
this.translateService.get('MENU.lightMode').subscribe(
value => {
// value is our translated string
this.modeTitle = value;
}
)
}
else {
console.log(this.translateService.currentLang);
this.translateService.get('MENU.nightMode').subscribe(
value => {
console.log(value);
// value is our translated string
this.modeTitle = value;
}
)
}
}
getModeMenuTitle() {
return this.modeTitle;
}
async checkForLogin() {
const loggedIn = await this.userManager.isLoggedIn();
if (!loggedIn) {
this.router.navigate([this.startRoute]);
}
}
openPage(pageName: Enums.PAGES) {
this.router.navigate([pageName]);
this.menu.close();
}
}