- Configurar OneSignal con nuevo App ID - Agregar network_security_config.xml para permitir HTTP - Habilitar CapacitorHttp nativo en capacitor.config.ts - Actualizar SDK a Android 34 - Configurar API_URL fija (192.168.10.207:8080) - Agregar onesignal.service.ts Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
153 lines
4.5 KiB
TypeScript
Executable File
153 lines
4.5 KiB
TypeScript
Executable File
import { Component } from '@angular/core';
|
|
import { Platform, NavController, LoadingController } from '@ionic/angular';
|
|
import { EventService } from './services/event.service';
|
|
import { StatusBar, Style } from '@capacitor/status-bar';
|
|
import { SplashScreen } from '@capacitor/splash-screen';
|
|
import { Browser } from '@capacitor/browser';
|
|
import { AuthService } from './services/auth.service';
|
|
import { LanguageService } from './services/language.service';
|
|
import { AlertService } from './services/alert.service';
|
|
import { TranslateService } from '@ngx-translate/core';
|
|
import { Capacitor } from '@capacitor/core';
|
|
import { OneSignalService } from './services/onesignal.service';
|
|
|
|
@Component({
|
|
selector: 'app-root',
|
|
templateUrl: 'app.component.html'
|
|
})
|
|
export class AppComponent {
|
|
|
|
private loading: any;
|
|
|
|
public appPages: any[] = [];
|
|
|
|
constructor(
|
|
private platform: Platform,
|
|
private authService: AuthService,
|
|
private languageService: LanguageService,
|
|
private translateService: TranslateService,
|
|
private navCtrl: NavController,
|
|
private events: EventService,
|
|
private alertService: AlertService,
|
|
private loadingCtrl: LoadingController,
|
|
private oneSignalService: OneSignalService,
|
|
) {
|
|
this.initializeApp();
|
|
this.events.subscribe('set_role', role => {
|
|
// Set OneSignal user tags when role is set (user logged in)
|
|
this.setupOneSignalUser(role);
|
|
if (role >= 2){
|
|
this.appPages = [
|
|
{
|
|
title: this.translateService.instant('menu.home'),
|
|
url: '/dashboard',
|
|
icon: 'home'
|
|
},
|
|
{
|
|
title: this.translateService.instant('menu.cards'),
|
|
url: '/cards',
|
|
icon: 'card'
|
|
},
|
|
{
|
|
title: this.translateService.instant('menu.postulations'),
|
|
url: '/postulations',
|
|
icon: 'hammer'
|
|
},
|
|
{
|
|
title: this.translateService.instant('menu.contracts'),
|
|
url: '/contracts',
|
|
icon: 'filing'
|
|
},
|
|
{
|
|
title: this.translateService.instant('menu.faq'),
|
|
url: '/faq',
|
|
icon: 'information-circle'
|
|
},
|
|
{
|
|
title: this.translateService.instant('menu.start'),
|
|
url: '/start',
|
|
icon: 'send'
|
|
}
|
|
];
|
|
} else {
|
|
this.appPages = [
|
|
{
|
|
title: this.translateService.instant('menu.home'),
|
|
url: '/dashboard',
|
|
icon: 'home'
|
|
},
|
|
{
|
|
title: this.translateService.instant('menu.cards'),
|
|
url: '/cards',
|
|
icon: 'card'
|
|
},
|
|
{
|
|
title: this.translateService.instant('menu.contracts'),
|
|
url: '/contracts',
|
|
icon: 'filing'
|
|
},
|
|
{
|
|
title: this.translateService.instant('menu.faq'),
|
|
url: '/faq',
|
|
icon: 'information-circle'
|
|
},
|
|
{
|
|
title: this.translateService.instant('menu.hero'),
|
|
url: '/hero',
|
|
icon: 'ribbon'
|
|
}
|
|
];
|
|
}
|
|
});
|
|
}
|
|
async initializeApp() {
|
|
await this.platform.ready();
|
|
|
|
// Solo ejecutar plugins nativos en dispositivos móviles
|
|
if (Capacitor.isNativePlatform()) {
|
|
await StatusBar.setStyle({ style: Style.Light });
|
|
await StatusBar.setOverlaysWebView({ overlay: false });
|
|
await StatusBar.setBackgroundColor({ color: '#0080ff' });
|
|
|
|
// Initialize OneSignal push notifications
|
|
await this.oneSignalService.init();
|
|
}
|
|
|
|
this.languageService.getDefaultLanguage();
|
|
this.authService.getToken();
|
|
}
|
|
|
|
private async setupOneSignalUser(role: number) {
|
|
if (this.authService.token && this.authService.token.user_id) {
|
|
await this.oneSignalService.setUserId(this.authService.token.user_id);
|
|
await this.oneSignalService.setUserRole(role);
|
|
}
|
|
}
|
|
|
|
// When Logout Button is pressed
|
|
async logout() {
|
|
this.loading = await this.loadingCtrl.create();
|
|
await this.loading.present();
|
|
|
|
this.authService.logout().subscribe(
|
|
async data => {
|
|
this.alertService.presentToast(this.translateService.instant('alerts.logout'));
|
|
// Clear OneSignal user tags on logout
|
|
await this.oneSignalService.logout();
|
|
},
|
|
error => {
|
|
this.loading.dismiss();
|
|
console.log(error);
|
|
},
|
|
() => {
|
|
this.loading.dismiss();
|
|
this.navCtrl.navigateRoot('/landing');
|
|
}
|
|
);
|
|
}
|
|
|
|
async openUrl(url: string) {
|
|
await Browser.open({ url });
|
|
}
|
|
}
|