mirror of
https://github.com/morten-olsen/refocus.dev.git
synced 2026-02-08 00:46:25 +01:00
init
This commit is contained in:
52
packages/ui/src/provider.tsx
Normal file
52
packages/ui/src/provider.tsx
Normal file
@@ -0,0 +1,52 @@
|
||||
import { DashboardProvider, Widget } from '@refocus/sdk';
|
||||
import { UIProvider } from './theme/provider';
|
||||
import { useCallback, useMemo } from 'react';
|
||||
import { GithubLogin } from './github';
|
||||
import { LinearLogin } from './linear';
|
||||
import { SlackLogin } from './slack';
|
||||
|
||||
type FocusProviderProps = {
|
||||
children: React.ReactNode;
|
||||
widgets: Widget<any>[];
|
||||
};
|
||||
|
||||
const FocusProvider: React.FC<FocusProviderProps> = ({ children, widgets }) => {
|
||||
const save = useCallback((data: any) => {
|
||||
localStorage.setItem('boards', JSON.stringify(data));
|
||||
}, []);
|
||||
|
||||
const logins = useMemo(
|
||||
() => ({
|
||||
github: GithubLogin,
|
||||
linear: LinearLogin,
|
||||
slack: SlackLogin,
|
||||
}),
|
||||
[],
|
||||
);
|
||||
|
||||
const load = useCallback(() => {
|
||||
const data = localStorage.getItem('boards');
|
||||
if (data) {
|
||||
return JSON.parse(data);
|
||||
}
|
||||
return {
|
||||
boards: {},
|
||||
selected: undefined,
|
||||
};
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<UIProvider>
|
||||
<DashboardProvider
|
||||
load={load}
|
||||
save={save}
|
||||
widgets={widgets}
|
||||
logins={logins}
|
||||
>
|
||||
{children}
|
||||
</DashboardProvider>
|
||||
</UIProvider>
|
||||
);
|
||||
};
|
||||
|
||||
export { FocusProvider };
|
||||
Reference in New Issue
Block a user