diff --git a/src/App.js b/src/App.js index 52376ae2..f1c66008 100644 --- a/src/App.js +++ b/src/App.js @@ -1,77 +1,91 @@ -import { Route, Routes } from "react-router-dom"; -import "./App.css"; -import HomePage from "./Components/HomePage"; -import ChatPage from "./Components/ChatPage"; -import AnimatedCursor from "react-animated-cursor"; - -import { useEffect, useState } from "react"; -import { WiDaySunny } from "react-icons/wi"; -import { MdModeNight } from "react-icons/md"; -import {UseAuthProvider} from "./Context/UserAuthContext"; -import {PrivateRoute} from "./Components/PrivateRoute"; +import { Route, Routes } from 'react-router-dom'; +import './App.css'; +import HomePage from './Components/HomePage'; +import ChatPage from './Components/ChatPage'; +import AnimatedCursor from 'react-animated-cursor'; +import { useEffect, useState } from 'react'; +import { WiDaySunny } from 'react-icons/wi'; +import { MdModeNight } from 'react-icons/md'; +import { UseAuthProvider } from './Context/UserAuthContext'; +import { PrivateRoute } from './Components/PrivateRoute'; +import useOnline from './hooks/useOnline'; +import toast from 'react-hot-toast'; function App() { - // Retrieve dark mode state from local storage or default to false - const [darkMode, setDarkMode] = useState(() => { - const savedDarkMode = localStorage.getItem("darkMode"); - return savedDarkMode ? JSON.parse(savedDarkMode) : false; - }); - - // Update local storage when dark mode state changes - useEffect(() => { - localStorage.setItem("darkMode", JSON.stringify(darkMode)); - }, [darkMode]); + // Retrieve dark mode state from local storage or default to false + const [darkMode, setDarkMode] = useState(() => { + const savedDarkMode = localStorage.getItem('darkMode'); + return savedDarkMode ? JSON.parse(savedDarkMode) : false; + }); + // Update local storage when dark mode state changes + useEffect(() => { + localStorage.setItem('darkMode', JSON.stringify(darkMode)); + }, [darkMode]); - const hanldeDarkMode=()=>{ + const hanldeDarkMode = () => { setDarkMode(!darkMode); + }; + + // checks whether user is connected to Internet or not. + const isOnline = useOnline(); + if (isOnline) { + toast.success('Back Online'); + } else { + toast.error('Please Check Your Internet Connection!'); } - + return (
-
- -
+ +
- - - - }/> - - - - } /> - - - - - + + + } /> + + + + } + /> + + + ); } diff --git a/src/hooks/useOnline.js b/src/hooks/useOnline.js new file mode 100644 index 00000000..b55c30cf --- /dev/null +++ b/src/hooks/useOnline.js @@ -0,0 +1,26 @@ +import { useState, useEffect } from 'react'; + +const useOnline = () => { + const [isOnline, setIsOnline] = useState(true); + + const handleOnline = () => { + setIsOnline(true); + }; + const handleOffline = () => { + setIsOnline(false); + }; + + useEffect(() => { + window.addEventListener('online', handleOnline); + window.addEventListener('offline', handleOffline); + + return () => { + window.removeEventListener('online', handleOnline); + window.removeEventListener('offline', handleOffline); + }; + }); + + return isOnline; +}; + +export default useOnline;