ifNeedLoadNewLanguages function
Implementation
Future<String?> ifNeedLoadNewLanguages(List<LangData> appLangs, String app, Function(LangData) callback) async {
try{
var querySnapshot = await FirebaseFirestore.instance.collection("language").doc("langs").get();
var data = querySnapshot.data();
if (data == null)
return "langs = null";
addStat("langs", data.length);
dprint("loadLanguages data=$data");
if (data['list'] != null) {
var elementList = data['list'];
appLangs = [];
elementList.forEach((item) {
var t = LangData.fromJson(item);
callback(t);
if (t.app == app)
appLangs.add(t);
// appLangs.add(LangData(name: element["name"], engName: element["engName"], image: "", app: app,
// direction: element["direction"] == "ltr" ? TextDirection.ltr : TextDirection.rtl, locale: element["locale"],
// data: {}),);
});
//
// get language version
//
if (data['ver'].toString() != localSettings.langVer){
// save local
var directory = await getApplicationDocumentsDirectory();
var directoryPath = directory.path;
dprint("appLangs ${appLangs.length}");
await File('$directoryPath/listlangs.json').writeAsString(json.encode(appLangs.map((i) => i.toJson()).toList()));
appSettings.langVer = data['ver'];
await saveSettingsToLocalFile(appSettings);
//
// get languages
//
for (var element in appLangs){
var _doc = "${element.app}_${element.locale}";
var querySnapshot = await FirebaseFirestore.instance.collection("language").doc(_doc).get();
var data = querySnapshot.data();
if (data != null) {
Map<String, dynamic> _words = data['data'];
// save local
dprint("save language local $_doc");
var _t = json.encode(_words);
await File('$directoryPath/$_doc.json').writeAsString(_t);
}
}
localSettings.setLangVersion(data['ver'].toString());
}
}
}catch(ex){
return "ifNeedLoadNewLanguages " + ex.toString();
}
return null;
}