/* eslint-disable @typescript-eslint/no-explicit-any */
import { useEffect, useRef, useState } from 'react';
import { AppState, AppStateStatus } from 'react-native';

const getIsAppActive = (currentAppState: AppStateStatus) => {
  return currentAppState !== 'background' && currentAppState !== 'inactive';
};

export const useAppStateListener = () => {
  const appState = useRef(AppState.currentState);
  const [isAppActive, setIsAppActive] = useState<boolean>(getIsAppActive(appState.current));

  useEffect(() => {
    const subscription = AppState.addEventListener('change', nextAppState => {
      appState.current = nextAppState;
      setIsAppActive(getIsAppActive(appState.current));
    });

    return () => {
      subscription.remove();
    };
  }, []);

  return isAppActive;
};
