import React, { createContext, useState } from "react";
import { IContext, IGlobalState, IUser, props } from "./types";
import QuestNotification from "../services/QuestNotification";

export const QuestContext = createContext<IContext>({
  apiKey: "",
  entityId: "",
  setUser({ userId, token }) { },
});

export const QuestProvider = (props: props) => {
  const [globalState, setGlobalState] = useState<IGlobalState>({});

  const setUser = ({ userId, token }: IUser) => {
    setGlobalState((prev) => ({
      ...prev,
      user: { userId, token },
    }));
  };

  return (
    <QuestContext.Provider
      value={{
        apiKey: props.apiKey,
        authenticationToken:props.authenticationToken,
        entityId: props.entityId,
        user: globalState.user,
        setUser,
        fontFamily:props.fontFamily,
      }}
    >
      {props.children}
      <QuestNotification />
    </QuestContext.Provider>
  );
};
