diff --git a/web-app/src/containers/dialogs/AddModel.tsx b/web-app/src/containers/dialogs/AddModel.tsx index 2b87fb222..e8fd4e0fd 100644 --- a/web-app/src/containers/dialogs/AddModel.tsx +++ b/web-app/src/containers/dialogs/AddModel.tsx @@ -17,6 +17,7 @@ import { getProviderTitle } from '@/lib/utils' import { useTranslation } from '@/i18n/react-i18next-compat' import { ModelCapabilities } from '@/types/models' import { models as providerModels } from 'token.js' +import { toast } from 'sonner' type DialogAddModelProps = { provider: ModelProvider @@ -37,8 +38,13 @@ export const DialogAddModel = ({ provider, trigger }: DialogAddModelProps) => { // Handle form submission const handleSubmit = () => { - if (!modelId.trim()) { - return // Don't submit if model ID is empty + if (!modelId.trim()) return // Don't submit if model ID is empty + + if (provider.models.some((e) => e.id === modelId)) { + toast.error(t('providers:addModel.modelExists'), { + description: t('providers:addModel.modelExistsDesc'), + }) + return // Don't submit if model ID already exists } // Create the new model diff --git a/web-app/src/locales/de-DE/providers.json b/web-app/src/locales/de-DE/providers.json index 7e6d68c0f..39c52e047 100644 --- a/web-app/src/locales/de-DE/providers.json +++ b/web-app/src/locales/de-DE/providers.json @@ -35,7 +35,9 @@ "modelId": "Modell ID", "enterModelId": "Modell ID eingeben", "exploreModels": "Sehe Modellliste von {{provider}}", - "addModel": "Modell hinzufügen" + "addModel": "Modell hinzufügen", + "modelExists": "Modell bereits vorhanden", + "modelExistsDesc": "Bitte wähle eine andere Modell-ID." }, "deleteModel": { "title": "Lösche Modell: {{modelId}}", diff --git a/web-app/src/locales/en/providers.json b/web-app/src/locales/en/providers.json index 62fe69b8e..2683432f9 100644 --- a/web-app/src/locales/en/providers.json +++ b/web-app/src/locales/en/providers.json @@ -35,7 +35,9 @@ "modelId": "Model ID", "enterModelId": "Enter model ID", "exploreModels": "See model list from {{provider}}", - "addModel": "Add Model" + "addModel": "Add Model", + "modelExists": "Model already exists", + "modelExistsDesc": "Please choose a different model ID." }, "deleteModel": { "title": "Delete Model: {{modelId}}", @@ -69,4 +71,4 @@ "addProvider": "Add Provider", "addOpenAIProvider": "Add OpenAI Provider", "enterNameForProvider": "Enter name for provider" -} \ No newline at end of file +} diff --git a/web-app/src/locales/id/providers.json b/web-app/src/locales/id/providers.json index 803aac3e7..5f89d69c6 100644 --- a/web-app/src/locales/id/providers.json +++ b/web-app/src/locales/id/providers.json @@ -35,7 +35,9 @@ "modelId": "ID Model", "enterModelId": "Masukkan ID model", "exploreModels": "Lihat daftar model dari {{provider}}", - "addModel": "Tambah Model" + "addModel": "Tambah Model", + "modelExists": "Model sudah ada", + "modelExistsDesc": "Silakan pilih ID model yang berbeda." }, "deleteModel": { "title": "Hapus Model: {{modelId}}", @@ -69,4 +71,4 @@ "addProvider": "Tambah Penyedia", "addOpenAIProvider": "Tambah Penyedia OpenAI", "enterNameForProvider": "Masukkan nama untuk penyedia" -} \ No newline at end of file +} diff --git a/web-app/src/locales/pl/providers.json b/web-app/src/locales/pl/providers.json index 55992e3bb..c1c03434e 100644 --- a/web-app/src/locales/pl/providers.json +++ b/web-app/src/locales/pl/providers.json @@ -35,7 +35,9 @@ "modelId": "Identyfikator Modelu", "enterModelId": "Wprowadź identyfikator modelu", "exploreModels": "Zobacz listę modeli dostawcy {{provider}}", - "addModel": "Dodaj Model" + "addModel": "Dodaj Model", + "modelExists": "Model już istnieje", + "modelExistsDesc": "Wybierz inny identyfikator modelu." }, "deleteModel": { "title": "Usuń Model: {{modelId}}", diff --git a/web-app/src/locales/vn/providers.json b/web-app/src/locales/vn/providers.json index bd6bdb334..8c0e6d1b8 100644 --- a/web-app/src/locales/vn/providers.json +++ b/web-app/src/locales/vn/providers.json @@ -35,7 +35,9 @@ "modelId": "ID mô hình", "enterModelId": "Nhập ID mô hình", "exploreModels": "Xem danh sách mô hình từ {{provider}}", - "addModel": "Thêm mô hình" + "addModel": "Thêm mô hình", + "modelExists": "Mô hình đã tồn tại", + "modelExistsDesc": "Vui lòng chọn một ID mô hình khác." }, "deleteModel": { "title": "Xóa mô hình: {{modelId}}", @@ -69,4 +71,4 @@ "addProvider": "Thêm nhà cung cấp", "addOpenAIProvider": "Thêm nhà cung cấp OpenAI", "enterNameForProvider": "Nhập tên cho nhà cung cấp" -} \ No newline at end of file +} diff --git a/web-app/src/locales/zh-CN/providers.json b/web-app/src/locales/zh-CN/providers.json index ecc04df49..2ca2beb2e 100644 --- a/web-app/src/locales/zh-CN/providers.json +++ b/web-app/src/locales/zh-CN/providers.json @@ -35,7 +35,9 @@ "modelId": "模型 ID", "enterModelId": "输入模型 ID", "exploreModels": "查看 {{provider}} 的模型列表", - "addModel": "添加模型" + "addModel": "添加模型", + "modelExists": "模型已存在", + "modelExistsDesc": "请选择不同的模型 ID。" }, "deleteModel": { "title": "删除模型:{{modelId}}", @@ -69,4 +71,4 @@ "addProvider": "添加提供商", "addOpenAIProvider": "添加 OpenAI 提供商", "enterNameForProvider": "输入提供商名称" -} \ No newline at end of file +} diff --git a/web-app/src/locales/zh-TW/providers.json b/web-app/src/locales/zh-TW/providers.json index 316a9ed08..39580818b 100644 --- a/web-app/src/locales/zh-TW/providers.json +++ b/web-app/src/locales/zh-TW/providers.json @@ -35,7 +35,9 @@ "modelId": "模型 ID", "enterModelId": "輸入模型 ID", "exploreModels": "查看 {{provider}} 的模型清單", - "addModel": "新增模型" + "addModel": "新增模型", + "modelExists": "模型已存在", + "modelExistsDesc": "請選擇不同的模型 ID。" }, "deleteModel": { "title": "刪除模型:{{modelId}}", @@ -69,4 +71,4 @@ "addProvider": "新增提供者", "addOpenAIProvider": "新增 OpenAI 提供者", "enterNameForProvider": "輸入提供者名稱" -} \ No newline at end of file +}