import { Component, OnInit } from '@angular/core'; import { Platform, Events, MenuController, ModalController, NavController } from '@ionic/angular'; import { TranslatorService } from './hmg-common/services/translator/translator.service'; import { CommonService } from './hmg-common/services/common/common.service'; import { AuthenticationService } from './hmg-common/services/authentication/authentication.service'; import { AuthenticatedUser } from './hmg-common/services/authentication/models/authenticated-user'; import { KeyboardService } from './hmg-common/services/keyboard/keyboard.service'; import { PushService } from '../../src/app/hmg-common/services/push/push.service'; import { LazyLoadingService } from './hmg-common/services/lazy-loading/lazy-loading.service'; import { DomSanitizer } from '@angular/platform-browser'; import { SplashScreen } from '@ionic-native/splash-screen/ngx'; import { Router } from '@angular/router'; import { DigitalIdComponent } from './authentication/digital-id/digital-id.component'; import { checkAndUpdatePureExpressionInline } from '@angular/core/src/view/pure_expression'; @Component({ selector: 'app-root', styleUrls: ['./app.component.scss'], templateUrl: 'app.component.html' }) export class AppComponent implements OnInit { start: any = false; menuList: any = []; User_name_Emp = ''; user_image: any = '../assets/imgs/profile.png'; menuSide = 'left'; notBadge: number; companyUrl = '../assets/imgs/CSLogo.png'; companyDesc = 'Powered By Cloud Solutions'; direction = 'ltr'; User_Job_name: string; public logoutFlage: any = false; user: boolean; deviceToken: string; TeamFlag: string = 'false'; isIOS = false; public requestGetLoginInfo: { DeviceType: string; DeviceToken: string; // this.deviceToken }; private digitalIDUser: any; constructor( public ts: TranslatorService, private cs: CommonService, private lazyLoadingService: LazyLoadingService, private platform: Platform, private events: Events, private keyboardService: KeyboardService, private menu: MenuController, private authService: AuthenticationService, private sanitizer: DomSanitizer, public pushService: PushService, private splashScreen: SplashScreen, public router: Router, public modalController: ModalController, public nav: NavController, ) { this.events.subscribe('img-change', displayImg => { console.log('app compont: ' + displayImg); this.user_image = this.sanitizer.bypassSecurityTrustUrl('data:Image/*;base64,' + displayImg); }); } ngOnInit() { this.initializeApp(); } private hideSplashScreen() { setTimeout(() => { this.splashScreen.hide(); }, 1000); } public initializeApp() { this.cs.startLoading(); this.start = false; this.menu.enable(false); this.lazyLoadingService.monitorLazyLoading(15, true); this.platform.ready().then(() => { this.hideSplashScreen(); this.ts.loadResources(() => { this.isIOS = this.platform.is('ios') ? true : false; this.initializeDirection(); this.start = true; if (this.isIOS) { this.monitUrlChange(); } this.watchLanguageChangeEvents(); this.subscribeEvents(); this.keyboardService.watchKeyboard(); this.startReceivingPushService(); }); }); } private monitUrlChange() { this.router.events.subscribe((val) => { if (this.router.isActive('/authentication/login', true)) { this.direction = 'ltr'; } else { this.direction = TranslatorService.getCurrentDirection(); } }); } private startReceivingPushService() { this.pushService.startReceiving(); setTimeout(() => { console.log(' in setTimeout startReceiving'); this.getLastLoginInfo(); }, 4000); } public subscribeEvents() { this.platform.backButton.subscribe(() => { if (this.router.isActive('/authentication/login', true)) { navigator['app'].exitApp(); } else if (this.router.isActive('/home', true)) { this.nav.navigateRoot('/home'); } }); this.events.subscribe('setMenu', () => { const user = this.authService.loadAuthenticatedUser().subscribe((user: AuthenticatedUser) => { if (user) { console.log(user); localStorage.setItem("digitalIDUser", JSON.stringify(user)); this.digitalIDUser = user//JSON.stringify(user); this.companyUrl = user.CompanyImageURL ? user.CompanyImageURL : '../assets/imgs/CSLogo.png'; this.companyDesc = user.CompanyImageDescription ? user.CompanyImageDescription : 'Powered By Cloud Solutions'; this.User_name_Emp = user.EMPLOYEE_DISPLAY_NAME; this.authService.checkAds({ EmployeeNumber: '', ItgEnableAt: "Before Service Initiation", ItgServiceName: "Ticket" }, () => { }, this.ts.trPK('general', 'ok')).subscribe(res => { console.log("Check Ads") console.log(res); }); if (this.cs.getUpdateImage().status) { this.user_image = this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + this.cs.getUpdateImage().img); } else { this.user_image = user.EMPLOYEE_IMAGE ? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE : '../assets/imgs/profile.png'; } this.User_Job_name = user.JOB_NAME; //erm channel if (!CommonService.SKIP) this.cs.navigateForward('/erm-channel/survey'); } else { console.log(user); } }); }); this.events.subscribe('getNotCount', badge => { this.notBadge = badge; }); this.events.subscribe('myTeamFlag', myTeamFlag => { this.TeamFlag = myTeamFlag; }); } private initializeDirection() { if (this.isIOS) { if (this.router.isActive('/authentication/login', true)) { this.direction = 'ltr'; } else { this.direction = TranslatorService.getCurrentDirection(); } } else { this.direction = TranslatorService.getCurrentDirection(); } } private watchLanguageChangeEvents() { this.events.subscribe(TranslatorService.CHANGE_EVENT, () => { this.start = false; this.initializeDirection(); setTimeout(() => { this.start = true; }, 100); }); } public logout() { this.cs.sharedService.clearAll(); this.menu.enable(false); this.logoutFlage = true; this.events.publish('logoutFlage', this.logoutFlage); this.cs.setUpdateImage('', false); this.TeamFlag = 'false'; this.getLastLoginInfo(); } public openMyTeamPage() { this.menu.toggle(); this.cs.openMyTeamPage(); } public openMyRequestPage() { this.cs.openMyRequestPage(); this.menu.toggle(); } public profile() { this.cs.openProfile(); this.menu.toggle(); } public openNotification() { this.cs.openNotificationPage(); this.menu.toggle(); } public openChangePassword() { this.cs.openChangePassword(); this.menu.toggle(); } async openDigitalId() { const modal = await this.modalController.create({ component: DigitalIdComponent, cssClass: 'digital-id-modal-css', componentProps: { 'userInfo': this.digitalIDUser//JSON.parse(this.digitalIDUser) } }); return await modal.present(); } private changeImage() { this.cs.openChangeImagePage(); this.menu.toggle(); } public closeMenu() { this.menu.toggle(); } public getLastLoginInfo() { this.deviceToken = this.cs.getDeviceToken(); if (this.deviceToken) { console.log('login enabled first time: ' + this.deviceToken); } else { this.pushService.startReceiving(); setTimeout(() => { this.deviceToken = localStorage.getItem('deviceToken'); }, 1000); } this.requestGetLoginInfo = { DeviceType: this.cs.getDeviceType(), DeviceToken: this.deviceToken }; this.authService.getLoginInfo(this.requestGetLoginInfo, () => { }, this.ts.trPK('general', 'ok')).subscribe(res => { if (this.cs.validResponse(res)) { if (res.Mohemm_GetMobileLoginInfoList.length > 0) { this.cs.sharedService.setSharedData(res.Mohemm_GetMobileLoginInfoList[0], AuthenticationService.IMEI_USER_DATA); this.user = true; this.events.publish('user', this.user); if (this.logoutFlage) { this.cs.openLogin(); } } else { this.user = false; this.events.publish('user', this.user); if (this.logoutFlage) { this.cs.openLogin(); } } } else { } }); } }