feat: update workspace pages and global inbox

This commit is contained in:
2026-07-20 18:25:04 +08:00
parent c64daa8657
commit df12201caa
20 changed files with 597 additions and 229 deletions

View File

@@ -6,8 +6,8 @@ import { login, setApiBaseUrl, type ApiSession } from '../api/client'
import { mapWorkspace } from '../api/mappers'
import { fetchProjectWorkspace, fetchProjects } from '../api/projects'
import { LoginPage } from '../pages/login'
import { ProjectPage } from '../pages/project'
import type { ChannelKey, ProjectWorkspace, Screen, Theme, WorkbenchView } from '../pages/projects/project-types'
import { ProjectPage } from '../pages/workspace-home'
import type { ChannelKey, Project, ProjectWorkspace, Screen, Theme, WorkbenchView } from '../pages/projects/project-types'
function App() {
const [screen, setScreen] = useState<Screen>('login')
@@ -17,6 +17,7 @@ function App() {
const [workspaces, setWorkspaces] = useState<ProjectWorkspace[]>([])
const [activeProjectID, setActiveProjectID] = useState<string>('')
const [activeChannel, setActiveChannel] = useState<ChannelKey>('overview')
const [activeTaskID, setActiveTaskID] = useState<string | null>(null)
const [, setSelectedItem] = useState('Inbox 待处理36')
const [loading, setLoading] = useState(false)
@@ -45,6 +46,13 @@ function App() {
}
}
function openTask(project: Project, taskID: string) {
setActiveProjectID(project.id)
setActiveView('project')
setActiveChannel('tasks')
setActiveTaskID(taskID)
}
return (
<ConfigProvider>
<main className={dark ? 'app theme-dark' : 'app'}>
@@ -58,15 +66,23 @@ function App() {
activeWorkspace={activeWorkspace}
workspaces={workspaces}
activeChannel={activeChannel}
activeTaskID={activeTaskID}
theme={theme}
onSelectWorkspace={() => setActiveView('workspace')}
onSelectWorkspaceInbox={() => setActiveView('workspace-inbox')}
onSelectProject={(project) => {
setActiveProjectID(project.id)
setActiveView('project')
setActiveChannel('overview')
setActiveTaskID(null)
}}
onSelectChannel={(channel) => {
setActiveChannel(channel)
setActiveTaskID(null)
}}
onSelectChannel={setActiveChannel}
onSelectItem={setSelectedItem}
onOpenTask={openTask}
onCloseTask={() => setActiveTaskID(null)}
onToggleTheme={() => setTheme(dark ? 'light' : 'dark')}
/>
) : (