getMessageSQL static method

Future<void> getMessageSQL({
  1. List<Map<String, Object?>>? dtLanguage,
  2. bool reload = false,
})

Implementation

static Future<void> getMessageSQL({
  List<Map<String, Object?>>? dtLanguage,
  bool reload = false,
}) async {
  //cong key kho vao, de dam bao khong gap ky tu user su dung.
  const pattern = '[(=-|';
  SharedPreferences prefs = await SharedPreferences.getInstance();
  int language = prefs.getInt(prefLanguage) ?? Common.languageId;
  Map<String, String> valueMessage = {};
  List<String> localMessage = prefs.getStringList(prefMessage) ?? [];
  if (localMessage.isEmpty || reload) {
    List<String> listLanguage = [];
    if (localMessage.isEmpty ||
        dtLanguage == null ||
        dtLanguage.isEmpty ||
        reload) {
      var data = await SQLService.execute('getMessage', params: {
        '@languageId': language,
      });
      dtLanguage = Methods.getList(data, 'language');
    }

    await SQLService.execute('sp_setHasMapMessage',
        params: {'@uid': Common.uid});

    for (var item in dtLanguage) {
      listLanguage.add(Methods.getString(item, 'messageId') +
          pattern +
          Methods.getString(item, 'message'));
    }
    if (prefs.getStringList(prefMessage) != null) {
      await prefs.remove(prefMessage);
    }
    await prefs.setStringList(prefMessage, listLanguage);
    List<String> list = prefs.getStringList(prefMessage) ?? [];
    for (var item in list) {
      var convert = item.split(pattern);
      if (convert.length > 1) {
        String messageId = convert[0].toString().toUpperCase();
        if (!valueMessage.containsKey(messageId)) {
          valueMessage[messageId] = convert[1];
        }
      }
    }
    if (kDebugMode) {
      print('load Message from server success');
    }
  } else {
    List<String> list = localMessage;
    for (var item in list) {
      var convert = item.split(pattern);
      if (convert.length > 1) {
        String messageId = convert[0].toString().toUpperCase();
        if (!valueMessage.containsKey(messageId)) {
          valueMessage[messageId] = convert[1];
        }
      }
    }
    if (kDebugMode) {
      print('load Message from local success');
    }
  }
  Common.mapMessageData = valueMessage;
}