Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generic events #10193

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions packages/core/accessibility/accessibility-common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export function notifyAccessibilityFocusState(view: View, receivedFocus: boolean
eventName: accessibilityFocusChangedEvent,
object: view,
value: !!receivedFocus,
} as EventDataValue);
});

if (receivedFocus) {
if (view.page) {
Expand All @@ -38,12 +38,12 @@ export function notifyAccessibilityFocusState(view: View, receivedFocus: boolean
view.notify({
eventName: accessibilityFocusEvent,
object: view,
} as EventData);
});
} else if (lostFocus) {
view.notify({
eventName: accessibilityBlurEvent,
object: view,
} as EventData);
});
}
}

Expand Down
4 changes: 2 additions & 2 deletions packages/core/accessibility/accessibility-types.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { EventData } from '../data/observable';
import type { EventData, Observable } from '../data/observable';

export enum AccessibilityTrait {
/**
Expand Down Expand Up @@ -264,7 +264,7 @@ export enum AndroidAccessibilityEvent {
ALL_MASK = 'all',
}

export interface AccessibilityEventPerformEscape extends EventData {
export interface AccessibilityEventPerformEscape<T extends Observable = Observable> extends EventData<T> {
cancel?: boolean;
}

Expand Down
48 changes: 31 additions & 17 deletions packages/core/application/application-interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Types
import { EventData } from '../data/observable';
import { EventData, Observable } from '../data/observable';
import { View } from '../ui/core/view';

/**
Expand All @@ -12,7 +12,7 @@ export interface NativeScriptError extends Error {
nativeError: any;
}

export interface ApplicationEventData extends EventData {
export interface ApplicationEventData<T extends Observable = Observable> extends EventData<T> {
/**
* UIApplication or undefined, unless otherwise specified. Prefer explicit
* properties where possible.
Expand All @@ -34,7 +34,7 @@ export interface ApplicationEventData extends EventData {
object: any;
}

export interface LaunchEventData extends ApplicationEventData {
export interface LaunchEventData<T extends Observable = Observable> extends ApplicationEventData<T> {
/**
* The value stored into didFinishLaunchingWithOptions notification's
* userInfo under 'UIApplicationLaunchOptionsLocalNotificationKey';
Expand All @@ -45,57 +45,71 @@ export interface LaunchEventData extends ApplicationEventData {
savedInstanceState?: any /* android.os.Bundle */;
}

export interface OrientationChangedEventData extends ApplicationEventData {
export interface OrientationChangedEventData<T extends Observable = Observable> extends ApplicationEventData<T> {
android: any /* globalAndroid.app.Application */;
newValue: 'portrait' | 'landscape' | 'unknown';
}

export interface SystemAppearanceChangedEventData extends ApplicationEventData {
export interface SystemAppearanceChangedEventData<T extends Observable = Observable> extends ApplicationEventData<T> {
android: any /* globalAndroid.app.Application */;
newValue: 'light' | 'dark';
}

export interface UnhandledErrorEventData extends ApplicationEventData {
export interface UnhandledErrorEventData<T extends Observable = Observable> extends ApplicationEventData<T> {
ios?: NativeScriptError;
android?: NativeScriptError;
error: NativeScriptError;
}

export interface DiscardedErrorEventData extends ApplicationEventData {
export interface DiscardedErrorEventData<T extends Observable = Observable> extends ApplicationEventData<T> {
error: NativeScriptError;
}

export interface CssChangedEventData extends ApplicationEventData {
export interface CssChangedEventData<T extends Observable = Observable> extends ApplicationEventData<T> {
cssFile?: string;
cssText?: string;
}

export interface AndroidActivityEventData extends ApplicationEventData {
activity: any /* androidx.appcompat.app.AppCompatActivity */;
object: any /* AndroidApplication */;
export interface AndroidActivityEventData<T extends Observable = Observable> extends ApplicationEventData<T> {
/**
* The activity.
* androidx.appcompat.app.AppCompatActivity
*/
activity: any;

/**
* The name of the event.
*/
eventName: string;

/**
* The instance that has raised the event.
* AndroidApplication
*/
object: T;
}

export interface AndroidActivityBundleEventData extends AndroidActivityEventData {
export interface AndroidActivityBundleEventData<T extends Observable = Observable> extends AndroidActivityEventData<T> {
bundle: any /* android.os.Bundle */;
}

export interface AndroidActivityRequestPermissionsEventData extends AndroidActivityEventData {
export interface AndroidActivityRequestPermissionsEventData<T extends Observable = Observable> extends AndroidActivityEventData<T> {
requestCode: number;
permissions: Array<string>;
grantResults: Array<number>;
}

export interface AndroidActivityResultEventData extends AndroidActivityEventData {
export interface AndroidActivityResultEventData<T extends Observable = Observable> extends AndroidActivityEventData<T> {
requestCode: number;
resultCode: number;
intent: any /* android.content.Intent */;
}

export interface AndroidActivityNewIntentEventData extends AndroidActivityEventData {
export interface AndroidActivityNewIntentEventData<T extends Observable = Observable> extends AndroidActivityEventData<T> {
intent: any /* android.content.Intent */;
}

export interface AndroidActivityBackPressedEventData extends AndroidActivityEventData {
export interface AndroidActivityBackPressedEventData<T extends Observable = Observable> extends AndroidActivityEventData<T> {
cancel: boolean;
}

Expand All @@ -106,6 +120,6 @@ export interface RootViewControllerImpl {
contentController: any;
}

export interface LoadAppCSSEventData extends ApplicationEventData {
export interface LoadAppCSSEventData<T extends Observable = Observable> extends ApplicationEventData<T> {
cssFile: string;
}
24 changes: 12 additions & 12 deletions packages/core/application/index.android.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,18 +163,18 @@ export class AndroidApplication extends Observable implements AndroidApplication
// HACK: We declare all these 'on' statements, so that they can appear in the API reference
// HACK: Do we need this? Is it useful? There are static fields to the AndroidApplication class for the event names.
export interface AndroidApplication {
on(eventNames: string, callback: (data: AndroidActivityEventData) => void, thisArg?: any): void;
on(event: 'activityCreated', callback: (args: AndroidActivityBundleEventData) => void, thisArg?: any): void;
on(event: 'activityDestroyed', callback: (args: AndroidActivityEventData) => void, thisArg?: any): void;
on(event: 'activityStarted', callback: (args: AndroidActivityEventData) => void, thisArg?: any): void;
on(event: 'activityPaused', callback: (args: AndroidActivityEventData) => void, thisArg?: any): void;
on(event: 'activityResumed', callback: (args: AndroidActivityEventData) => void, thisArg?: any): void;
on(event: 'activityStopped', callback: (args: AndroidActivityEventData) => void, thisArg?: any): void;
on(event: 'saveActivityState', callback: (args: AndroidActivityBundleEventData) => void, thisArg?: any): void;
on(event: 'activityResult', callback: (args: AndroidActivityResultEventData) => void, thisArg?: any): void;
on(event: 'activityBackPressed', callback: (args: AndroidActivityBackPressedEventData) => void, thisArg?: any): void;
on(event: 'activityNewIntent', callback: (args: AndroidActivityNewIntentEventData) => void, thisArg?: any): void;
on(event: 'activityRequestPermissions', callback: (args: AndroidActivityRequestPermissionsEventData) => void, thisArg?: any): void;
on<T extends Observable = Observable>(eventNames: string, callback: (data: AndroidActivityEventData<T>) => void, thisArg?: any): void;
on<T extends Observable = Observable>(event: 'activityCreated', callback: (args: AndroidActivityBundleEventData<T>) => void, thisArg?: any): void;
on<T extends Observable = Observable>(event: 'activityDestroyed', callback: (args: AndroidActivityEventData<T>) => void, thisArg?: any): void;
on<T extends Observable = Observable>(event: 'activityStarted', callback: (args: AndroidActivityEventData<T>) => void, thisArg?: any): void;
on<T extends Observable = Observable>(event: 'activityPaused', callback: (args: AndroidActivityEventData<T>) => void, thisArg?: any): void;
on<T extends Observable = Observable>(event: 'activityResumed', callback: (args: AndroidActivityEventData<T>) => void, thisArg?: any): void;
on<T extends Observable = Observable>(event: 'activityStopped', callback: (args: AndroidActivityEventData<T>) => void, thisArg?: any): void;
on<T extends Observable = Observable>(event: 'saveActivityState', callback: (args: AndroidActivityBundleEventData<T>) => void, thisArg?: any): void;
on<T extends Observable = Observable>(event: 'activityResult', callback: (args: AndroidActivityResultEventData<T>) => void, thisArg?: any): void;
on<T extends Observable = Observable>(event: 'activityBackPressed', callback: (args: AndroidActivityBackPressedEventData<T>) => void, thisArg?: any): void;
on<T extends Observable = Observable>(event: 'activityNewIntent', callback: (args: AndroidActivityNewIntentEventData<T>) => void, thisArg?: any): void;
on<T extends Observable = Observable>(event: 'activityRequestPermissions', callback: (args: AndroidActivityRequestPermissionsEventData<T>) => void, thisArg?: any): void;
}

let androidApp: AndroidApplication;
Expand Down
Loading