From a09202d653ebec6c3cff73b0be39d603c6b11f91 Mon Sep 17 00:00:00 2001 From: talksik Date: Sat, 11 Jun 2022 06:42:41 -0500 Subject: [PATCH] fixing up routing to make it more friendly --- .../desktop/src/providers/RouterProvider.tsx | 29 ++++++++++--------- packages/desktop/src/tree/Navbar.tsx | 8 ++++- .../src/tree/NewConversationDialog.tsx | 17 +++++------ packages/desktop/src/tree/Terminal.tsx | 1 - 4 files changed, 31 insertions(+), 24 deletions(-) diff --git a/packages/desktop/src/providers/RouterProvider.tsx b/packages/desktop/src/providers/RouterProvider.tsx index 47b5ab0..613a33f 100644 --- a/packages/desktop/src/providers/RouterProvider.tsx +++ b/packages/desktop/src/providers/RouterProvider.tsx @@ -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>; + page: TPage; + handleSetPage?: (newPage: TPage) => () => void; } const RouterContext = React.createContext({ - page: EPage.START_NEW_CONVERSATION, + page: 'START_NEW_CONVERSATION', }); export function RouterProvider({ children }: { children: React.ReactNode }) { - const [page, setPage] = useState(EPage.START_NEW_CONVERSATION); + const [page, setPage] = useState('START_NEW_CONVERSATION'); - return {children}; + const handleSetPage = useCallback((newPage: TPage) => () => setPage(newPage), [setPage]); + + return ( + {children} + ); } export default function useRouter() { diff --git a/packages/desktop/src/tree/Navbar.tsx b/packages/desktop/src/tree/Navbar.tsx index a1d0702..6bea207 100644 --- a/packages/desktop/src/tree/Navbar.tsx +++ b/packages/desktop/src/tree/Navbar.tsx @@ -7,10 +7,12 @@ import KeyboardShortcutLabel from '../subcomponents/KeyboardShortcutLabel'; import { KeyboardShortcuts } from '../util/keyboard'; import NirvanaLogo from '../subcomponents/NirvanaLogo'; import { blueGrey } from '@mui/material/colors'; +import useRouter from '../providers/RouterProvider'; import useSearch from '../providers/SearchProvider'; import useTerminal from './Terminal'; const Navbar = () => { + const { handleSetPage } = useRouter(); const { searchQuery, omniSearch, conversationResults, userResults, isSearching } = useSearch(); const searchRef = useRef(null); @@ -79,7 +81,11 @@ const Navbar = () => { - + diff --git a/packages/desktop/src/tree/NewConversationDialog.tsx b/packages/desktop/src/tree/NewConversationDialog.tsx index 9fc8a58..1a63eeb 100644 --- a/packages/desktop/src/tree/NewConversationDialog.tsx +++ b/packages/desktop/src/tree/NewConversationDialog.tsx @@ -18,7 +18,6 @@ import { } from '@mui/material'; import React, { HTMLAttributes, useCallback, useEffect, useState } from 'react'; import { useDebounce, useKeyPressEvent, useToggle } from 'react-use'; -import useRouter, { EPage } from '../providers/RouterProvider'; import CircularProgress from '@mui/material/CircularProgress'; import { FiX } from 'react-icons/fi'; @@ -28,10 +27,11 @@ import UserDetailRow from '../subcomponents/UserDetailRow'; import { blueGrey } from '@mui/material/colors'; import toast from 'react-hot-toast'; import useAuth from '../providers/AuthProvider'; +import useRouter from '../providers/RouterProvider'; import useSearch from '../providers/SearchProvider'; export default function NewConversationDialog() { - const { page, setPage } = useRouter(); + const { page, handleSetPage } = useRouter(); const { user } = useAuth(); @@ -102,12 +102,8 @@ export default function NewConversationDialog() { setIsSubmitting(false); }, [selectedUsers, setConversationName, conversationName, setSelectedUsers, setIsSubmitting]); - const handleClose = useCallback(() => { - setPage(EPage.WELCOME); - }, [setPage]); - return ( - + - + @@ -174,7 +173,7 @@ export default function NewConversationDialog() { )} -