下载非内核
This commit is contained in:
+31
-4
@@ -25,7 +25,9 @@ const toNavModule = (meta: ModuleMeta): NavModule => ({
|
||||
icon: meta.icon
|
||||
})
|
||||
|
||||
const activeModule = ref('proxy')
|
||||
/** 上次激活的模块 ID(localStorage 持久化) */
|
||||
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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user