insertMsgList method
Implementation
Future<bool> insertMsgList(List<WKMsg> list) async {
if (list.isEmpty) return true;
if (list.length == 1) {
insert(list[0]);
return true;
}
List<WKMsg> saveList = [];
for (int i = 0, size = list.length; i < size; i++) {
bool isExist = false;
for (int j = 0, len = saveList.length; j < len; j++) {
if (list[i].clientMsgNO == saveList[j].clientMsgNO) {
isExist = true;
break;
}
}
if (isExist) {
list[i].clientMsgNO = WKIM.shared.messageManager.generateClientMsgNo();
list[i].isDeleted = 1;
}
saveList.add(list[i]);
}
List<String> clientMsgNos = [];
List<WKMsg> existMsgList = [];
for (int i = 0, size = saveList.length; i < size; i++) {
if (clientMsgNos.length == 200) {
List<WKMsg> tempList = await queryWithClientMsgNos(clientMsgNos);
if (tempList.isNotEmpty) {
existMsgList.addAll(tempList);
}
clientMsgNos.clear();
}
if (saveList[i].clientMsgNO != '') {}
clientMsgNos.add(saveList[i].clientMsgNO);
}
if (clientMsgNos.isNotEmpty) {
List<WKMsg> tempList = await queryWithClientMsgNos(clientMsgNos);
if (tempList.isNotEmpty) {
existMsgList.addAll(tempList);
}
clientMsgNos.clear();
}
for (WKMsg msg in saveList) {
for (WKMsg tempMsg in existMsgList) {
if (tempMsg.clientMsgNO != '' &&
msg.clientMsgNO != '' &&
tempMsg.clientMsgNO == msg.clientMsgNO) {
msg.isDeleted = 1;
msg.clientMsgNO = WKIM.shared.messageManager.generateClientMsgNo();
break;
}
}
}
// insertMsgList(saveList);
List<Map<String, Object>> cvList = [];
for (WKMsg wkMsg in saveList) {
cvList.add(getMap(wkMsg));
}
if (cvList.isNotEmpty) {
WKDBHelper.shared.getDB()!.transaction((txn) async {
for (int i = 0; i < cvList.length; i++) {
txn.insert(WKDBConst.tableMessage, cvList[i],
conflictAlgorithm: ConflictAlgorithm.replace);
}
});
}
return true;
}