MCPcopy
hub / github.com/ionic-team/capacitor / WebPlugin

Class WebPlugin

core/src/web-plugin.ts:9–136  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7 * Base class web plugins should extend.
8 */
9export class WebPlugin implements Plugin {
10 protected listeners: { [eventName: string]: ListenerCallback[] } = {};
11 protected retainedEventArguments: { [eventName: string]: any[] } = {};
12 protected windowListeners: { [eventName: string]: WindowListenerHandle } = {};
13
14 addListener(eventName: string, listenerFunc: ListenerCallback): Promise<PluginListenerHandle> {
15 let firstListener = false;
16
17 const listeners = this.listeners[eventName];
18 if (!listeners) {
19 this.listeners[eventName] = [];
20 firstListener = true;
21 }
22
23 this.listeners[eventName].push(listenerFunc);
24
25 // If we haven't added a window listener for this event and it requires one,
26 // go ahead and add it
27 const windowListener = this.windowListeners[eventName];
28 if (windowListener && !windowListener.registered) {
29 this.addWindowListener(windowListener);
30 }
31
32 if (firstListener) {
33 this.sendRetainedArgumentsForEvent(eventName);
34 }
35
36 const remove = async () => this.removeListener(eventName, listenerFunc);
37
38 const p: any = Promise.resolve({ remove });
39
40 return p;
41 }
42
43 async removeAllListeners(): Promise<void> {
44 this.listeners = {};
45 for (const listener in this.windowListeners) {
46 this.removeWindowListener(this.windowListeners[listener]);
47 }
48 this.windowListeners = {};
49 }
50
51 protected notifyListeners(eventName: string, data: any, retainUntilConsumed?: boolean): void {
52 const listeners = this.listeners[eventName];
53 if (!listeners) {
54 if (retainUntilConsumed) {
55 let args = this.retainedEventArguments[eventName];
56 if (!args) {
57 args = [];
58 }
59
60 args.push(data);
61
62 this.retainedEventArguments[eventName] = args;
63 }
64
65 return;
66 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected