application.store.tsx•1.47 kB
/*
* Copyright (C) 2025 by Fonoster Inc (https://fonoster.com)
* http://github.com/fonoster/fonoster
*
* This file is part of Fonoster
*
* Licensed under the MIT License (the "License");
* you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* https://opensource.org/licenses/MIT
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { createContext, useContext, useState } from "react";
import type {
ApplicationContextValue,
ApplicationProviderProps
} from "./application.interfaces";
export const ApplicationContext = createContext<ApplicationContextValue | null>(
null
);
export const ApplicationProvider = ({ children }: ApplicationProviderProps) => {
const [application, setApplication] = useState({ ref: "" });
return (
<ApplicationContext.Provider value={{ application, setApplication }}>
{children}
</ApplicationContext.Provider>
);
};
export const useApplicationContext = () => {
const context = useContext(ApplicationContext);
if (!context) {
throw new Error(
"useApplication() must be used within an <ApplicationProvider />"
);
}
return context;
};