import 'dart:convert'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:jwt_decoder/jwt_decoder.dart'; import 'package:secure_string_operations/secure_string_operations.dart'; import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart'; import 'package:sefer_driver/controller/functions/encrypt_decrypt.dart'; import '../../constant/box_name.dart'; import '../../constant/char_map.dart'; import '../../constant/info.dart'; import '../../constant/links.dart'; import '../../main.dart'; import '../../print.dart'; import 'crud.dart'; class SecureStorage { final FlutterSecureStorage _storage = const FlutterSecureStorage(); void saveData(String key, value) async { await _storage.write(key: key, value: value); } Future readData(String boxName) async { final String? value = await _storage.read(key: boxName); return value; } } const List keysToFetch = [ 'serverPHP', 'seferAlexandriaServer', 'seferPaymentServer', 'seferCairoServer', 'seferGizaServer', ]; class AppInitializer { List> links = []; Future initializeApp() async { Log.print('box.read("jwt"): ${box.read(BoxName.jwt)}'); if (box.read(BoxName.jwt) == null) { await LoginDriverController().getJWT(); } else { print('firstTimeLoadKey ${box.read(BoxName.firstTimeLoadKey)}'); bool isTokenExpired = JwtDecoder.isExpired(X .r(X.r(X.r(box.read(BoxName.jwt), cn), cC), cs) .toString() .split(AppInformation.addd)[0]); Log.print('isTokenExpired: $isTokenExpired'); if (isTokenExpired) { await LoginDriverController().getJWT(); } } // await getKey(); } getAIKey(String key1) async { if (box.read(BoxName.firstTimeLoadKey) == null) { var res = await CRUD().get(link: AppLink.getapiKey, payload: {"keyName": key1}); if (res != 'failure') { var d = jsonDecode(res)['message']; await storage.write(key: key1, value: d[key1].toString()); await Future.delayed(Duration.zero); } else {} } } Future getKey() async { try { var res = await CRUD().get(link: AppLink.getLocationAreaLinks, payload: {}); // Log.print('res: ${res}'); if (res != 'failure') { links = List>.from(jsonDecode(res)['message']); await box.remove(BoxName.locationName); await box.remove(BoxName.basicLink); await box.remove(links[4]['name']); await box.remove(links[1]['name']); await box.remove(links[2]['name']); await box.write(BoxName.locationName, links); await box.write(BoxName.basicLink, EncryptionHelper.instance.decryptData(links[0]['server_link'])); await box.write(links[2]['name'], EncryptionHelper.instance.decryptData(links[2]['server_link'])); await box.write(links[1]['name'], EncryptionHelper.instance.decryptData(links[3]['server_link'])); await box.write(links[3]['name'], EncryptionHelper.instance.decryptData(links[1]['server_link'])); await box.write(BoxName.paymentLink, EncryptionHelper.instance.decryptData(links[4]['server_link'])); } } catch (e) { print('Error fetching or decoding location data: $e'); } } }