WIP
This commit is contained in:
parent
1f70e5db22
commit
c5112075e6
|
@ -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 '';
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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 {
|
|
@ -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]);
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue