From 2fdb611abee20b5d4b53028ee6c6f484de8aaf04 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Fri, 3 Mar 2023 19:41:36 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../worktool/observer/MultiFileObserver.java | 6 ++-- .../worktool/service/WeworkLoopImpl.kt | 28 ++++++++++++++----- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/yameida/worktool/observer/MultiFileObserver.java b/app/src/main/java/org/yameida/worktool/observer/MultiFileObserver.java index 0162aa9..ccec6a0 100644 --- a/app/src/main/java/org/yameida/worktool/observer/MultiFileObserver.java +++ b/app/src/main/java/org/yameida/worktool/observer/MultiFileObserver.java @@ -4,6 +4,7 @@ import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Stack; @@ -13,8 +14,9 @@ import android.util.Log; public class MultiFileObserver extends FileObserver { public HashMap map = new HashMap<>(); - public static HashSet createSet = new HashSet<>(); - public static HashSet finishSet = new HashSet<>(); + public static HashSet createSet = new LinkedHashSet<>(); + public static HashSet finishSet = new LinkedHashSet<>(); + public static HashSet saveSet = new LinkedHashSet<>(); /** Only modification events */ public static int CHANGES_ONLY = CREATE | MODIFY | DELETE | CLOSE_WRITE 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 9e79706..33d075d 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt @@ -163,6 +163,25 @@ object WeworkLoopImpl { } } while (messageList != messageList2) if (messageList.isNotEmpty()) { + val lastMessage = messageList.last() + val lastSyncMessage = if (lastMessage.textType == WeworkMessageBean.TEXT_TYPE_IMAGE) { + "[图片]" + } else { + lastMessage.itemMessageList.lastOrNull()?.text + } + SPUtils.getInstance("lastSyncMessage").put(title, lastSyncMessage) + if (Constant.pushImage && MultiFileObserver.saveSet.isNotEmpty()) { + val imageMessageList = messageList.filter { it.textType == WeworkMessageBean.TEXT_TYPE_IMAGE }.reversed() + MultiFileObserver.saveSet.reversed().forEachIndexed { index, targetPath -> + if (imageMessageList.size > index) { + val message = imageMessageList[index] + } + } + MultiFileObserver.saveSet.clear() + } + if (Constant.pushImage) { + messageList.removeIf { it.textType == WeworkMessageBean.TEXT_TYPE_IMAGE } + } WeworkController.weworkService.webSocketManager.send( WeworkMessageBean( null, null, @@ -173,13 +192,6 @@ object WeworkLoopImpl { null ) ) - val lastMessage = messageList.last() - val lastSyncMessage = if (lastMessage.textType == WeworkMessageBean.TEXT_TYPE_IMAGE) { - "[图片]" - } else { - lastMessage.itemMessageList.lastOrNull()?.text - } - SPUtils.getInstance("lastSyncMessage").put(title, lastSyncMessage) //推测是否回复并在房间等待指令 if (needInfer) { val lastMessage = messageList.lastOrNull() @@ -557,6 +569,7 @@ object WeworkLoopImpl { if (imageCheck && Constant.pushImage && textType == WeworkMessageBean.TEXT_TYPE_IMAGE) { MultiFileObserver.createSet.clear() MultiFileObserver.finishSet.clear() + MultiFileObserver.saveSet.clear() LogUtils.v("点击图片类型") AccessibilityUtil.performClickWithSon(relativeLayoutContent) AccessibilityExtraUtil.loadingPage("ShowImageController", Constant.CHANGE_PAGE_INTERVAL) @@ -580,6 +593,7 @@ object WeworkLoopImpl { if (FileUtils.copy(path, targetPath)) { LogUtils.d("复制图片完成: $targetPath " + ImageDepthSizeUtil.checkRawImage(targetPath)) log("复制图片完成: $targetPath") + MultiFileObserver.saveSet.add(targetPath) } else { LogUtils.e("复制图片失败 请检查权限: $targetPath") }