From 84208b28e0042baef077eb548f434587d09d70bd Mon Sep 17 00:00:00 2001 From: talksik Date: Sun, 29 May 2022 13:32:34 -0500 Subject: [PATCH] separating out the navbar --- packages/desktop/src/components/Navbar.tsx | 184 ++++++++----------- packages/desktop/src/components/Terminal.tsx | 72 +------- 2 files changed, 82 insertions(+), 174 deletions(-) diff --git a/packages/desktop/src/components/Navbar.tsx b/packages/desktop/src/components/Navbar.tsx index b332c31..26e2b02 100644 --- a/packages/desktop/src/components/Navbar.tsx +++ b/packages/desktop/src/components/Navbar.tsx @@ -1,9 +1,11 @@ -import React from 'react'; +import React, { useRef, useCallback } from 'react'; import { Avatar, + CircularProgress, Divider, IconButton, + Input, ListItemIcon, Menu, Stack, @@ -11,127 +13,85 @@ import { Typography, } from '@mui/material'; import NirvanaLogo from './NirvanaLogo'; -import { FiHeadphones, FiLogOut, FiMonitor, FiWind } from 'react-icons/fi'; +import { FiHeadphones, FiLogOut, FiMonitor, FiSearch, FiUsers, FiWind } from 'react-icons/fi'; import MenuItem from '@mui/material/MenuItem'; import useAuth from '../providers/AuthProvider'; +import { blueGrey } from '@mui/material/colors'; +import KeyboardShortcutLabel from './KeyboardShortcutLabel'; +import { useSnackbar } from 'notistack'; +import { useKeyPressEvent } from 'react-use'; -const Navbar = () => { - const [anchorEl, setAnchorEl] = React.useState(null); - const open = Boolean(anchorEl); - const handleClick = (event: React.MouseEvent) => { - setAnchorEl(event.currentTarget); - }; - const handleClose = () => { - setAnchorEl(null); - }; - +const Navbar = ({ + handleChangeSearchInput, + searchVal, + isSearching, +}: { + handleChangeSearchInput: React.ChangeEventHandler; + searchVal: string; + isSearching: boolean; +}) => { const { logout, user } = useAuth(); + const { enqueueSnackbar } = useSnackbar(); + + const searchRef = useRef(null); + const onSearchFocus = useCallback(() => { + enqueueSnackbar('search focused'); + if (searchRef?.current) searchRef.current.focus(); + }, [enqueueSnackbar, searchRef]); + + useKeyPressEvent('Shift', onSearchFocus); return ( - <> - - + + - - - - - - - - - - - - - - - - - - - - + + + + + + {isSearching && } + + - - - Profile - - - My account - - - - - - - - - Logout - - - + + + + + + ); }; diff --git a/packages/desktop/src/components/Terminal.tsx b/packages/desktop/src/components/Terminal.tsx index 6204ae7..03de1a7 100644 --- a/packages/desktop/src/components/Terminal.tsx +++ b/packages/desktop/src/components/Terminal.tsx @@ -78,6 +78,7 @@ import KeyboardShortcutLabel from './KeyboardShortcutLabel'; import Channels from '../electron/constants'; import { uploadAudioClip } from '../firebase/firebaseStorage'; import { ContentBlock, ContentType } from '@nirvana/core/src/models/content.model'; +import Navbar from './Navbar'; type ConversationMap = { [conversationId: string]: Conversation; }; @@ -351,22 +352,10 @@ export function TerminalProvider({ children }: { children?: React.ReactNode }) { [userMap, updateUserMap], ); - const searchRef = useRef(null); - const [searchVal, setSearchVal] = useState(''); - - const onSearchFocus = useCallback(() => { - enqueueSnackbar('search focused'); - if (searchRef?.current) searchRef.current.focus(); - }, [enqueueSnackbar, searchRef]); - - const [searchUsersResults, setSearchUsersResults] = useState([]); - const [searching, setSearching] = useState(false); - const handleEscape = useCallback(() => { setSelectedConversationId(undefined); }, [setSelectedConversationId]); - useKeyPressEvent('Shift', onSearchFocus); useKeyPressEvent('Escape', handleEscape); const [isUserSpeaking, setIsUserSpeaking] = useState(false); @@ -487,6 +476,10 @@ export function TerminalProvider({ children }: { children?: React.ReactNode }) { useKeyPressEvent('`', handleBroadcast, handleStopBroadcast); + const [searchVal, setSearchVal] = useState(''); + const [searchUsersResults, setSearchUsersResults] = useState([]); + const [searching, setSearching] = useState(false); + const [, cancel] = useDebounce( async () => { if (searchVal) { @@ -560,56 +553,11 @@ export function TerminalProvider({ children }: { children?: React.ReactNode }) { height: 'inherit', }} > - {/* navbar */} - - - - - - - - - {searching && } - - - - - - - - - - + {searchVal ? (