summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xframework/storage-handler/MsgStorageMessage.cpp4
-rwxr-xr-xframework/storage-handler/MsgStorageMms.cpp5
-rwxr-xr-xframework/transaction-manager/MsgTransManager.cpp13
3 files changed, 13 insertions, 9 deletions
diff --git a/framework/storage-handler/MsgStorageMessage.cpp b/framework/storage-handler/MsgStorageMessage.cpp
index 71498da..a4ff93c 100755
--- a/framework/storage-handler/MsgStorageMessage.cpp
+++ b/framework/storage-handler/MsgStorageMessage.cpp
@@ -297,6 +297,7 @@ msg_error_t MsgStoUpdateMessage(MSG_MESSAGE_INFO_S *pMsg, MSG_SENDINGOPT_INFO_S
char sqlQuery[MAX_QUERY_LEN+1];
msg_thread_id_t convId = 0;
+ msg_thread_id_t prevConvId = pMsg->threadId;
MsgDbHandler *dbHandle = getDbHandle();
dbHandle->beginTrans();
@@ -508,6 +509,9 @@ msg_error_t MsgStoUpdateMessage(MSG_MESSAGE_INFO_S *pMsg, MSG_SENDINGOPT_INFO_S
dbHandle->endTrans(true);
+ if (prevConvId != 0 && prevConvId != convId && MsgExistInThreadViewList(dbHandle, prevConvId) == false)
+ MsgTransactionManager::instance()->broadcastThreadChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, prevConvId);
+
return MSG_SUCCESS;
}
diff --git a/framework/storage-handler/MsgStorageMms.cpp b/framework/storage-handler/MsgStorageMms.cpp
index bd519cd..8d3f5ab 100755
--- a/framework/storage-handler/MsgStorageMms.cpp
+++ b/framework/storage-handler/MsgStorageMms.cpp
@@ -21,6 +21,7 @@
#include "MsgSqliteWrapper.h"
#include "MsgStorageHandler.h"
#include "MsgContact.h"
+#include "MsgTransManager.h"
/*==================================================================================================
@@ -325,6 +326,10 @@ msg_error_t MsgStoUpdateMMSMessage(MSG_MESSAGE_INFO_S *pMsg)
if (MsgStoClearConversationTable(dbHandle) != MSG_SUCCESS) {
MSG_DEBUG("MsgStoClearConversationTable() Error");
}
+
+ if (MsgExistInThreadViewList(dbHandle, prev_conv_id) == false) {
+ MsgTransactionManager::instance()->broadcastThreadChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, prev_conv_id);
+ }
}
}
}
diff --git a/framework/transaction-manager/MsgTransManager.cpp b/framework/transaction-manager/MsgTransManager.cpp
index 2e189f8..fd7001d 100755
--- a/framework/transaction-manager/MsgTransManager.cpp
+++ b/framework/transaction-manager/MsgTransManager.cpp
@@ -1277,7 +1277,7 @@ void MsgTransactionManager::broadcastStorageChangeCB(const msg_error_t err, cons
MsgDbHandler *dbHandle = getDbHandle();
MsgSimpleQ<msg_thread_id_t> updatedConvQ;
- if (storageChangeType == MSG_STORAGE_CHANGE_INSERT) {
+ if (storageChangeType == MSG_STORAGE_CHANGE_INSERT || storageChangeType == MSG_STORAGE_CHANGE_UPDATE) {
for (int i = 0; i < pMsgIdList->nCount; i++) {
msg_thread_id_t conv_id = MsgGetThreadId(dbHandle, pMsgIdList->msgIdList[i]);
bool found = (std::find(cur_conv_list.begin(), cur_conv_list.end(), conv_id) != cur_conv_list.end());
@@ -1293,14 +1293,6 @@ void MsgTransactionManager::broadcastStorageChangeCB(const msg_error_t err, cons
}
}
}
- } else if (storageChangeType == MSG_STORAGE_CHANGE_UPDATE) {
- for (int i = 0; i < pMsgIdList->nCount; i++) {
- msg_thread_id_t conv_id = MsgGetThreadId(dbHandle, pMsgIdList->msgIdList[i]);
- if (updatedConvQ.checkExist(conv_id, compare_func) == false) {
- broadcastThreadChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_UPDATE, conv_id);
- updatedConvQ.push_back(conv_id);
- }
- }
}
updatedConvQ.clear();
@@ -1315,6 +1307,9 @@ void MsgTransactionManager::broadcastThreadChangeCB(const msg_error_t err, const
MSG_DEBUG("storageChangeType [%d], threadId [%d]", storageChangeType, threadId);
+ if (threadId <= 0)
+ return;
+
if (storageChangeType == MSG_STORAGE_CHANGE_DELETE)
cur_conv_list.remove(threadId);