MOBILE-3565 core: Listen to some login events to apply customizations
parent
e070c7864e
commit
ff24186a32
|
@ -31,6 +31,7 @@
|
||||||
<preference name="BackupWebStorage" value="none" />
|
<preference name="BackupWebStorage" value="none" />
|
||||||
<preference name="ScrollEnabled" value="false" />
|
<preference name="ScrollEnabled" value="false" />
|
||||||
<preference name="KeyboardDisplayRequiresUserAction" value="false" />
|
<preference name="KeyboardDisplayRequiresUserAction" value="false" />
|
||||||
|
<preference name="HideKeyboardFormAccessoryBar" value="false" />
|
||||||
<preference name="AllowInlineMediaPlayback" value="true" />
|
<preference name="AllowInlineMediaPlayback" value="true" />
|
||||||
<preference name="LoadUrlTimeoutValue" value="60000" />
|
<preference name="LoadUrlTimeoutValue" value="60000" />
|
||||||
<preference name="load-url-timeout" value="60000" />
|
<preference name="load-url-timeout" value="60000" />
|
||||||
|
|
|
@ -17,9 +17,16 @@ import { NavController } from '@ionic/angular';
|
||||||
|
|
||||||
import { CoreLangProvider } from '@services/lang';
|
import { CoreLangProvider } from '@services/lang';
|
||||||
import { CoreLoginHelperProvider } from '@features/login/services/login.helper';
|
import { CoreLoginHelperProvider } from '@features/login/services/login.helper';
|
||||||
import { CoreEvents, CoreEventSessionExpiredData } from '@singletons/events';
|
import {
|
||||||
|
CoreEvents,
|
||||||
|
CoreEventSessionExpiredData,
|
||||||
|
CoreEventSiteAddedData,
|
||||||
|
CoreEventSiteData,
|
||||||
|
CoreEventSiteUpdatedData,
|
||||||
|
} from '@singletons/events';
|
||||||
import { Network, NgZone, Platform } from '@singletons/core.singletons';
|
import { Network, NgZone, Platform } from '@singletons/core.singletons';
|
||||||
import { CoreApp } from '@services/app';
|
import { CoreApp } from '@services/app';
|
||||||
|
import { CoreSites } from '@services/sites';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-root',
|
selector: 'app-root',
|
||||||
|
@ -37,6 +44,14 @@ export class AppComponent implements OnInit {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Component being initialized.
|
* Component being initialized.
|
||||||
|
*
|
||||||
|
* @todo Review all old code to see if something is missing:
|
||||||
|
* - IAB events listening.
|
||||||
|
* - Platform pause/resume subscriptions.
|
||||||
|
* - handleOpenURL and openWindowSafely.
|
||||||
|
* - Screen orientation events (probably it can be removed).
|
||||||
|
* - Back button registering to close modal first.
|
||||||
|
* - Note: HideKeyboardFormAccessoryBar has been moved to config.xml.
|
||||||
*/
|
*/
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
CoreEvents.on(CoreEvents.LOGOUT, () => {
|
CoreEvents.on(CoreEvents.LOGOUT, () => {
|
||||||
|
@ -55,9 +70,59 @@ export class AppComponent implements OnInit {
|
||||||
this.loginHelper.sessionExpired(data);
|
this.loginHelper.sessionExpired(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Listen for passwordchange and usernotfullysetup events to open InAppBrowser.
|
||||||
|
CoreEvents.on(CoreEvents.PASSWORD_CHANGE_FORCED, (data: CoreEventSiteData) => {
|
||||||
|
this.loginHelper.passwordChangeForced(data.siteId!);
|
||||||
|
});
|
||||||
|
CoreEvents.on(CoreEvents.USER_NOT_FULLY_SETUP, (data: CoreEventSiteData) => {
|
||||||
|
this.loginHelper.openInAppForEdit(data.siteId!, '/user/edit.php', 'core.usernotfullysetup');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Listen for sitepolicynotagreed event to accept the site policy.
|
||||||
|
CoreEvents.on(CoreEvents.SITE_POLICY_NOT_AGREED, (data: CoreEventSiteData) => {
|
||||||
|
this.loginHelper.sitePolicyNotAgreed(data.siteId);
|
||||||
|
});
|
||||||
|
|
||||||
|
CoreEvents.on(CoreEvents.LOGIN, async (data: CoreEventSiteData) => {
|
||||||
|
if (data.siteId) {
|
||||||
|
const site = await CoreSites.instance.getSite(data.siteId);
|
||||||
|
const info = site.getInfo();
|
||||||
|
if (info) {
|
||||||
|
// Add version classes to body.
|
||||||
|
this.removeVersionClass();
|
||||||
|
this.addVersionClass(CoreSites.instance.getReleaseNumber(info.release || ''));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.loadCustomStrings();
|
||||||
|
});
|
||||||
|
|
||||||
|
CoreEvents.on(CoreEvents.SITE_UPDATED, (data: CoreEventSiteUpdatedData) => {
|
||||||
|
if (data.siteId == CoreSites.instance.getCurrentSiteId()) {
|
||||||
|
this.loadCustomStrings();
|
||||||
|
|
||||||
|
// Add version classes to body.
|
||||||
|
this.removeVersionClass();
|
||||||
|
this.addVersionClass(CoreSites.instance.getReleaseNumber(data.release || ''));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
CoreEvents.on(CoreEvents.SITE_ADDED, (data: CoreEventSiteAddedData) => {
|
||||||
|
if (data.siteId == CoreSites.instance.getCurrentSiteId()) {
|
||||||
|
this.loadCustomStrings();
|
||||||
|
|
||||||
|
// Add version classes to body.
|
||||||
|
this.removeVersionClass();
|
||||||
|
this.addVersionClass(CoreSites.instance.getReleaseNumber(data.release || ''));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
this.onPlatformReady();
|
this.onPlatformReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Async init function on platform ready.
|
||||||
|
*/
|
||||||
protected async onPlatformReady(): Promise<void> {
|
protected async onPlatformReady(): Promise<void> {
|
||||||
await Platform.instance.ready();
|
await Platform.instance.ready();
|
||||||
|
|
||||||
|
@ -83,6 +148,16 @@ export class AppComponent implements OnInit {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load custom lang strings. This cannot be done inside the lang provider because it causes circular dependencies.
|
||||||
|
*/
|
||||||
|
protected loadCustomStrings(): void {
|
||||||
|
const currentSite = CoreSites.instance.getCurrentSite();
|
||||||
|
if (currentSite) {
|
||||||
|
this.langProvider.loadCustomStringsFromSite(currentSite);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convenience function to add version to body classes.
|
* Convenience function to add version to body classes.
|
||||||
*
|
*
|
||||||
|
|
|
@ -21,6 +21,7 @@ import { CoreConfig } from '@services/config';
|
||||||
import { makeSingleton, Translate, Platform } from '@singletons/core.singletons';
|
import { makeSingleton, Translate, Platform } from '@singletons/core.singletons';
|
||||||
|
|
||||||
import * as moment from 'moment';
|
import * as moment from 'moment';
|
||||||
|
import { CoreSite } from '../classes/site';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Service to handle language features, like changing the current language.
|
* Service to handle language features, like changing the current language.
|
||||||
|
@ -311,6 +312,19 @@ export class CoreLangProvider {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads custom strings obtained from site.
|
||||||
|
*
|
||||||
|
* @param currentSite Current site object.
|
||||||
|
*/
|
||||||
|
loadCustomStringsFromSite(currentSite: CoreSite): void {
|
||||||
|
const customStrings = currentSite.getStoredConfig('tool_mobile_customlangstrings');
|
||||||
|
|
||||||
|
if (typeof customStrings != 'undefined') {
|
||||||
|
this.loadCustomStrings(customStrings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load certain custom strings.
|
* Load certain custom strings.
|
||||||
*
|
*
|
||||||
|
|
|
@ -205,6 +205,11 @@ export type CoreEventSiteData = {
|
||||||
*/
|
*/
|
||||||
export type CoreEventSiteUpdatedData = CoreEventSiteData & CoreSiteInfoResponse;
|
export type CoreEventSiteUpdatedData = CoreEventSiteData & CoreSiteInfoResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data passed to SITE_ADDED event.
|
||||||
|
*/
|
||||||
|
export type CoreEventSiteAddedData = CoreEventSiteData & CoreSiteInfoResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Data passed to SESSION_EXPIRED event.
|
* Data passed to SESSION_EXPIRED event.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue