From ee6e5386b7c39a82baad19719f18cf773a732241 Mon Sep 17 00:00:00 2001 From: Ansh Nanda Date: Wed, 27 Dec 2023 22:33:30 +0530 Subject: [PATCH] create netinfo lib --- src/lib/net-info.ts | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/lib/net-info.ts diff --git a/src/lib/net-info.ts b/src/lib/net-info.ts new file mode 100644 index 0000000000..2ac0f85468 --- /dev/null +++ b/src/lib/net-info.ts @@ -0,0 +1,36 @@ +import NetInfo, { + NetInfoState, + NetInfoSubscription, +} from '@react-native-community/netinfo' + +type NetworkStateChangeListener = (state: NetInfoState) => void + +class NetInfoAPI { + private subscription: NetInfoSubscription | null = null + private listeners: NetworkStateChangeListener[] = [] + + constructor() { + this.subscribe() + } + + private subscribe() { + this.subscription = NetInfo.addEventListener(this.handleNetworkStateChange) + } + + private handleNetworkStateChange = (state: NetInfoState) => { + this.listeners.forEach(listener => listener(state)) + } + + public addListener(listener: NetworkStateChangeListener) { + this.listeners.push(listener) + } + + public removeListener(listener: NetworkStateChangeListener) { + const index = this.listeners.indexOf(listener) + if (index !== -1) { + this.listeners.splice(index, 1) + } + } +} + +export const netInfoAPI = new NetInfoAPI()