Files
calendar/packages/features/embed/lib/hooks/useEmbedDialogCtx.tsx
T
f6f964d495 feat: Use new /routing URL for routing forms (#19235)
* feat: Use new /routing URL for routing forms

* Fixes

* Fix bug

* precent crash

---------

Co-authored-by: Hariom Balhara <hariombalhara@gmgmail.com>
2025-02-13 15:13:13 +05:30

37 lines
1.1 KiB
TypeScript

import { createContext, useContext } from "react";
import React, { useState } from "react";
import type { EmbedState } from "../../types";
type EmbedDialogContextType = {
embedState: EmbedState;
setEmbedState: React.Dispatch<React.SetStateAction<EmbedState>>;
};
const EmbedDialogContext = createContext<EmbedDialogContextType | null>(null);
export function EmbedDialogProvider({ children }: { children: React.ReactNode }) {
const [embedState, setEmbedState] = useState<EmbedState>(null);
return (
<EmbedDialogContext.Provider value={{ embedState, setEmbedState }}>
{children}
</EmbedDialogContext.Provider>
);
}
export function useEmbedDialogCtx(noQueryParamMode: boolean) {
const context = useContext(EmbedDialogContext);
if (noQueryParamMode) {
if (!context) {
throw new Error("useEmbedDialogCtx must be used within an EmbedDialogProvider");
}
return context;
} else {
return {
embedState: null,
// eslint-disable-next-line @typescript-eslint/no-empty-function
setEmbedState: ((_state: EmbedState) => {}) as React.Dispatch<React.SetStateAction<EmbedState>>,
};
}
}