This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.8 KiB
68 lines
1.8 KiB
/** |
|
* Copyright (c) 2015-present, Facebook, Inc. |
|
* |
|
* This source code is licensed under the MIT license found in the |
|
* LICENSE file in the root directory of this source tree. |
|
* |
|
* @providesModule NativeEventEmitter |
|
* @flow |
|
*/ |
|
'use strict'; |
|
|
|
const EventEmitter = require('EventEmitter'); |
|
const Platform = require('Platform'); |
|
const RCTDeviceEventEmitter = require('RCTDeviceEventEmitter'); |
|
|
|
const invariant = require('fbjs/lib/invariant'); |
|
|
|
import type EmitterSubscription from 'EmitterSubscription'; |
|
|
|
type NativeModule = { |
|
+addListener: (eventType: string) => void, |
|
+removeListeners: (count: number) => void, |
|
}; |
|
|
|
/** |
|
* Abstract base class for implementing event-emitting modules. This implements |
|
* a subset of the standard EventEmitter node module API. |
|
*/ |
|
class NativeEventEmitter extends EventEmitter { |
|
_nativeModule: ?NativeModule; |
|
|
|
constructor(nativeModule: ?NativeModule) { |
|
super(RCTDeviceEventEmitter.sharedSubscriber); |
|
if (Platform.OS === 'ios') { |
|
invariant(nativeModule, 'Native module cannot be null.'); |
|
this._nativeModule = nativeModule; |
|
} |
|
} |
|
|
|
addListener( |
|
eventType: string, |
|
listener: Function, |
|
context: ?Object, |
|
): EmitterSubscription { |
|
if (this._nativeModule != null) { |
|
this._nativeModule.addListener(eventType); |
|
} |
|
return super.addListener(eventType, listener, context); |
|
} |
|
|
|
removeAllListeners(eventType: string) { |
|
invariant(eventType, 'eventType argument is required.'); |
|
const count = this.listeners(eventType).length; |
|
if (this._nativeModule != null) { |
|
this._nativeModule.removeListeners(count); |
|
} |
|
super.removeAllListeners(eventType); |
|
} |
|
|
|
removeSubscription(subscription: EmitterSubscription) { |
|
if (this._nativeModule != null) { |
|
this._nativeModule.removeListeners(1); |
|
} |
|
super.removeSubscription(subscription); |
|
} |
|
} |
|
|
|
module.exports = NativeEventEmitter;
|
|
|