fixing up routing to make it more friendly
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user