Created the DomainContext.jsx
This commit is contained in:
33
admin/src/common/contexts/Domain/DomainContext.jsx
Normal file
33
admin/src/common/contexts/Domain/DomainContext.jsx
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import React, {createContext, useEffect, useState} from "react";
|
||||||
|
import {jsonRequest} from "@/common/utils/RequestUtil";
|
||||||
|
|
||||||
|
export const DomainContext = createContext({});
|
||||||
|
|
||||||
|
export const DomainProvider = (props) => {
|
||||||
|
|
||||||
|
const [currentDomain, setCurrentDomain] = useState(localStorage.getItem("domain") || window.location.host);
|
||||||
|
const [domains, setDomains] = useState([]);
|
||||||
|
|
||||||
|
const updateDomains = () => jsonRequest(`/domains`)
|
||||||
|
.then(json => setDomains(json));
|
||||||
|
|
||||||
|
const updateCurrentDomain = (domain) => {
|
||||||
|
setCurrentDomain(domain);
|
||||||
|
localStorage.setItem("domain", domain);
|
||||||
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
updateDomains();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!domains.includes(currentDomain))
|
||||||
|
updateCurrentDomain(domains.length !== 0 ? domains[0] : window.location.host);
|
||||||
|
}, [domains]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<DomainContext.Provider value={[currentDomain, updateCurrentDomain, domains, updateDomains]}>
|
||||||
|
{props.children}
|
||||||
|
</DomainContext.Provider>
|
||||||
|
)
|
||||||
|
}
|
Reference in New Issue
Block a user