This commit is contained in:
J. A. Messias 2024-11-14 18:04:33 -03:00
parent 1f70e5db22
commit c5112075e6
9 changed files with 106 additions and 70 deletions

View File

@ -2,7 +2,6 @@ abstract class BaseStorage {
Future<void> init(); Future<void> init();
Future<void> set<T>(String key, T value); Future<void> set<T>(String key, T value);
Future<String?> get(String key); Future<String?> get(String key);
@ -94,6 +93,7 @@ enum KeychainStorageKey {
panic, panic,
person, person,
requestOSNotification, requestOSNotification,
isNewVersion,
} }
extension KeychainStorageKeyExtension on KeychainStorageKey { extension KeychainStorageKeyExtension on KeychainStorageKey {
@ -137,6 +137,68 @@ extension KeychainStorageKeyExtension on KeychainStorageKey {
return 'fre_person'; return 'fre_person';
case KeychainStorageKey.requestOSNotification: case KeychainStorageKey.requestOSNotification:
return 'fre_requestOSnotification'; return 'fre_requestOSnotification';
case KeychainStorageKey.isNewVersion:
return 'fre_isNewVersion';
default:
return '';
}
}
}
enum InactiveLicenseKey {
residents,
vehicles,
openedVisits,
}
enum ActiveLicenseKey {
messages,
liberations,
reservations,
access,
orders,
completeSchedule,
providerSchedule,
deliverySchedule,
fastPass,
}
extension InactiveLicenseKeyExtension on InactiveLicenseKey {
String get value {
switch (this) {
case InactiveLicenseKey.residents:
return 'FRE-HUB-RESIDENTS';
case InactiveLicenseKey.vehicles:
return 'FRE-HUB-VEHICLES';
case InactiveLicenseKey.openedVisits:
return 'FRE-HUB-OPENED-VISITS';
default:
return '';
}
}
}
extension ActiveLicenseKeyExtension on ActiveLicenseKey {
String get value {
switch (this) {
case ActiveLicenseKey.messages:
return 'FRE-HUB-MESSAGES';
case ActiveLicenseKey.liberations:
return 'FRE-HUB-LIBERATIONS';
case ActiveLicenseKey.reservations:
return 'FRE-HUB-RESERVATIONS';
case ActiveLicenseKey.access:
return 'FRE-HUB-ACCESS';
case ActiveLicenseKey.orders:
return 'FRE-HUB-ORDERS';
case ActiveLicenseKey.completeSchedule:
return 'FRE-HUB-COMPLETE-SCHEDULE';
case ActiveLicenseKey.providerSchedule:
return 'FRE-HUB-AGE-PROV-PRESTADOR';
case ActiveLicenseKey.deliverySchedule:
return 'FRE-HUB-AGE-PROV-DELIVERY';
case ActiveLicenseKey.fastPass:
return 'FRE-HUB-FASTPASS';
default: default:
return ''; return '';
} }

View File

@ -1,13 +1,11 @@
import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/keychain_storage.dart';
import 'package:hub/shared/services/keychain/keychain_database_delegate.dart'; import 'package:hub/shared/helpers/license_helper.dart';
import 'package:hub/shared/services/keychain/keychain_service.dart';
import 'package:hub/shared/services/license/license_database_delegate.dart';
import 'package:hub/shared/services/license/license_service.dart'; import 'package:hub/shared/services/license/license_service.dart';
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart'; import 'package:path/path.dart';
import 'dart:developer'; import 'dart:developer';
class DatabaseStorage implements BaseStorage { class DatabaseStorage {
static final String _dbName = 'database.db'; static final String _dbName = 'database.db';
static final int _dbVersion = 2; static final int _dbVersion = 2;
@ -23,16 +21,6 @@ class DatabaseStorage implements BaseStorage {
return _database!; return _database!;
} }
static BaseStorage getInstanceByKey(String key) {
if (KeychainStorageKey.values.map((e) => e.value).toList().contains(key)) {
return KeychainDelegate.instance;
}
if (LicenseStorageKey.values.map((e) => e.value).toList().contains(key)) {
return LicenseDelegate.instance;
}
throw Exception('Storage not found');
}
Future<void> init() async { Future<void> init() async {
if (_database != null && _database!.isOpen) return; if (_database != null && _database!.isOpen) return;
_database = await openDatabase( _database = await openDatabase(
@ -61,25 +49,4 @@ class DatabaseStorage implements BaseStorage {
Future<void> _onDowngrade(Database database, int oldVersion, int newVersion) async {} Future<void> _onDowngrade(Database database, int oldVersion, int newVersion) async {}
@override }
Future<void> clearAll() async {
await _database?.delete(KeychainDelegate.tableKeychain);
await _database?.delete(LicenseDelegate.tableLicense);
return;
}
@override
Future<void> delete(String key) async {
return await getInstanceByKey(key).delete(key);
}
@override
Future<String?> get(String key) async {
return await getInstanceByKey(key).get(key);
}
@override
Future<void> set<T>(String key, T value) async {
return await getInstanceByKey(key).set(key, value);
}
}

View File

@ -1,5 +1,5 @@
import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/base_storage.dart';
import 'package:hub/shared/helpers/database_storage.dart'; import 'package:hub/shared/helpers/database_helper.dart';
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
class KeychainDelegate implements BaseStorage { class KeychainDelegate implements BaseStorage {

View File

@ -1,8 +1,7 @@
import 'dart:convert';
import 'dart:developer'; import 'dart:developer';
import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/base_storage.dart';
import 'package:hub/shared/helpers/database_storage.dart'; import 'package:hub/shared/helpers/database_helper.dart';
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
class LicenseDelegate implements BaseStorage { class LicenseDelegate implements BaseStorage {
@ -53,6 +52,22 @@ class LicenseDelegate implements BaseStorage {
conflictAlgorithm: ConflictAlgorithm.replace); conflictAlgorithm: ConflictAlgorithm.replace);
} }
static Future<void> insertLicenseFoo(final List<String> key, final String display) async {
for (var element in key) {
DatabaseStorage.database.insert(
LicenseDelegate.tableLicense,
{
'key': element,
'display': display,
'expirationDate': '',
'startDate': '',
'quantity': '',
},
conflictAlgorithm: ConflictAlgorithm.ignore,
);
}
}
@override @override
Future<void> delete(String key) async { Future<void> delete(String key) async {
await DatabaseStorage.database.delete(tableLicense, where: 'key = ?', whereArgs: [key]); await DatabaseStorage.database.delete(tableLicense, where: 'key = ?', whereArgs: [key]);

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/base_storage.dart';

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/base_storage.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';

View File

@ -1,6 +1,7 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/base_storage.dart';
import 'package:hub/shared/helpers/database_storage.dart'; import 'package:hub/shared/helpers/database_helper.dart';
import 'package:hub/shared/helpers/keychain_storage.dart';
import 'package:hub/shared/helpers/secure_storage.dart'; import 'package:hub/shared/helpers/secure_storage.dart';
import 'package:hub/shared/helpers/shared_preferences_storage.dart'; import 'package:hub/shared/helpers/shared_preferences_storage.dart';
@ -37,7 +38,7 @@ class StorageHelper {
case Storage.sharedPreferences: case Storage.sharedPreferences:
return SharedPreferencesStorage.instance; return SharedPreferencesStorage.instance;
default: default:
return DatabaseStorage.instance; return KeychainDelegate.instance;
} }
} }
@ -47,7 +48,7 @@ class StorageHelper {
} else if (SharedPreferencesKey.values.map((e) => e.value).toList().contains(key)) { } else if (SharedPreferencesKey.values.map((e) => e.value).toList().contains(key)) {
return SharedPreferencesStorage.instance; return SharedPreferencesStorage.instance;
} else { } else {
return DatabaseStorage.instance; return KeychainDelegate.instance;
} }
} }

View File

@ -4,11 +4,10 @@ import 'dart:developer';
import 'package:hub/backend/api_requests/api_calls.dart'; import 'package:hub/backend/api_requests/api_calls.dart';
import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/base_storage.dart';
import 'package:hub/shared/helpers/database_storage.dart'; import 'package:hub/shared/helpers/database_helper.dart';
import 'dart:convert'; import 'package:hub/shared/helpers/license_helper.dart';
import 'package:hub/shared/helpers/storage_helper.dart'; import 'package:hub/shared/helpers/storage_helper.dart';
import 'package:hub/shared/services/license/license_database_delegate.dart';
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
class LicenseService { class LicenseService {
@ -17,20 +16,8 @@ class LicenseService {
LicenseService._internal(); LicenseService._internal();
static Future<void> setupLicense(Database database) async { static Future<void> setupLicense(Database database) async {
log('All modules are visible'); await LicenseDelegate.insertLicenseFoo(InactiveLicenseKey.values.map((e) => e.value).toList(), 'INVISIVEL');
for (var element in LicenseStorageKey.values.map((e) => e.value)) { await LicenseDelegate.insertLicenseFoo(ActiveLicenseKey.values.map((e) => e.value).toList(), 'VISIVEL');
await database.insert(
LicenseDelegate.tableLicense,
{
'key': element,
'display': 'VISIVEL',
'expirationDate': '',
'startDate': '',
'quantity': '',
},
conflictAlgorithm: ConflictAlgorithm.ignore,
);
}
} }
static Future<void> initLicenseService() async { static Future<void> initLicenseService() async {

View File

@ -7,6 +7,7 @@ import 'package:http/src/response.dart';
import 'package:hub/backend/api_requests/api_manager.dart'; import 'package:hub/backend/api_requests/api_manager.dart';
import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/flutter_flow/nav/nav.dart';
import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/base_storage.dart';
import 'package:hub/shared/helpers/database_helper.dart';
import 'package:hub/shared/helpers/storage_helper.dart'; import 'package:hub/shared/helpers/storage_helper.dart';
import 'package:hub/shared/services/license/license_service.dart'; import 'package:hub/shared/services/license/license_service.dart';
import 'package:hub/shared/utils/dialog_util.dart'; import 'package:hub/shared/utils/dialog_util.dart';
@ -150,7 +151,11 @@ class LocalizationService {
await DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, response)); await DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, response));
return false; return false;
} else { } else {
await _updateStorageUtil(response.jsonBody); final bool isNewVersion = await _updateStorageUtil(response.jsonBody);
if (!isNewVersion) {
await LicenseService.setupLicense(DatabaseStorage.database);
return false;
}
return await LicenseService.fetchLicenses(); return await LicenseService.fetchLicenses();
} }
} catch (e, s) { } catch (e, s) {
@ -293,19 +298,20 @@ class LocalizationService {
} }
} }
static Future<void> _updateStorageUtil(Map<String, dynamic> jsonBody) async { static Future<bool> _updateStorageUtil(Map<String, dynamic> jsonBody) async {
await StorageHelper().s(KeychainStorageKey.whatsapp.value, jsonBody['whatsapp'] != null && jsonBody['whatsapp']);
await StorageHelper() await StorageHelper()
.s(KeychainStorageKey.whatsapp.value, jsonBody['whatsapp'] != null && jsonBody['whatsapp'] ? 'true' : 'false'); .s(KeychainStorageKey.provisional.value, jsonBody['provisional'] != null && jsonBody['provisional']);
await StorageHelper().s(KeychainStorageKey.provisional.value, await StorageHelper().s(KeychainStorageKey.pets.value, jsonBody['pet'] != null && jsonBody['pet']);
jsonBody['provisional'] != null && jsonBody['provisional'] ? 'true' : 'false');
await StorageHelper()
.s(KeychainStorageKey.pets.value, jsonBody['pet'] != null && jsonBody['pet'] ? 'true' : 'false');
await StorageHelper().s( await StorageHelper().s(
KeychainStorageKey.petAmount.value, KeychainStorageKey.petAmount.value,
jsonBody['petAmountRegister'] != null && jsonBody['petAmountRegister'].toString().isEmpty jsonBody['petAmountRegister'] != null && jsonBody['petAmountRegister'].toString().isEmpty
? '0' ? '0'
: jsonBody['petAmountRegister'].toString()); : jsonBody['petAmountRegister'].toString());
await StorageHelper().s(KeychainStorageKey.userName.value, jsonBody['visitado']['VDO_NOME']); await StorageHelper().s(KeychainStorageKey.userName.value, jsonBody['visitado']['VDO_NOME']);
await StorageHelper()
.s(KeychainStorageKey.isNewVersion.value, jsonBody['newVersion'] != null && jsonBody['newVersion']);
return jsonBody['newVersion'] != null && jsonBody['newVersion'];
} }
static bool _isActive(List<dynamic> locals) { static bool _isActive(List<dynamic> locals) {