Separate domain access from code-channel login

This commit is contained in:
冰朔 2026-08-10 04:38:41 +08:00
commit 6b1bb203df
7 changed files with 324 additions and 6 deletions

View file

@ -12,6 +12,7 @@ import { DomainSurface } from './components/DomainSurface';
import { ModuleLibrarySheet } from './components/ModuleLibrarySheet';
import { cleanDisplayText } from './presentation';
import { WorldEntry } from './components/WorldEntry';
import { DomainConnectionSheet } from './components/DomainConnectionSheet';
type View = 'editor' | 'history';
type RouteId = 'fifth' | 'main' | 'sub' | 'zero' | 'zero-sense';
@ -80,6 +81,7 @@ export default function App() {
const [activeRoute, setActiveRoute] = useState<RouteId>('fifth');
const [activeModule, setActiveModule] = useState<ModuleId>('knowledge');
const [storageSheetOpen, setStorageSheetOpen] = useState(false);
const [domainConnectionOpen, setDomainConnectionOpen] = useState(false);
const [storageSheetInitialMode, setStorageSheetInitialMode] = useState<'local' | 'server' | undefined>();
const [serverSession, setServerSession] = useState<ServerSession>({ authenticated: false, nodeId: '' });
const [serverProfiles, setServerProfiles] = useState<ServerProfile[]>([]);
@ -391,8 +393,7 @@ export default function App() {
setWorldEntered(true);
}}
onOpenConnection={() => {
setStorageSheetInitialMode('server');
setStorageSheetOpen(true);
setDomainConnectionOpen(true);
}}
/>
)}
@ -414,7 +415,7 @@ export default function App() {
setStorageSheetOpen(true);
}}>
<span className="session-status-dot" aria-hidden="true" />
<span><strong>{serverSession.authenticated ? serverSession.username : (personalServer ? '登录第五域' : '配置我的服务器')}</strong><small>{personalServer?.id || '本机私有配置'}</small></span>
<span><strong>{serverSession.authenticated ? `代码频道 · ${serverSession.username}` : (personalServer ? '代码频道账号' : '配置我的服务器')}</strong><small>{personalServer?.id || '本机私有配置'}</small></span>
</button>
</header>
@ -577,6 +578,23 @@ export default function App() {
refreshDomainAccess();
}}
/>
<DomainConnectionSheet
access={domainAccess}
open={domainConnectionOpen}
onClose={() => setDomainConnectionOpen(false)}
onEnterRuntime={() => {
if (!domainAccess.runtimeReady) return;
setActiveRoute('fifth');
setActiveModule('knowledge');
setWorldEntered(true);
setDomainConnectionOpen(false);
}}
onOpenCodeChannel={() => {
setDomainConnectionOpen(false);
setStorageSheetInitialMode('server');
setStorageSheetOpen(true);
}}
/>
<HumanSettings
open={humanSettingsOpen}
preferences={humanPreferences}