calcom/apps/web/contexts/contractsContext.tsx
Hariom Balhara 9825754b32
Hotfix: blank page for booking embed in Incognito Chrome (#2700)
* Merge remote-tracking branch 'origin/main' into feat/success-url

* Fix localstorage access

* Fix Comments

* make custom eleemnt explicitly 100% in width to go full width in a flex type parent

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2022-05-09 18:12:47 +00:00

46 lines
1.1 KiB
TypeScript

import { createContext, ReactNode, useContext } from "react";
import { localStorage } from "@calcom/lib/webstorage";
type contractsContextType = Record<string, string>;
const contractsContextDefaultValue: contractsContextType = {};
const ContractsContext = createContext<contractsContextType>(contractsContextDefaultValue);
export function useContracts() {
return useContext(ContractsContext);
}
type Props = {
children: ReactNode;
};
interface addContractsPayload {
address: string;
signature: string;
}
export function ContractsProvider({ children }: Props) {
const addContract = (payload: addContractsPayload) => {
localStorage.setItem(
"contracts",
JSON.stringify({
...JSON.parse(localStorage.getItem("contracts") || "{}"),
[payload.address]: payload.signature,
})
);
};
const value = {
contracts: typeof window !== "undefined" ? JSON.parse(localStorage.getItem("contracts") || "{}") : {},
addContract,
};
return (
<>
{/* @ts-ignore */}
<ContractsContext.Provider value={value}>{children}</ContractsContext.Provider>
</>
);
}