UNPKG

react-native-simcard-info

Version:
38 lines (37 loc) 1.39 kB
"use strict"; import React from 'react'; import NativeSimcardInfo from "../NativeSimcardInfo.js"; const isEqualObjectArray = (prevState, newState) => { if (prevState.length !== newState.length) return false; for (let i = 0; i < prevState.length; i++) { const prevObj = prevState[i]; const newObj = newState[i]; if (!prevObj || !newObj) return false; const prevObjEntries = Object.entries(prevObj).sort(); const newObjEntries = Object.entries(newObj).sort(); if (JSON.stringify(prevObjEntries) !== JSON.stringify(newObjEntries)) return false; } return true; }; export const useSIMStateChange = () => { const [simState, setSimState] = React.useState([]); const simStateRef = React.useRef([]); React.useEffect(() => { NativeSimcardInfo.addOnSimCardStateChangeListener(); const handleStateChange = newSimState => { // Compare with the reference value instead of triggering re-renders if (!isEqualObjectArray(simStateRef.current, newSimState)) { simStateRef.current = newSimState; // Update the reference setSimState(newSimState); // Trigger a re-render only if needed } }; NativeSimcardInfo.onSIMCardStateChange(handleStateChange); return () => { NativeSimcardInfo.removeOnSimCardStateChangeListener(); }; }, []); return { simState }; }; //# sourceMappingURL=useSIMStateChange.js.map