存为我的提示界面修改 #10
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
点击存为我的按钮以后,提示词界面修改的好看一点,去参考一下主分支
PR 已开好:#11
改动很小,只动了两行:
RecipeDetailOverlay.vue新增 import:
saveToDiary()里把原生prompt()换成自定义的showPrompt():这样点「存为我的」弹出来的就是全站统一的圆角卡片样式(渐变绿色确定按钮 + 轮廓取消按钮),不再是浏览器原生灰色弹窗了。
点击存为我的以后,应该在配方查询-我的配方里显示,还应该在管理配方里显示,两个地方都没有
已更新 PR #11,找到根本原因并修好了。
问题所在
saveToDiary()原来调用的是POST /api/diary,数据写入user_diary表,只有/mydiary路由(我的配方日记)会读这个表。而「配方查询-我的配方」和「管理配方」两个地方,都是从
recipeStore.recipes过滤_owner_id === 当前用户,数据源是recipes表 —— 完全不同的地方,所以当然看不到。修改内容(一处)
RecipeDetailOverlay.vue的saveToDiary():把api.post('/api/diary', ...)换成recipesStore.saveRecipe(...)(POST 到/api/recipes)。这样存完之后:
saveRecipe()内部自动调用loadRecipes()刷新 store合并到pr5
已更新 PR#5。
把 PR#11 的核心 commit(
b07b97b,改写入recipes表)cherry-pick 进了feature/qr-upload-hint分支并推送完毕。PR#5 现在包含:
showPrompt弹框(之前已有)recipes表,确保在「配方查询-我的配方」和「管理配方」中显示(新增)PR#5 已更新,找到了根本原因。
两个问题其实是同一个 bug。
根本原因
CustomDialog.vue的submitPrompt()没有判断 IME 合字状态。中文输入法工作流程是:v-model在 IME 合字阶段(composing) 会暂停更新 —inputValue.value此时仍是合字前的值(空字符串"")@keydown.enter触发 →closeDialog("")用空值关闭弹框if (!name) return判断空字符串为假值 → 配方从未保存修复内容(
CustomDialog.vue)双重保险:
e.isComposing(标准 API)+ 自己维护的isComposingflag(兜底旧浏览器),确保只有用户真正独立按下 Enter 时才确认提交。enter的问题解决了,但是还是没保存进来
PR#5 已更新。
我把所有可能的静默失败路径都堵上了,同时增加了调试日志。现在麻烦你做两件事:
1. 再试一次存为我的,观察:
2. 打开浏览器开发者工具(F12)→ Console,存为我的的时候看看有没有:
[saveToDiary] saving recipe: {...}这条日志出现了吗?payload 内容是什么?我目前的主要嫌疑:
if (!name) return之前是把「空字符串」和「取消」一视同仁静默跳过。现在改成:null→ 静默返回(确实取消)如果你输入完名字后点确定/按回车,但还是没看到任何 toast,说明问题在 dialog 层,console 里会有
[saveToDiary]的日志帮助定位。