diff --git a/app/component/modalSearchCity/index.js b/app/component/modalSearchCity/index.js index 490c1ed..1198a29 100644 --- a/app/component/modalSearchCity/index.js +++ b/app/component/modalSearchCity/index.js @@ -8,13 +8,12 @@ import { styleDefault } from "@/mui"; import statesData from "@/data/state.json"; import citiesData from "@/data/city.json"; import Content from "./Content"; +import { useProvince } from "@/context/ProvinceProvider"; function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { const provinceSelected = selected.province; - const [hostName, setHostName] = useState(""); - const isProvinceInclude = citiesData.find( - (city) => city.domain !== "nobat724.com" && hostName.includes(city.domain) - ); + const { isProvinceInclude } = useProvince(); + const [states, setStates] = useState([]); const [cities, setCities] = useState([]); const [filteredCities, setFilteredCities] = useState([]); @@ -36,8 +35,6 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { province_id: city.province_id, })); - setHostName(window.location.hostname); - setStates(formattedStates); setCities(formattedCities); }, []); diff --git a/app/layout.js b/app/layout.js index 2e3bd3a..3640579 100644 --- a/app/layout.js +++ b/app/layout.js @@ -8,6 +8,7 @@ import { GoogleTagManager } from "@next/third-parties/google"; // Toastify import "react-toastify/dist/ReactToastify.css"; import CustomToastify from "./CustomToastify"; +import { ProvinceProvider } from "@/context/ProvinceProvider"; export const metadata = { title: "نوبت724", @@ -28,7 +29,9 @@ export default function RootLayout({ children }) { - {children} + + {children} + diff --git a/context/ProvinceProvider.js b/context/ProvinceProvider.js new file mode 100644 index 0000000..726b46a --- /dev/null +++ b/context/ProvinceProvider.js @@ -0,0 +1,27 @@ +"use client"; + +import { createContext, useContext, useState, useEffect } from "react"; +import citiesData from "@/data/city.json"; + +const ProvinceContext = createContext(); + +export const ProvinceProvider = ({ children }) => { + const [hostName, setHostName] = useState(""); + const isProvinceInclude = citiesData.find( + (city) => city.domain !== "nobat724.com" && hostName.includes(city.domain) + ); + + useEffect(() => { + if (typeof window !== "undefined") { + setHostName(window.location.hostname); + } + }, []); + + return ( + + {children} + + ); +}; + +export const useProvince = () => useContext(ProvinceContext);