Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { useAsync } from "@hooks/useAsync";
- import { ISettingDto } from "@route/v1/card2card/interfaces";
- import { createContext, ReactNode, useContext } from "react";
- import { request } from "utils/dbo-request";
- import { useSession } from "./Session";
- export interface ISettingsStateContext {
- // execute: () => Promise<void>;
- status: string;
- // value: unknown;// ISettingDto | null;
- // error: any;
- }
- const SettingsStateContext = createContext<ISettingsStateContext | undefined>(
- undefined
- );
- const getSettings = (): Promise<ISettingDto> =>
- new Promise((resolve, reject) => {
- request<ISettingDto>({ method: "GET", url: "api/v1/card2card/settings" })
- .then((data) => resolve(data))
- .catch((error) => reject(error));
- });
- const sleep = (time = 1000) =>
- new Promise((resolve) => setTimeout(resolve, time));
- function SettingsProvider({ children }: { children: ReactNode }) {
- console.log("run SettingsProvider");
- const { state } = useSession();
- const { status, value } = useAsync<unknown>(
- sleep,
- state === "success"
- );
- console.group("SettingsProvider");
- console.log("status", state);
- console.log({ status, value });
- console.groupEnd();
- return (
- <SettingsStateContext.Provider
- value={{ status }}
- children={children}
- />
- );
- }
- function useSettings() {
- const context = useContext(SettingsStateContext);
- if (context === undefined) {
- throw new Error("useSettings must be used within a SettingsProvider");
- }
- return context;
- }
- export { SettingsProvider, useSettings };
Advertisement
Add Comment
Please, Sign In to add comment