insertMsgList method

Future<bool> insertMsgList(
  1. List<WKMsg> list
)

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;
}