getMessageSQL static method
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;
}