|
|
@@ -1,3 +1,5 @@
|
|
|
+import 'dart:async';
|
|
|
+
|
|
|
import 'package:easy_localization/easy_localization.dart';
|
|
|
import 'package:firebase_messaging/firebase_messaging.dart';
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
@@ -306,7 +308,9 @@ class U {
|
|
|
}
|
|
|
|
|
|
static int _serverVersion = 0;
|
|
|
+ static final Completer<void> _versionReady = Completer<void>();
|
|
|
static List validLang = [];
|
|
|
+
|
|
|
static getServerVersion() async{
|
|
|
String url = '/api/license';
|
|
|
try {
|
|
|
@@ -314,6 +318,7 @@ class U {
|
|
|
_serverVersion = dt['serverVersion'];
|
|
|
validLang = newServerVersion(1754624839) ? dt["_validLang"] : dt['languages'];
|
|
|
CacheMan.writeData(url, _serverVersion);
|
|
|
+ _versionReady.complete();
|
|
|
} catch (error) {
|
|
|
var val = await CacheMan.readData(url);
|
|
|
if (val != null) {
|
|
|
@@ -324,6 +329,12 @@ class U {
|
|
|
// print('checking current server version: $_serverVersion');
|
|
|
}
|
|
|
|
|
|
+ static Future<void> _waitUntilServerVersionReady() async {
|
|
|
+ if (!_versionReady.isCompleted) {
|
|
|
+ await _versionReady.future;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
static String getLang(code){
|
|
|
if(code is int){
|
|
|
return validLang[code+1];
|
|
|
@@ -352,7 +363,6 @@ class U {
|
|
|
static final Map<String, Future<bool>> _compatibilityCache = {};
|
|
|
static Future<bool> isCompatibleWith(VersionKey key) {
|
|
|
final keyName = key.name.toString();
|
|
|
-
|
|
|
if (_compatibilityCache.containsKey(keyName)) {
|
|
|
return _compatibilityCache[keyName]!;
|
|
|
}
|
|
|
@@ -363,7 +373,9 @@ class U {
|
|
|
}
|
|
|
|
|
|
static Future<bool> _loadAndCompare(String keyName) async {
|
|
|
+ await _waitUntilServerVersionReady();
|
|
|
final value = await C.get(keyName);
|
|
|
+
|
|
|
return value <= _serverVersion;
|
|
|
}
|
|
|
|