fixing up routing to make it more friendly

This commit is contained in:
talksik
2022-06-11 06:42:41 -05:00
parent 57351d31c9
commit a09202d653
4 changed files with 31 additions and 24 deletions
@@ -1,28 +1,31 @@
// make do router given absense of react router in desktop apps
import React, { useState } from 'react';
import React, { useCallback, useState } from 'react';
export enum EPage {
START_NEW_CONVERSATION = 'START_NEW_CONVERSATION',
FULL_PAGE_OMNI_SEARCH = 'FULL_PAGE_OMNI_SEARCH',
CONVERSATION_DETAILS = 'CONVERSATION_DETAILS',
PROFILE = 'PROFILE',
WELCOME = 'WELCOME',
}
type TPage =
| 'START_NEW_CONVERSATION'
| 'FULL_PAGE_OMNI_SEARCH'
| 'CONVERSATION_DETAILS'
| 'PROFILE'
| 'WELCOME';
interface IRouterContext {
page: EPage;
setPage?: React.Dispatch<React.SetStateAction<EPage>>;
page: TPage;
handleSetPage?: (newPage: TPage) => () => void;
}
const RouterContext = React.createContext<IRouterContext>({
page: EPage.START_NEW_CONVERSATION,
page: 'START_NEW_CONVERSATION',
});
export function RouterProvider({ children }: { children: React.ReactNode }) {
const [page, setPage] = useState<EPage>(EPage.START_NEW_CONVERSATION);
const [page, setPage] = useState<TPage>('START_NEW_CONVERSATION');
return <RouterContext.Provider value={{ page, setPage }}>{children}</RouterContext.Provider>;
const handleSetPage = useCallback((newPage: TPage) => () => setPage(newPage), [setPage]);
return (
<RouterContext.Provider value={{ page, handleSetPage }}>{children}</RouterContext.Provider>
);
}
export default function useRouter() {