From 290bc8481dca206a26b22abc71993bfe31992a95 Mon Sep 17 00:00:00 2001 From: Joshua Shoemaker Date: Thu, 16 Feb 2023 21:57:44 -0600 Subject: [PATCH] feat: streamline startup navigation --- frontend/components/project/Main.tsx | 4 ++-- frontend/components/settings/User.tsx | 14 ++++++++++---- frontend/context/Navigation/provider.tsx | 2 +- frontend/context/Project/provider.tsx | 1 - frontend/pages/_app.tsx | 5 +++-- frontend/pages/index.tsx | 8 +++++++- 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/frontend/components/project/Main.tsx b/frontend/components/project/Main.tsx index ecce119..129d05c 100644 --- a/frontend/components/project/Main.tsx +++ b/frontend/components/project/Main.tsx @@ -43,10 +43,10 @@ const MainProject = () => { }, ] - const onCreateNewProjectHandler = (projectName: string) => { + const onCreateNewProjectHandler = async (projectName: string) => { setIsNewProjectModalOpen(false) setCanPopoverBeOpen(true) - createNewProject(projectName) + await createNewProject(projectName) setSelectedMainPage(mainPages.WORKSPACE) } diff --git a/frontend/components/settings/User.tsx b/frontend/components/settings/User.tsx index bb97fe9..874b360 100644 --- a/frontend/components/settings/User.tsx +++ b/frontend/components/settings/User.tsx @@ -3,23 +3,27 @@ import { useProject } from '../../context/Project/provider' import { EnvelopeIcon } from '@heroicons/react/24/outline' import UserAvatar from '../utils/UserAvatar' import { useRef, useState } from 'react' +import { useNavigation } from '../../context/Navigation/provider' +import { mainPages } from '../../context/Navigation/types' const User = () => { const { currentSession, requestUpdateCurrentUser, requestChooseUserAvatar } = useProject() + const { setSelectedMainPage } = useNavigation() const firstNameRef = useRef(null) const lastNameRef = useRef(null) const emailRef = useRef(null) const [avatarPath, setAvatarPath] = useState(currentSession?.user?.avatarPath || '') - const onSaveButtonClickHandler = () => { - requestUpdateCurrentUser({ - localId: currentSession?.user.localId, + const onSaveButtonClickHandler = async () => { + await requestUpdateCurrentUser({ + localId: currentSession?.user?.localId, firstName: firstNameRef?.current?.value, lastName: lastNameRef?.current?.value, email: emailRef?.current?.value, avatarPath: avatarPath || '' }) + setSelectedMainPage(mainPages.WORKSPACE) } const onAvatarSelectButtonClickHandler = async () => { @@ -42,7 +46,9 @@ const User = () => {

Profile

- This information will be stored in a database if connected to a hosted account, so be careful what you share. + This information will be stored in a database if connected to a hosted account. +
+ For a local user on this machine, you may save without adding any user details.

diff --git a/frontend/context/Navigation/provider.tsx b/frontend/context/Navigation/provider.tsx index 1d4e4d6..5442995 100644 --- a/frontend/context/Navigation/provider.tsx +++ b/frontend/context/Navigation/provider.tsx @@ -13,7 +13,7 @@ export function useNavigation() { type Props = { children: ReactNode, navigationProps: NavigationProps } export function NavigationProvidor({ children, navigationProps }: Props) { const [selectedWorkspace, setSelectedWorkspace] = useState(navigationProps.selectedWorkspace) - const [selectedMainPage, setSelectedMainPage] = useState(mainPages.SELECTPROJECT) + const [selectedMainPage, setSelectedMainPage] = useState(navigationProps.selectedMainPage) const value = { selectedWorkspace, diff --git a/frontend/context/Project/provider.tsx b/frontend/context/Project/provider.tsx index 5a28b1b..855378b 100644 --- a/frontend/context/Project/provider.tsx +++ b/frontend/context/Project/provider.tsx @@ -87,7 +87,6 @@ export function ProjectProvider({ children, projectProps }: Props) { const getUserMarkdownByDocumentId = async (documentId: string): Promise => { let response: ipc.UserMarkdown = new ipc.UserMarkdown({}) - console.log(documentId) try { response = await GetUserMarkdownByDocumentId(documentId) } catch (err) { diff --git a/frontend/pages/_app.tsx b/frontend/pages/_app.tsx index 678294a..649639e 100644 --- a/frontend/pages/_app.tsx +++ b/frontend/pages/_app.tsx @@ -6,7 +6,7 @@ import '../styles/globals.css' import { ipc } from '../wailsjs/wailsjs/go/models' import '../styles/globals.css' import { NavigationProvidor } from '../context/Navigation/provider' -import { workspaces } from '../context/Navigation/types' +import { mainPages, workspaces } from '../context/Navigation/types' const initialProjectProps = { id: '', @@ -15,7 +15,8 @@ const initialProjectProps = { } const initialNavigationProps = { - selectedWorkspace: workspaces.PROCESSOR + selectedWorkspace: workspaces.PROCESSOR, + selectedMainPage: mainPages.EDITUSER } export default function MainAppLayout({ Component, pageProps }: AppProps) { diff --git a/frontend/pages/index.tsx b/frontend/pages/index.tsx index 1186d97..1cd390f 100644 --- a/frontend/pages/index.tsx +++ b/frontend/pages/index.tsx @@ -1,4 +1,5 @@ import { NextPage } from 'next' +import { useEffect } from 'react' import MainHead from '../components/head' import MainProject from '../components/project/Main' import User from '../components/settings/User' @@ -11,7 +12,12 @@ import { useProject } from '../context/Project/provider' const Home: NextPage = () => { const { currentSession } = useProject() - const { selectedMainPage } = useNavigation() + const { selectedMainPage, setSelectedMainPage } = useNavigation() + + useEffect(() => { + if (!currentSession?.user?.localId) setSelectedMainPage(mainPages.EDITUSER) + else if (!currentSession?.project?.id) setSelectedMainPage(mainPages.SELECTPROJECT) + },) const renderSelectedMainPage = () => { if (selectedMainPage === mainPages.SELECTPROJECT) return