UNPKG

@adapty/capacitor

Version:
58 lines (57 loc) 2.38 kB
import type { PluginListenerHandle } from '@capacitor/core'; import { LogContext } from '../shared/logger'; export interface CapacitorEventArg { data: string; } export interface BaseEventConfig { nativeEvent: string; handlerName: string; propertyMap?: { [key: string]: string; }; } export interface HandlerData<THandler> { handler: THandler; config: BaseEventConfig; onRequestClose: () => Promise<void>; } /** * Base class for view event emitters that manages common event handling logic. * Each event type can have only one handler - new handlers replace existing ones. */ export declare abstract class BaseViewEmitter<TEventHandlers extends Record<string, any>, TEventData> { protected viewId: string; protected eventListeners: Map<string, PluginListenerHandle>; protected handlers: Map<keyof TEventHandlers, HandlerData<TEventHandlers[keyof TEventHandlers]>>; constructor(viewId: string); /** * Abstract method to get event configuration for a handler */ protected abstract getEventConfig(event: keyof TEventHandlers): BaseEventConfig | undefined; /** * Abstract method to parse event data from JSON string */ protected abstract parseEventData(rawEventData: string, ctx: LogContext): TEventData; /** * Abstract method to get possible handlers for a native event */ protected abstract getPossibleHandlers(nativeEvent: string): (keyof TEventHandlers)[]; /** * Abstract method to extract callback arguments for a specific handler */ protected abstract extractCallbackArgs(handlerName: keyof TEventHandlers, eventData: TEventData): unknown[]; /** * Abstract method to get view ID from parsed event data */ protected abstract getEventViewId(eventData: TEventData): string | null; /** * Abstract method to check if handler should be called based on event data */ protected abstract shouldCallHandler(handlerName: keyof TEventHandlers, config: BaseEventConfig, eventData: TEventData): boolean; /** * Abstract method to get emitter name for error messages */ protected abstract getEmitterName(): string; addListener(event: keyof TEventHandlers, callback: TEventHandlers[keyof TEventHandlers], onRequestClose: () => Promise<void>): Promise<PluginListenerHandle>; removeAllListeners(): void; }