From 6df1b197aa97df00b08d00981672f7510866c04c Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sun, 3 Dec 2023 22:21:17 -0800 Subject: [PATCH] feat: duplicate tag name prevention --- src/routes/(app)/modelfiles/create/+page.svelte | 17 +++++++++++++++-- .../(app)/modelfiles/edit/[tag]/+page.svelte | 9 ++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/routes/(app)/modelfiles/create/+page.svelte b/src/routes/(app)/modelfiles/create/+page.svelte index 0db85fbe..04a01b78 100644 --- a/src/routes/(app)/modelfiles/create/+page.svelte +++ b/src/routes/(app)/modelfiles/create/+page.svelte @@ -3,7 +3,7 @@ import { toast } from 'svelte-french-toast'; import { goto } from '$app/navigation'; import { OLLAMA_API_BASE_URL } from '$lib/constants'; - import { settings, db, user, config, modelfiles } from '$lib/stores'; + import { settings, db, user, config, modelfiles, models } from '$lib/stores'; import Advanced from '$lib/components/chat/Settings/Advanced.svelte'; import { splitStream } from '$lib/utils'; @@ -101,13 +101,26 @@ SYSTEM """${system}"""`.replace(/^\s*\n/gm, ''); toast.error( 'Uh-oh! It looks like you missed selecting a category. Please choose one to complete your modelfile.' ); + loading = false; + success = false; + return success; + } + + if ($models.includes(tagName)) { + toast.error( + `Uh-oh! It looks like you already have a model named '${tagName}'. Please choose a different name to complete your modelfile.` + ); + loading = false; + success = false; + return success; } if ( title !== '' && desc !== '' && content !== '' && - Object.keys(categories).filter((category) => categories[category]).length > 0 + Object.keys(categories).filter((category) => categories[category]).length > 0 && + !$models.includes(tagName) ) { const res = await fetch(`${$settings?.API_BASE_URL ?? OLLAMA_API_BASE_URL}/create`, { method: 'POST', diff --git a/src/routes/(app)/modelfiles/edit/[tag]/+page.svelte b/src/routes/(app)/modelfiles/edit/[tag]/+page.svelte index 8fcc742c..c9716d33 100644 --- a/src/routes/(app)/modelfiles/edit/[tag]/+page.svelte +++ b/src/routes/(app)/modelfiles/edit/[tag]/+page.svelte @@ -60,7 +60,14 @@ title = modelfile.title; desc = modelfile.desc; content = modelfile.content; - suggestions = modelfile.suggestionPrompts; + suggestions = + modelfile.suggestionPrompts.length != 0 + ? modelfile.suggestionPrompts + : [ + { + content: '' + } + ]; for (const category of modelfile.categories) { categories[category.toLowerCase()] = true;