mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
import {createContext, useCallback} from 'react';
|
|
|
|
import type {OnboardingSelectedSDK, Project} from 'sentry/types';
|
|
import type {IssueAlertRule} from 'sentry/types/alerts';
|
|
import {useSessionStorage} from 'sentry/utils/useSessionStorage';
|
|
|
|
type GettingStartedWithProject = Pick<Project, 'name' | 'id'> & {
|
|
alertRules: IssueAlertRule[];
|
|
platform: OnboardingSelectedSDK;
|
|
teamSlug?: Project['team']['slug'];
|
|
};
|
|
|
|
export type ProjectsContextProps = {
|
|
setProject: (project: GettingStartedWithProject) => void;
|
|
project?: GettingStartedWithProject;
|
|
};
|
|
|
|
export const GettingStartedWithProjectContext = createContext<ProjectsContextProps>({
|
|
project: undefined,
|
|
setProject: () => {},
|
|
});
|
|
|
|
type ProviderProps = {
|
|
children: React.ReactNode;
|
|
project?: GettingStartedWithProject;
|
|
};
|
|
|
|
export function GettingStartedWithProjectContextProvider({
|
|
children,
|
|
project,
|
|
}: ProviderProps) {
|
|
const [sessionStorage, setSessionStorage] = useSessionStorage<{
|
|
project?: GettingStartedWithProject;
|
|
}>('getting-started-with-project', {
|
|
project,
|
|
});
|
|
|
|
const handleSetProject = useCallback(
|
|
(newProject?: GettingStartedWithProject) => {
|
|
setSessionStorage({project: newProject});
|
|
},
|
|
[setSessionStorage]
|
|
);
|
|
|
|
return (
|
|
<GettingStartedWithProjectContext.Provider
|
|
value={{
|
|
project: sessionStorage.project,
|
|
setProject: handleSetProject,
|
|
}}
|
|
>
|
|
{children}
|
|
</GettingStartedWithProjectContext.Provider>
|
|
);
|
|
}
|