Parcourir la source

fix:解决连续permission请求导致后一个permission不弹窗问题

Jerry Liang il y a 2 mois
Parent
commit
05bd804111
1 fichiers modifiés avec 5 ajouts et 2 suppressions
  1. 5 2
      src/layout/header/Actions/AiChat/useAiChat.ts

+ 5 - 2
src/layout/header/Actions/AiChat/useAiChat.ts

@@ -620,9 +620,12 @@ export function useAiChat() {
 
   async function resolvePermission(optionId: string) {
     try {
-      await resolveAiPermission(optionId)
+      // 记住当前要 resolve 的 requestId,防止 await 期间被新 permission 覆盖后误标记
       const lastMsg = messages.value[messages.value.length - 1]
-      if (lastMsg?.permission) {
+      const targetRequestId = lastMsg?.permission?.requestId
+      await resolveAiPermission(optionId)
+      // await 回来后检查 permission 是否仍是同一个(未被新事件覆盖)
+      if (lastMsg?.permission && lastMsg.permission.requestId === targetRequestId) {
         lastMsg.permission.resolved = true
       }
     }