mirror of
https://github.com/fawney19/Aether.git
synced 2026-01-08 10:42:29 +08:00
- 新增 ModelMultiSelect 组件,支持显示和移除已失效的模型 - 新增 useInvalidModels composable 检测 allowed_models 中的无效引用 - 重构 StandaloneKeyFormDialog 和 UserFormDialog 使用新组件 - 补充 GlobalModel 删除逻辑的设计说明注释
35 lines
879 B
TypeScript
35 lines
879 B
TypeScript
import { computed, type Ref, type ComputedRef } from 'vue'
|
|
|
|
/**
|
|
* 检测失效模型的 composable
|
|
*
|
|
* 用于检测 allowed_models 中已不存在于 globalModels 的模型名称,
|
|
* 这些模型可能已被删除但引用未清理。
|
|
*
|
|
* @example
|
|
* ```typescript
|
|
* const { invalidModels } = useInvalidModels(
|
|
* computed(() => form.value.allowed_models),
|
|
* globalModels
|
|
* )
|
|
* ```
|
|
*/
|
|
export interface ModelWithName {
|
|
name: string
|
|
}
|
|
|
|
export function useInvalidModels<T extends ModelWithName>(
|
|
allowedModels: Ref<string[]> | ComputedRef<string[]>,
|
|
globalModels: Ref<T[]>
|
|
): { invalidModels: ComputedRef<string[]> } {
|
|
const validModelNames = computed(() =>
|
|
new Set(globalModels.value.map(m => m.name))
|
|
)
|
|
|
|
const invalidModels = computed(() =>
|
|
allowedModels.value.filter(name => !validModelNames.value.has(name))
|
|
)
|
|
|
|
return { invalidModels }
|
|
}
|