Merge branch 'develop' into feature/fd-466

This commit is contained in:
J. A. Messias 2024-11-08 10:26:45 -03:00
commit 83f7b0aeff
8 changed files with 29 additions and 59 deletions

View File

@ -37,7 +37,7 @@ class _LocalProfileComponentWidgetState extends State<LocalProfileComponentWidge
//
// WidgetsBinding.instance
// .addPostFrameCallback((_) async => await LocalizationService.processLocals(context).then((value) => value == true ? onUpdate() : null));
LocalizationService.processLocals(context).then((value) => value == true ? onUpdate() : null);
// LocalizationService.processLocals(context).then((value) => value == true ? onUpdate() : null);
}
@override

View File

@ -24,6 +24,8 @@ import 'package:hub/shared/services/localization/localization_service.dart';
import 'package:hub/shared/utils/device_util.dart';
import 'package:responsive_framework/responsive_framework.dart';
import 'backend/notifications/firebase_messaging_service.dart';
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
void main() async {
@ -250,7 +252,6 @@ class _AppState extends State<App> with WidgetsBindingObserver {
super.initState();
WidgetsBinding.instance.addObserver(this);
log('DeviceUtil: ${DeviceUtil.getDeviceOSVersion()}');
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
_appStateNotifier = AppStateNotifier.instance;
@ -271,7 +272,10 @@ class _AppState extends State<App> with WidgetsBindingObserver {
@override
void didChangeAppLifecycleState(AppLifecycleState state) async {
if(state == AppLifecycleState.resumed) await LocalizationService.processLocals(context);
if(state == AppLifecycleState.detached) {
await LocalizationService.processLocals(context);
FirebaseMessagingService().updateDeviceToken();
}
}
@override

View File

@ -41,7 +41,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
_model = createModel(context, () => HomePageModel(safeSetState: () => safeSetState((){})));
FirebaseMessagingService().updateDeviceToken();
_model.textController ??= TextEditingController();
_model.textFieldFocusNode ??= FocusNode();

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:hub/shared/helpers/base_storage.dart';
class SecureStorage extends ChangeNotifier implements BaseStorage {
class SecureStorage implements BaseStorage {
SecureStorage._();
static final SecureStorage instance = SecureStorage._();
@ -22,18 +22,15 @@ class SecureStorage extends ChangeNotifier implements BaseStorage {
@override
Future<void> set(String key, String value) async {
await _secureStorage.write(key: key, value: value);
notifyListeners();
}
@override
Future<void> delete(String key) async {
await _secureStorage.delete(key: key);
notifyListeners();
}
@override
Future<void> clearAll() async {
await _secureStorage.deleteAll();
notifyListeners();
}
}

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:hub/shared/helpers/base_storage.dart';
import 'package:shared_preferences/shared_preferences.dart';
class SharedPreferencesStorage extends ChangeNotifier implements BaseStorage {
class SharedPreferencesStorage implements BaseStorage {
SharedPreferencesStorage._();
static final SharedPreferencesStorage instance = SharedPreferencesStorage._();
@ -22,18 +22,15 @@ class SharedPreferencesStorage extends ChangeNotifier implements BaseStorage {
@override
Future<void> set(String key, String value) async {
await _prefs.setString(key, value);
notifyListeners();
}
@override
Future<void> delete(String key) async {
await _prefs.remove(key);
notifyListeners();
}
@override
Future<void> clearAll() async {
await _prefs.clear();
notifyListeners();
}
}

View File

@ -1,21 +1,21 @@
import 'package:flutter/material.dart';
import 'package:hub/shared/helpers/base_storage.dart';
import 'package:sqflite/sqflite.dart';
import 'package:sqflite/sqlite_api.dart';
import 'package:path/path.dart';
class SQLiteStorage extends ChangeNotifier implements BaseStorage {
class SQLiteStorage implements BaseStorage {
SQLiteStorage._();
final String _dbName = 'database.db';
final int _dbVersion = 1;
static final String _dbName = 'database.db';
static final int _dbVersion = 1;
static const String tableKeychain = 'keychain';
static final SQLiteStorage instance = SQLiteStorage._();
late final _database;
@override
Future<void> init() async {
@override Future<void> init() async {
_database = await openDatabase(
join(await getDatabasesPath(), _dbName),
version: _dbVersion,
@ -23,30 +23,15 @@ class SQLiteStorage extends ChangeNotifier implements BaseStorage {
onUpgrade: _onUpdate,
onDowngrade: _onDowngrade,
);
await _onInitLocalVariables(_database);
// await _onInitLocalVariables(_database);
}
_onCreate(Database database, int version) async {
await database.execute(_tableKeychain);
}
_onUpdate(Database database, int oldVersion, int newVersion) async {}
_onDowngrade(Database database, int oldVersion, int newVersion) async {}
_onInitLocalVariables(Database database) async {
// TODO: Talvez precise colocar um transaction aqui como o
// database.batch() para melhorar a performance
for (var variable in _localVariables) {
var isConfig = await database.query('keychain', where: 'key = ?', whereArgs: [variable['key']]);
if (isConfig.isEmpty) {
await database.insert('keychain', variable);
}
}
}
String get _tableKeychain => '''
CREATE TABLE keychain (
@ -81,22 +66,18 @@ class SQLiteStorage extends ChangeNotifier implements BaseStorage {
{'key': SQLiteStorageKey.petAmount.value, 'value': '', 'type': 'local'},
];
@override
Future<String?> get(String key) async {
@override Future<String?> get(String key) async {
var response = await _database.query('keychain', where: 'key = ?', whereArgs: [key]);
if (response.isEmpty) {
return null;
}
return response.first['value'];
}
@override
Future<void> set(String key, String value) async {
@override Future<void> set(String key, String value) async {
var date = DateTime.now().toIso8601String();
await _database.insert(
'keychain',
tableKeychain,
{
'key': key,
'value': value,
@ -105,24 +86,15 @@ class SQLiteStorage extends ChangeNotifier implements BaseStorage {
'resolvedAt': date,
'createdAt': date,
},
conflictAlgorithm: ConflictAlgorithm.replace);
notifyListeners();
conflictAlgorithm: ConflictAlgorithm.replace
);
}
@override
Future<void> delete(String key) async {
var isConfig = await _database.query('keychain', where: 'key = ?', whereArgs: [key]);
if (isConfig.isNotEmpty) {
await _database.delete('keychain', where: 'key = ?', whereArgs: [key]);
}
notifyListeners();
@override Future<void> delete(String key) async {
await _database.delete('keychain', where: 'key = ?', whereArgs: [key]);
}
@override
Future<void> clearAll() async {
@override Future<void> clearAll() async {
await _database.delete('keychain');
notifyListeners();
}
}

View File

@ -6,8 +6,6 @@ import 'package:hub/shared/helpers/sqlite_storage.dart';
class StorageHelper {
static final StorageHelper _instance = StorageHelper._internal();
factory StorageHelper() => _instance;
StorageHelper._internal();

View File

@ -210,16 +210,18 @@ class LocalizationService {
enText: 'Error getting authentication credentials',
);
await DialogUtil.error(context, errorMsg);
return;
// await DialogUtil.error(context, errorMsg).whenComplete(() async => await AuthenticationService.signOut(context));
}
else if (isAuthenticated && !isDevLinked) {
if (!isDevLinked) {
errorMsg = FFLocalizations.of(context).getVariableText(
ptText: 'Não foi possível vincular o dispositivo, tente novamente.',
enText: 'Unable to link device, try again',
);
await DialogUtil.warning(context, errorMsg);
return;
}
else if (isAuthenticated && isDevLinked) await DialogUtil.error(context, errorMsg).whenComplete(() async => await selectLocal(context));
await DialogUtil.error(context, errorMsg).whenComplete(() async => await selectLocal(context));
}