下载非内核

This commit is contained in:
zhongluofeng
2026-07-22 18:26:26 +08:00
parent 1e31ee8da9
commit f7d3c13f35
24 changed files with 2609 additions and 2532 deletions
+31 -4
View File
@@ -25,7 +25,9 @@ const toNavModule = (meta: ModuleMeta): NavModule => ({
icon: meta.icon
})
const activeModule = ref('proxy')
/** 上次激活的模块 IDlocalStorage 持久化) */
const LAST_MODULE_KEY = 'thing_last_module'
const activeModule = ref('')
const activeComponent = shallowRef<Component | null>(null)
@@ -64,11 +66,13 @@ const handleModuleChange = (moduleId: string) => {
prevConfig?.lifecycle?.onDeactivate?.()
activeModule.value = moduleId
localStorage.setItem(LAST_MODULE_KEY, moduleId)
loadModule(moduleId)
}
const handleSearch = (moduleId: string) => {
activeModule.value = moduleId
localStorage.setItem(LAST_MODULE_KEY, moduleId)
loadModule(moduleId)
}
@@ -81,6 +85,8 @@ const getFallbackModule = () => {
}
watch(() => appStore.enabledModules.length, () => {
// 启动期间 activeModule 尚未确定,跳过
if (!activeModule.value) return
const enabledIds = appStore.enabledModules.map(m => m.id)
if (activeModule.value !== 'settings' && !enabledIds.includes(activeModule.value)) {
const fallback = getFallbackModule()
@@ -89,9 +95,30 @@ watch(() => appStore.enabledModules.length, () => {
}
})
onMounted(() => {
loadModule(activeModule.value)
appStore.init().catch(e => console.error('App init error:', e))
/** 计算启动时应打开的默认模块:优先上次记忆,其次排序第一个 */
const resolveDefaultModule = (): string => {
const enabledIds = appStore.enabledModules.map(m => m.id)
const allMetas = moduleRegistry.getAllMetas()
// 尝试上次记忆的模块
const lastModule = localStorage.getItem(LAST_MODULE_KEY)
if (lastModule) {
const meta = allMetas.find(m => m.id === lastModule)
if (meta && (meta.builtin || enabledIds.includes(lastModule))) {
return lastModule
}
}
// 回退到排序第一个可用模块(settings 除外)
const first = availableModules.value.find(m => m.id !== 'settings')
return first?.id || 'settings'
}
onMounted(async () => {
await appStore.init().catch(e => console.error('App init error:', e))
const defaultModule = resolveDefaultModule()
activeModule.value = defaultModule
loadModule(defaultModule)
})
</script>