diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt index 38ea4dd..e033940 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt @@ -63,6 +63,8 @@ object WeworkController { @RequestMapping fun sendMessage(message: WeworkMessageBean): Boolean { LogUtils.d("REQUEST sendMessage(): ${message.messageId} ${message.titleList} ${message.receivedContent} ${message.at} ${message.atList?.joinToString()}") + // 进入发送消息流程,暂停主循环检测新消息,避免重复进入同一聊天页 + waitingForReply = true val result = WeworkOperationImpl.sendMessage(message, message.titleList, message.receivedContent, message.at, message.atList) // 发送完成,通知等待结束 waitingForReply = false @@ -82,6 +84,8 @@ object WeworkController { @RequestMapping fun replyMessage(message: WeworkMessageBean): Boolean { LogUtils.d("REQUEST replyMessage(): ${message.messageId} ${message.receivedName} ${message.originalContent} ${message.textType} ${message.receivedContent}") + // 进入发送消息流程,暂停主循环检测新消息,避免重复进入同一聊天页 + waitingForReply = true val result = WeworkOperationImpl.replyMessage( message, message.titleList, diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt b/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt index 16eb0c9..8b7d522 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt @@ -66,7 +66,7 @@ object WeworkLoopImpl { } // 获取消息后,等待服务端回复指令,最多30秒 if (mainLoopRunning) { - waitForServerReply() + // waitForServerReply() } // 等待完成后返回主页 if (mainLoopRunning) { @@ -327,7 +327,6 @@ object WeworkLoopImpl { null ) WeworkController.weworkService.webSocketManager.send(messageBean) - // 方案A:发送消息后立即返回主页,继续检测下一条消息,不等待 if (needInfer) { val lastMessage = messageList.lastOrNull() if (lastMessage != null && lastMessage.sender == 0) { @@ -344,13 +343,10 @@ object WeworkLoopImpl { || tempContent.isNotBlank() ) { LogUtils.v("推测需要回复: $tempContent") - // 方案A:不清空 waitingForReply,直接返回主页 - // 这样主循环会继续检测下一条消息 return true } } 2 -> { - // 方案A:不清空 waitingForReply,直接返回主页 return true } else -> return true