diff --git a/wkim/build.gradle b/wkim/build.gradle index 3e23197..fde3ac1 100644 --- a/wkim/build.gradle +++ b/wkim/build.gradle @@ -24,8 +24,6 @@ afterEvaluate { android { compileSdk 33 - buildToolsVersion '33.0.2' - defaultConfig { minSdkVersion 19 targetSdkVersion 33 diff --git a/wkim/src/main/java/com/xinbida/wukongim/db/MsgDbManager.java b/wkim/src/main/java/com/xinbida/wukongim/db/MsgDbManager.java index c2264ac..c3b2166 100644 --- a/wkim/src/main/java/com/xinbida/wukongim/db/MsgDbManager.java +++ b/wkim/src/main/java/com/xinbida/wukongim/db/MsgDbManager.java @@ -9,6 +9,7 @@ import android.database.Cursor; import android.os.Handler; import android.os.Looper; import android.text.TextUtils; +import android.util.Log; import com.xinbida.wukongim.WKIM; import com.xinbida.wukongim.WKIMApplication; @@ -57,10 +58,16 @@ public class MsgDbManager { } private int requestCount; + private int more = 1; public void queryOrSyncHistoryMessages(String channelId, byte channelType, long oldestOrderSeq, boolean contain, int pullMode, int limit, final IGetOrSyncHistoryMsgBack iGetOrSyncHistoryMsgBack) { //获取原始数据 List list = queryMessages(channelId, channelType, oldestOrderSeq, contain, pullMode, limit); + if (more == 0) { + new Handler(Looper.getMainLooper()).post(() -> iGetOrSyncHistoryMsgBack.onResult(list)); + more = 1; + return; + } //业务判断数据 List tempList = new ArrayList<>(); for (int i = 0, size = list.size(); i < size; i++) { @@ -164,6 +171,7 @@ public class MsgDbManager { if (!isSyncMsg) { if (minMessageSeq == 1) { requestCount = 0; + more = 1; new Handler(Looper.getMainLooper()).post(() -> iGetOrSyncHistoryMsgBack.onResult(list)); return; } @@ -187,18 +195,21 @@ public class MsgDbManager { //同步消息 requestCount++; MsgManager.getInstance().setSyncChannelMsgListener(channelId, channelType, startMsgSeq, endMsgSeq, limit, pullMode, syncChannelMsg -> { - if (syncChannelMsg != null && syncChannelMsg.messages != null && syncChannelMsg.messages.size() > 0) { + if (syncChannelMsg != null) { if (oldestMsgSeq == 0) { requestCount = 5; } + more = syncChannelMsg.more; queryOrSyncHistoryMessages(channelId, channelType, oldestOrderSeq, contain, pullMode, limit, iGetOrSyncHistoryMsgBack); } else { requestCount = 0; + more = 1; new Handler(Looper.getMainLooper()).post(() -> iGetOrSyncHistoryMsgBack.onResult(list)); } }); } else { requestCount = 0; + more = 1; new Handler(Looper.getMainLooper()).post(() -> iGetOrSyncHistoryMsgBack.onResult(list)); } diff --git a/wkim/src/main/java/com/xinbida/wukongim/db/MsgReactionDBManager.java b/wkim/src/main/java/com/xinbida/wukongim/db/MsgReactionDBManager.java index 16989bd..d817488 100644 --- a/wkim/src/main/java/com/xinbida/wukongim/db/MsgReactionDBManager.java +++ b/wkim/src/main/java/com/xinbida/wukongim/db/MsgReactionDBManager.java @@ -52,12 +52,13 @@ class MsgReactionDBManager { } public synchronized void insertOrUpdate(WKMsgReaction reaction) { - boolean isExist = isExist(reaction.uid, reaction.messageID); - if (isExist) { - update(reaction); - } else { - insert(reaction); - } +// boolean isExist = isExist(reaction.uid, reaction.messageID); +// if (isExist) { +// update(reaction); +// } else { +// insert(reaction); +// } + insert(reaction); } public void insert(WKMsgReaction reaction) { diff --git a/wkim/src/main/java/com/xinbida/wukongim/manager/MsgManager.java b/wkim/src/main/java/com/xinbida/wukongim/manager/MsgManager.java index 8994cc1..ddca8fe 100644 --- a/wkim/src/main/java/com/xinbida/wukongim/manager/MsgManager.java +++ b/wkim/src/main/java/com/xinbida/wukongim/manager/MsgManager.java @@ -292,53 +292,51 @@ public class MsgManager extends BaseManager { * @param iGetOrSyncHistoryMsgBack 请求返还 */ public void getOrSyncHistoryMessages(String channelId, byte channelType, long oldestOrderSeq, boolean contain, int pullMode, int limit, long aroundMsgOrderSeq, final IGetOrSyncHistoryMsgBack iGetOrSyncHistoryMsgBack) { - new Thread(new Runnable() { - @Override - public void run() { - int tempPullMode = pullMode; - long tempOldestOrderSeq = oldestOrderSeq; - boolean tempContain = contain; - if (aroundMsgOrderSeq != 0) { + new Thread(() -> { + int tempPullMode = pullMode; + long tempOldestOrderSeq = oldestOrderSeq; + boolean tempContain = contain; + if (aroundMsgOrderSeq != 0) { // long maxMsgSeq = getMaxMessageSeqWithChannel(channelId, channelType); - long maxMsgSeq = - MsgDbManager.getInstance().queryMaxMessageSeqNotDeletedWithChannel(channelId, channelType); - long aroundMsgSeq = getOrNearbyMsgSeq(aroundMsgOrderSeq); + long maxMsgSeq = + MsgDbManager.getInstance().queryMaxMessageSeqNotDeletedWithChannel(channelId, channelType); + long aroundMsgSeq = getOrNearbyMsgSeq(aroundMsgOrderSeq); - if (maxMsgSeq >= aroundMsgSeq && maxMsgSeq - aroundMsgSeq <= limit) { - // 显示最后一页数据 + if (maxMsgSeq >= aroundMsgSeq && maxMsgSeq - aroundMsgSeq <= limit) { + // 显示最后一页数据 // oldestOrderSeq = 0; - tempOldestOrderSeq = getMessageOrderSeq(maxMsgSeq, channelId, channelType); - if (tempOldestOrderSeq < aroundMsgOrderSeq) { - tempOldestOrderSeq = aroundMsgOrderSeq; - } - tempContain = true; - tempPullMode = 0; - } else { - long minOrderSeq = MsgDbManager.getInstance().queryOrderSeq(channelId, channelType, aroundMsgOrderSeq, 3); - if (minOrderSeq == 0) { - tempOldestOrderSeq = aroundMsgOrderSeq; - } else { - if (minOrderSeq + limit < aroundMsgOrderSeq) { - if (aroundMsgOrderSeq % wkOrderSeqFactor == 0) { - tempOldestOrderSeq = (aroundMsgOrderSeq / wkOrderSeqFactor - 3) * wkOrderSeqFactor; - } else - tempOldestOrderSeq = aroundMsgOrderSeq - 3; -// oldestOrderSeq = aroundMsgOrderSeq; - } else { - // todo 这里只会查询3条数据 oldestOrderSeq = minOrderSeq - long startOrderSeq = MsgDbManager.getInstance().queryOrderSeq(channelId, channelType, aroundMsgOrderSeq, limit); - if (startOrderSeq == 0) { - tempOldestOrderSeq = aroundMsgOrderSeq; - } else - tempOldestOrderSeq = startOrderSeq; - } - } - tempPullMode = 1; - tempContain = true; + tempOldestOrderSeq = getMaxOrderSeqWithChannel(channelId, channelType); +// tempOldestOrderSeq = getMessageOrderSeq(maxMsgSeq, channelId, channelType); + if (tempOldestOrderSeq < aroundMsgOrderSeq) { + tempOldestOrderSeq = aroundMsgOrderSeq; } + tempContain = true; + tempPullMode = 0; + } else { + long minOrderSeq = MsgDbManager.getInstance().queryOrderSeq(channelId, channelType, aroundMsgOrderSeq, 3); + if (minOrderSeq == 0) { + tempOldestOrderSeq = aroundMsgOrderSeq; + } else { + if (minOrderSeq + limit < aroundMsgOrderSeq) { + if (aroundMsgOrderSeq % wkOrderSeqFactor == 0) { + tempOldestOrderSeq = (aroundMsgOrderSeq / wkOrderSeqFactor - 3) * wkOrderSeqFactor; + } else + tempOldestOrderSeq = aroundMsgOrderSeq - 3; +// oldestOrderSeq = aroundMsgOrderSeq; + } else { + // todo 这里只会查询3条数据 oldestOrderSeq = minOrderSeq + long startOrderSeq = MsgDbManager.getInstance().queryOrderSeq(channelId, channelType, aroundMsgOrderSeq, limit); + if (startOrderSeq == 0) { + tempOldestOrderSeq = aroundMsgOrderSeq; + } else + tempOldestOrderSeq = startOrderSeq; + } + } + tempPullMode = 1; + tempContain = true; } - MsgDbManager.getInstance().queryOrSyncHistoryMessages(channelId, channelType, tempOldestOrderSeq, tempContain, tempPullMode, limit, iGetOrSyncHistoryMsgBack); } + MsgDbManager.getInstance().queryOrSyncHistoryMessages(channelId, channelType, tempOldestOrderSeq, tempContain, tempPullMode, limit, iGetOrSyncHistoryMsgBack); }).start(); }