Skip to content

Commit

Permalink
feat(core): initRootView event (#10442)
Browse files Browse the repository at this point in the history
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]
  • Loading branch information
farfromrefug committed Nov 25, 2023
1 parent 2237c9b commit 82e9c67
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
4 changes: 3 additions & 1 deletion packages/core/application/application-common.ts
Expand Up @@ -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 = [
Expand Down Expand Up @@ -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.
/**
Expand Down Expand Up @@ -368,6 +369,7 @@ export class ApplicationCommon {
this.setRootViewCSSClasses(rootView);
initAccessibilityCssHelper();
initAccessibilityFontScale();
this.notify(<InitRootViewEventData>{ eventName: this.initRootViewEvent, rootView });
}

/**
Expand Down
7 changes: 7 additions & 0 deletions packages/core/application/application-interfaces.ts
Expand Up @@ -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.
*/
Expand Down

0 comments on commit 82e9c67

Please sign in to comment.