feat(core): initRootView event (#10442)

launchEvent is not triggered at the same moment on iOS and Android. 
iOS is firing after setting the rootView while Android is firing before.
Consequently if you need an event for when the rootView is set (to read/write root css variables) you need this event.

[skip ci]
This commit is contained in:
farfromrefuge
2023-11-25 19:04:01 +00:00
committed by GitHub
parent 2237c9be4f
commit 82e9c67d33
2 changed files with 10 additions and 1 deletions

View File

@ -12,7 +12,7 @@ import type { Frame } from '../ui/frame';
import type { NavigationEntry } from '../ui/frame/frame-interfaces';
import type { StyleScope } from '../ui/styling/style-scope';
import type { AndroidApplication as IAndroidApplication, iOSApplication as IiOSApplication } from './';
import type { ApplicationEventData, CssChangedEventData, DiscardedErrorEventData, FontScaleChangedEventData, LaunchEventData, LoadAppCSSEventData, NativeScriptError, OrientationChangedEventData, SystemAppearanceChangedEventData, UnhandledErrorEventData } from './application-interfaces';
import type { ApplicationEventData, CssChangedEventData, DiscardedErrorEventData, FontScaleChangedEventData, InitRootViewEventData, LaunchEventData, LoadAppCSSEventData, NativeScriptError, OrientationChangedEventData, SystemAppearanceChangedEventData, UnhandledErrorEventData } from './application-interfaces';
// prettier-ignore
const ORIENTATION_CSS_CLASSES = [
@ -125,6 +125,7 @@ export class ApplicationCommon {
readonly livesyncEvent = 'livesync';
readonly loadAppCssEvent = 'loadAppCss';
readonly cssChangedEvent = 'cssChanged';
readonly initRootViewEvent = 'initRootView';
// Expose statically for backwards compat on AndroidApplication.on etc.
/**
@ -368,6 +369,7 @@ export class ApplicationCommon {
this.setRootViewCSSClasses(rootView);
initAccessibilityCssHelper();
initAccessibilityFontScale();
this.notify(<InitRootViewEventData>{ eventName: this.initRootViewEvent, rootView });
}
/**

View File

@ -117,6 +117,13 @@ export interface CssChangedEventData extends ApplicationEventData {
cssText?: string;
}
/**
* Event data containing information about application css change.
*/
export interface InitRootViewEventData extends ApplicationEventData {
rootView: View;
}
/**
* Data for the Android activity events.
*/