netsignal
Version:
Instant network detection for React Native and Web - Turbo Module enabled
56 lines (54 loc) • 1.47 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NativeNetSignal = void 0;
var _reactNative = require("react-native");
var _base = require("./base");
/**
* Native implementation for iOS/Android
* Tree-shakable - no web dependencies
*/
class NativeNetSignal extends _base.BaseNetSignal {
native = _reactNative.NativeModules.NetSignal || null;
emitter = this.native ? new _reactNative.NativeEventEmitter(_reactNative.NativeModules.NetSignal) : null;
listeners = new Map();
isConnected() {
return this.native?.isConnected() ?? false;
}
getType() {
return this.native?.getConnectionType() ?? 'unknown';
}
async probe(url, timeoutMs = 5000) {
if (!this.native) {
return {
reachable: false,
responseTime: -1,
error: 'Native module not available'
};
}
try {
return await this.native.probe(url, timeoutMs);
} catch (error) {
return {
reachable: false,
responseTime: -1,
error: error.message
};
}
}
onChange(callback) {
if (!this.emitter) {
return () => {};
}
const id = Math.random().toString(36);
const subscription = this.emitter.addListener('connectionChange', callback);
this.listeners.set(id, subscription);
return () => {
subscription.remove();
this.listeners.delete(id);
};
}
}
exports.NativeNetSignal = NativeNetSignal;
//# sourceMappingURL=native.js.map
;