From 852011c4f90e8dc125aa5391d465ef5872e71b7d Mon Sep 17 00:00:00 2001 From: Dimitris-Rafail Katsampas Date: Mon, 3 Mar 2025 16:54:52 +0200 Subject: [PATCH] fix(core): missing parameter for once event listeners (#10715) --- packages/core/data/observable/index.ts | 1 + packages/core/media-query-list/index.ts | 4 ++-- packages/core/ui/core/view/index.android.ts | 4 ++-- packages/core/ui/core/view/view-common.ts | 4 ++-- packages/core/ui/scroll-view/scroll-view-common.ts | 4 ++-- packages/core/ui/text-base/span.ts | 4 ++-- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/core/data/observable/index.ts b/packages/core/data/observable/index.ts index 53d70cb67..8f75ff67d 100644 --- a/packages/core/data/observable/index.ts +++ b/packages/core/data/observable/index.ts @@ -197,6 +197,7 @@ export class Observable { * @param eventName Name of the event to attach to. * @param callback A function to be called when some of the specified event(s) is raised. * @param thisArg An optional parameter which when set will be used as "this" in callback method call. + * @param once An optional parameter which when set will cause the event listener to fire once. */ public addEventListener(eventName: string, callback: (data: EventData) => void, thisArg?: any, once?: boolean): void { once = once || undefined; diff --git a/packages/core/media-query-list/index.ts b/packages/core/media-query-list/index.ts index 06ef71f3d..eea29e9de 100644 --- a/packages/core/media-query-list/index.ts +++ b/packages/core/media-query-list/index.ts @@ -118,13 +118,13 @@ class MediaQueryListImpl extends Observable implements MediaQueryList { } // @ts-ignore - public addEventListener(eventName: string, callback: (data: EventData) => void, thisArg?: any): void { + public addEventListener(eventName: string, callback: (data: EventData) => void, thisArg?: any, once?: boolean): void { this._throwInvocationError?.(); const hasChangeListeners = this.hasListeners(MediaQueryListImpl.changeEvent); // Call super method first since it throws in the case of bad parameters - super.addEventListener(eventName, callback, thisArg); + super.addEventListener(eventName, callback, thisArg, once); if (eventName === MediaQueryListImpl.changeEvent && !hasChangeListeners) { mediaQueryLists.push(this); diff --git a/packages/core/ui/core/view/index.android.ts b/packages/core/ui/core/view/index.android.ts index 8a384fcba..9f3f10a38 100644 --- a/packages/core/ui/core/view/index.android.ts +++ b/packages/core/ui/core/view/index.android.ts @@ -335,8 +335,8 @@ export class View extends ViewCommon { } } - addEventListener(eventNames: string, callback: (data: EventData) => void, thisArg?: any) { - super.addEventListener(eventNames, callback, thisArg); + addEventListener(eventNames: string, callback: (data: EventData) => void, thisArg?: any, once?: boolean) { + super.addEventListener(eventNames, callback, thisArg, once); const isLayoutEvent = typeof eventNames === 'string' ? eventNames.indexOf(ViewCommon.layoutChangedEvent) !== -1 : false; if (this.isLoaded && !this.layoutChangeListenerIsSet && isLayoutEvent) { diff --git a/packages/core/ui/core/view/view-common.ts b/packages/core/ui/core/view/view-common.ts index 3610fa196..1bb2b50fe 100644 --- a/packages/core/ui/core/view/view-common.ts +++ b/packages/core/ui/core/view/view-common.ts @@ -303,7 +303,7 @@ export abstract class ViewCommon extends ViewBase implements ViewDefinition { return this._gestureObservers[type]; } - public addEventListener(eventNames: string, callback: (data: EventData) => void, thisArg?: any) { + public addEventListener(eventNames: string, callback: (data: EventData) => void, thisArg?: any, once?: boolean) { thisArg = thisArg || undefined; // TODO: Remove this once we fully switch to the new event system @@ -330,7 +330,7 @@ export abstract class ViewCommon extends ViewBase implements ViewDefinition { return; } - super.addEventListener(normalizedName, callback, thisArg); + super.addEventListener(normalizedName, callback, thisArg, once); } public removeEventListener(eventNames: string, callback?: (data: EventData) => void, thisArg?: any) { diff --git a/packages/core/ui/scroll-view/scroll-view-common.ts b/packages/core/ui/scroll-view/scroll-view-common.ts index d281a974e..ff9e5a155 100644 --- a/packages/core/ui/scroll-view/scroll-view-common.ts +++ b/packages/core/ui/scroll-view/scroll-view-common.ts @@ -17,10 +17,10 @@ export abstract class ScrollViewBase extends ContentView implements ScrollViewDe private _addedScrollEvent = false; - public addEventListener(arg: string, callback: (data: EventData) => void, thisArg?: any): void { + public addEventListener(arg: string, callback: (data: EventData) => void, thisArg?: any, once?: boolean): void { const hasExistingScrollListeners: boolean = this.hasListeners(ScrollViewBase.scrollEvent); - super.addEventListener(arg, callback, thisArg); + super.addEventListener(arg, callback, thisArg, once); // This indicates that a scroll listener was added for first time if (!hasExistingScrollListeners && this.hasListeners(ScrollViewBase.scrollEvent)) { diff --git a/packages/core/ui/text-base/span.ts b/packages/core/ui/text-base/span.ts index f94b1f604..457bcde3b 100644 --- a/packages/core/ui/text-base/span.ts +++ b/packages/core/ui/text-base/span.ts @@ -113,8 +113,8 @@ export class Span extends ViewBase implements SpanDefinition { return this._tappable; } - addEventListener(arg: string, callback: (data: EventData) => void, thisArg?: any): void { - super.addEventListener(arg, callback, thisArg); + addEventListener(arg: string, callback: (data: EventData) => void, thisArg?: any, once?: boolean): void { + super.addEventListener(arg, callback, thisArg, once); this._setTappable(this.hasListeners(Span.linkTapEvent)); }