diff --git a/chat-core.js b/chat-core.js index 7155830..a6b5b6c 100644 --- a/chat-core.js +++ b/chat-core.js @@ -488,10 +488,20 @@ document.addEventListener("DOMContentLoaded", () => { prompt += `\nUser: ${lastUser}`; } - const modelSelectEl = document.getElementById("model-select"); - const model = modelSelectEl?.value || currentSession.model; - if (!model) throw new Error("No model selected"); - const apiUrl = `https://text.pollinations.ai/${encodeURIComponent(prompt)}?model=${encodeURIComponent(model)}`; + const modelSelectEl = document.getElementById("model-select"); + const model = modelSelectEl?.value || currentSession.model || Storage.getDefaultModel(); + if (!model) { + loadingDiv.textContent = "Error: No model selected."; + setTimeout(() => loadingDiv.remove(), 3000); + const btn = window._chatInternals?.sendButton || document.getElementById("send-button"); + const input = window._chatInternals?.chatInput || document.getElementById("chat-input"); + if (btn) btn.disabled = false; + if (input) input.disabled = false; + showToast("Please select a model before sending a message."); + if (callback) callback(); + return; + } + const apiUrl = `https://text.pollinations.ai/${encodeURIComponent(prompt)}?model=${encodeURIComponent(model)}`; try { const res = await window.pollinationsFetch(apiUrl, { diff --git a/storage.js b/storage.js index 82befa2..598af0f 100644 --- a/storage.js +++ b/storage.js @@ -44,7 +44,12 @@ document.addEventListener("DOMContentLoaded", () => { } function getDefaultModel() { - return localStorage.getItem("defaultModelPreference") || ""; + let model = localStorage.getItem("defaultModelPreference"); + if (!model) { + model = "unity"; + localStorage.setItem("defaultModelPreference", model); + } + return model; } function setDefaultModel(modelName) { diff --git a/ui.js b/ui.js index 2fd9103..5a3b49c 100644 --- a/ui.js +++ b/ui.js @@ -148,41 +148,44 @@ document.addEventListener("DOMContentLoaded", () => { }); const currentSession = Storage.getCurrentSession(); - if (currentSession && currentSession.model) { - const modelExists = Array.from(modelSelect.options).some(option => option.value === currentSession.model); - if (modelExists) { - modelSelect.value = currentSession.model; + const preferredModel = currentSession?.model || Storage.getDefaultModel(); + if (preferredModel) { + const exists = Array.from(modelSelect.options).some(option => option.value === preferredModel); + if (exists) { + modelSelect.value = preferredModel; } else { const tempOpt = document.createElement("option"); - tempOpt.value = currentSession.model; - tempOpt.textContent = `${currentSession.model} (Previously Selected - May Be Unavailable)`; + tempOpt.value = preferredModel; + tempOpt.textContent = `${preferredModel} (Previously Selected - May Be Unavailable)`; tempOpt.title = "This model may no longer be available"; modelSelect.appendChild(tempOpt); - modelSelect.value = currentSession.model; - console.warn(`Model ${currentSession.model} not found in fetched list. Added as unavailable option.`); + modelSelect.value = preferredModel; + console.warn(`Model ${preferredModel} not found in fetched list. Added as unavailable option.`); } } if (!modelSelect.value && modelSelect.options.length > 0) { - const firstModel = modelSelect.options[0].value; + const unityOption = Array.from(modelSelect.options).find(opt => opt.value === "unity"); + const firstModel = unityOption ? unityOption.value : modelSelect.options[0].value; modelSelect.value = firstModel; if (currentSession) { Storage.setSessionModel(currentSession.id, firstModel); } } - } catch (err) { + } catch (err) { console.error("Failed to fetch text models:", err); modelSelect.innerHTML = ""; const currentSession = Storage.getCurrentSession(); - if (currentSession && currentSession.model) { + const fallbackModel = currentSession?.model || Storage.getDefaultModel(); + if (fallbackModel) { const sessOpt = document.createElement("option"); - sessOpt.value = currentSession.model; - sessOpt.textContent = `${currentSession.model} (From Session - May Be Unavailable)`; + sessOpt.value = fallbackModel; + sessOpt.textContent = `${fallbackModel} (From Session - May Be Unavailable)`; modelSelect.appendChild(sessOpt); - modelSelect.value = currentSession.model; + modelSelect.value = fallbackModel; } - } - } + } + } fetchPollinationsModels(); newSessionBtn.addEventListener("click", () => { const newSess = Storage.createSession("New Chat");