fix(models): allow manual entry during catalog load

This commit is contained in:
elky
2026-09-04 23:57:50 +08:00
parent cdbbda40a6
commit 1c89b5f9ab
2 changed files with 33 additions and 1 deletions
@@ -31,9 +31,22 @@
<div class="flex-1 min-h-0 overflow-hidden border rounded-lg flex flex-col">
<div
v-if="loading"
class="flex items-center justify-center flex-1"
class="flex flex-col items-center justify-center gap-3 flex-1"
>
<Loader2 class="w-5 h-5 animate-spin text-muted-foreground" />
<p class="text-xs text-muted-foreground">
正在加载在线目录;也可以先手动填写模型
</p>
<Button
type="button"
variant="ghost"
size="sm"
class="h-8"
data-testid="models-catalog-manual-entry-loading"
@click="enterManualEntryMode"
>
手动填写
</Button>
</div>
<div
v-else-if="catalogLoadError"
@@ -302,6 +302,25 @@ describe('GlobalModelFormDialog preset replacement', () => {
expect(document.body.querySelector('#model-name')).not.toBeNull()
})
it('allows manual model creation while the external catalog request is still pending', async () => {
modelsDevMocks.getModelsDevList.mockReturnValueOnce(
new Promise<ModelsDevModelItem[]>(() => {}),
)
mountDialog()
await settle()
const manualEntryButton = document.body.querySelector<HTMLButtonElement>(
'[data-testid="models-catalog-manual-entry-loading"]',
)
if (!manualEntryButton) throw new Error('Missing loading-state manual-entry button')
manualEntryButton.click()
await settle()
expect(document.body.textContent).toContain('手动填写模式')
expect(document.body.querySelector('#model-name')).not.toBeNull()
})
it('drops the previous draft and submits only the newly selected model preset', async () => {
mountDialog()
await settle()