fix: button outside chat bubble + showToast on success/error in chatTransferToRecipes
This commit is contained in:
+17
-11
@@ -12427,20 +12427,23 @@ function _looksLikeRecipe(text) {
|
|||||||
async function chatTransferToRecipes(btn, replyText) {
|
async function chatTransferToRecipes(btn, replyText) {
|
||||||
btn.disabled = true;
|
btn.disabled = true;
|
||||||
btn.textContent = '⏳ ' + (t('chat.transferring') || 'Trasferimento in corso...');
|
btn.textContent = '⏳ ' + (t('chat.transferring') || 'Trasferimento in corso...');
|
||||||
|
const resetBtn = () => {
|
||||||
|
btn.disabled = false;
|
||||||
|
btn.textContent = '📥 ' + (t('chat.transfer_to_recipes') || 'Trasferisci a Ricette');
|
||||||
|
};
|
||||||
try {
|
try {
|
||||||
const settings = getSettings();
|
const settings = getSettings();
|
||||||
const result = await api('chat_to_recipe', {}, 'POST', {
|
const result = await api('chat_to_recipe', {}, 'POST', {
|
||||||
text: replyText,
|
text: replyText,
|
||||||
lang: settings.lang || 'it'
|
lang: settings.lang || 'it'
|
||||||
});
|
});
|
||||||
if (!result.success || !result.recipe) {
|
if (!result || !result.success || !result.recipe) {
|
||||||
btn.disabled = false;
|
resetBtn();
|
||||||
btn.textContent = '📥 ' + (t('chat.transfer_to_recipes') || 'Trasferisci a Ricette');
|
showToast('⚠️ ' + (result?.error || t('error.generic') || 'Errore'), 'error');
|
||||||
showToast('⚠️ ' + (result.error || t('error.generic')), 'error');
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const recipe = result.recipe;
|
const recipe = result.recipe;
|
||||||
// Normalize field names: renderRecipe expects `persons`, Gemini might return `servings`
|
// renderRecipe expects `persons`; Gemini might return `servings`
|
||||||
if (!recipe.persons && recipe.servings) recipe.persons = recipe.servings;
|
if (!recipe.persons && recipe.servings) recipe.persons = recipe.servings;
|
||||||
if (!recipe.persons) recipe.persons = 2;
|
if (!recipe.persons) recipe.persons = 2;
|
||||||
await saveRecipeToArchive(recipe);
|
await saveRecipeToArchive(recipe);
|
||||||
@@ -12451,10 +12454,11 @@ async function chatTransferToRecipes(btn, replyText) {
|
|||||||
document.getElementById('recipe-loading').style.display = 'none';
|
document.getElementById('recipe-loading').style.display = 'none';
|
||||||
document.getElementById('recipe-result').style.display = '';
|
document.getElementById('recipe-result').style.display = '';
|
||||||
btn.textContent = '✅ ' + (t('chat.transferred') || 'Aggiunta alle Ricette!');
|
btn.textContent = '✅ ' + (t('chat.transferred') || 'Aggiunta alle Ricette!');
|
||||||
|
showToast('✅ ' + (t('chat.transferred') || 'Aggiunta alle Ricette!'), 'success');
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
btn.disabled = false;
|
console.error('[chatTransferToRecipes]', err);
|
||||||
btn.textContent = '📥 ' + (t('chat.transfer_to_recipes') || 'Trasferisci a Ricette');
|
resetBtn();
|
||||||
showToast('⚠️ ' + (t('error.connection') || 'Errore di connessione'), 'error');
|
showToast('⚠️ ' + (err.message || t('error.connection') || 'Errore di connessione'), 'error');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -12496,15 +12500,17 @@ async function sendChatMessage() {
|
|||||||
|
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
chatHistory.push({ role: 'gemini', text: result.reply });
|
chatHistory.push({ role: 'gemini', text: result.reply });
|
||||||
const bubble = appendChatBubble('gemini', formatChatReply(result.reply));
|
appendChatBubble('gemini', formatChatReply(result.reply));
|
||||||
// If reply looks like a recipe, append "Trasferisci a Ricette" button
|
// If reply looks like a recipe, add transfer button as SEPARATE element below bubble
|
||||||
if (_looksLikeRecipe(result.reply)) {
|
if (_looksLikeRecipe(result.reply)) {
|
||||||
const replyText = result.reply;
|
const replyText = result.reply;
|
||||||
|
const container = document.getElementById('chat-messages');
|
||||||
const transferBtn = document.createElement('button');
|
const transferBtn = document.createElement('button');
|
||||||
transferBtn.className = 'btn-chat-use-recipe';
|
transferBtn.className = 'btn-chat-use-recipe';
|
||||||
transferBtn.textContent = '📥 ' + (t('chat.transfer_to_recipes') || 'Trasferisci a Ricette');
|
transferBtn.textContent = '📥 ' + (t('chat.transfer_to_recipes') || 'Trasferisci a Ricette');
|
||||||
transferBtn.onclick = () => chatTransferToRecipes(transferBtn, replyText);
|
transferBtn.onclick = () => chatTransferToRecipes(transferBtn, replyText);
|
||||||
bubble.appendChild(transferBtn);
|
container.appendChild(transferBtn);
|
||||||
|
scrollChatBottom();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const errMsg = result.error === 'no_api_key' ? 'Configura la chiave API Gemini nelle impostazioni.' : (result.error || 'Errore nella risposta');
|
const errMsg = result.error === 'no_api_key' ? 'Configura la chiave API Gemini nelle impostazioni.' : (result.error || 'Errore nella risposta');
|
||||||
|
|||||||
+1
-1
@@ -1462,6 +1462,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="assets/js/app.js?v=20260510g"></script>
|
<script src="assets/js/app.js?v=20260510h"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user