feat: streamline startup navigation

This commit is contained in:
Joshua Shoemaker 2023-02-16 21:57:44 -06:00
parent 5639b01998
commit 290bc8481d
6 changed files with 23 additions and 11 deletions

View File

@ -43,10 +43,10 @@ const MainProject = () => {
}, },
] ]
const onCreateNewProjectHandler = (projectName: string) => { const onCreateNewProjectHandler = async (projectName: string) => {
setIsNewProjectModalOpen(false) setIsNewProjectModalOpen(false)
setCanPopoverBeOpen(true) setCanPopoverBeOpen(true)
createNewProject(projectName) await createNewProject(projectName)
setSelectedMainPage(mainPages.WORKSPACE) setSelectedMainPage(mainPages.WORKSPACE)
} }

View File

@ -3,23 +3,27 @@ import { useProject } from '../../context/Project/provider'
import { EnvelopeIcon } from '@heroicons/react/24/outline' import { EnvelopeIcon } from '@heroicons/react/24/outline'
import UserAvatar from '../utils/UserAvatar' import UserAvatar from '../utils/UserAvatar'
import { useRef, useState } from 'react' import { useRef, useState } from 'react'
import { useNavigation } from '../../context/Navigation/provider'
import { mainPages } from '../../context/Navigation/types'
const User = () => { const User = () => {
const { currentSession, requestUpdateCurrentUser, requestChooseUserAvatar } = useProject() const { currentSession, requestUpdateCurrentUser, requestChooseUserAvatar } = useProject()
const { setSelectedMainPage } = useNavigation()
const firstNameRef = useRef<HTMLInputElement>(null) const firstNameRef = useRef<HTMLInputElement>(null)
const lastNameRef = useRef<HTMLInputElement>(null) const lastNameRef = useRef<HTMLInputElement>(null)
const emailRef = useRef<HTMLInputElement>(null) const emailRef = useRef<HTMLInputElement>(null)
const [avatarPath, setAvatarPath] = useState(currentSession?.user?.avatarPath || '') const [avatarPath, setAvatarPath] = useState(currentSession?.user?.avatarPath || '')
const onSaveButtonClickHandler = () => { const onSaveButtonClickHandler = async () => {
requestUpdateCurrentUser({ await requestUpdateCurrentUser({
localId: currentSession?.user.localId, localId: currentSession?.user?.localId,
firstName: firstNameRef?.current?.value, firstName: firstNameRef?.current?.value,
lastName: lastNameRef?.current?.value, lastName: lastNameRef?.current?.value,
email: emailRef?.current?.value, email: emailRef?.current?.value,
avatarPath: avatarPath || '' avatarPath: avatarPath || ''
}) })
setSelectedMainPage(mainPages.WORKSPACE)
} }
const onAvatarSelectButtonClickHandler = async () => { const onAvatarSelectButtonClickHandler = async () => {
@ -42,7 +46,9 @@ const User = () => {
<div className="space-y-1"> <div className="space-y-1">
<h3 className="text-lg font-medium leading-6 text-gray-900">Profile</h3> <h3 className="text-lg font-medium leading-6 text-gray-900">Profile</h3>
<p className="max-w-2xl text-sm text-gray-500"> <p className="max-w-2xl text-sm text-gray-500">
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.
<br />
<em className='text-xs'>For a local user on this machine, you may save without adding any user details.</em>
</p> </p>
</div> </div>
<div className="mt-6"> <div className="mt-6">

View File

@ -13,7 +13,7 @@ export function useNavigation() {
type Props = { children: ReactNode, navigationProps: NavigationProps } type Props = { children: ReactNode, navigationProps: NavigationProps }
export function NavigationProvidor({ children, navigationProps }: Props) { export function NavigationProvidor({ children, navigationProps }: Props) {
const [selectedWorkspace, setSelectedWorkspace] = useState<workspaces>(navigationProps.selectedWorkspace) const [selectedWorkspace, setSelectedWorkspace] = useState<workspaces>(navigationProps.selectedWorkspace)
const [selectedMainPage, setSelectedMainPage] = useState<mainPages>(mainPages.SELECTPROJECT) const [selectedMainPage, setSelectedMainPage] = useState<mainPages>(navigationProps.selectedMainPage)
const value = { const value = {
selectedWorkspace, selectedWorkspace,

View File

@ -87,7 +87,6 @@ export function ProjectProvider({ children, projectProps }: Props) {
const getUserMarkdownByDocumentId = async (documentId: string): Promise<ipc.UserMarkdown> => { const getUserMarkdownByDocumentId = async (documentId: string): Promise<ipc.UserMarkdown> => {
let response: ipc.UserMarkdown = new ipc.UserMarkdown({}) let response: ipc.UserMarkdown = new ipc.UserMarkdown({})
console.log(documentId)
try { try {
response = await GetUserMarkdownByDocumentId(documentId) response = await GetUserMarkdownByDocumentId(documentId)
} catch (err) { } catch (err) {

View File

@ -6,7 +6,7 @@ import '../styles/globals.css'
import { ipc } from '../wailsjs/wailsjs/go/models' import { ipc } from '../wailsjs/wailsjs/go/models'
import '../styles/globals.css' import '../styles/globals.css'
import { NavigationProvidor } from '../context/Navigation/provider' import { NavigationProvidor } from '../context/Navigation/provider'
import { workspaces } from '../context/Navigation/types' import { mainPages, workspaces } from '../context/Navigation/types'
const initialProjectProps = { const initialProjectProps = {
id: '', id: '',
@ -15,7 +15,8 @@ const initialProjectProps = {
} }
const initialNavigationProps = { const initialNavigationProps = {
selectedWorkspace: workspaces.PROCESSOR selectedWorkspace: workspaces.PROCESSOR,
selectedMainPage: mainPages.EDITUSER
} }
export default function MainAppLayout({ Component, pageProps }: AppProps) { export default function MainAppLayout({ Component, pageProps }: AppProps) {

View File

@ -1,4 +1,5 @@
import { NextPage } from 'next' import { NextPage } from 'next'
import { useEffect } from 'react'
import MainHead from '../components/head' import MainHead from '../components/head'
import MainProject from '../components/project/Main' import MainProject from '../components/project/Main'
import User from '../components/settings/User' import User from '../components/settings/User'
@ -11,7 +12,12 @@ import { useProject } from '../context/Project/provider'
const Home: NextPage = () => { const Home: NextPage = () => {
const { currentSession } = useProject() 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 = () => { const renderSelectedMainPage = () => {
if (selectedMainPage === mainPages.SELECTPROJECT) return <MainProject /> if (selectedMainPage === mainPages.SELECTPROJECT) return <MainProject />