Merge branch 'develop' into feature/fd-466
This commit is contained in:
commit
83f7b0aeff
|
@ -37,7 +37,7 @@ class _LocalProfileComponentWidgetState extends State<LocalProfileComponentWidge
|
||||||
//
|
//
|
||||||
// WidgetsBinding.instance
|
// WidgetsBinding.instance
|
||||||
// .addPostFrameCallback((_) async => await LocalizationService.processLocals(context).then((value) => value == true ? onUpdate() : null));
|
// .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
|
@override
|
||||||
|
|
|
@ -24,6 +24,8 @@ import 'package:hub/shared/services/localization/localization_service.dart';
|
||||||
import 'package:hub/shared/utils/device_util.dart';
|
import 'package:hub/shared/utils/device_util.dart';
|
||||||
import 'package:responsive_framework/responsive_framework.dart';
|
import 'package:responsive_framework/responsive_framework.dart';
|
||||||
|
|
||||||
|
import 'backend/notifications/firebase_messaging_service.dart';
|
||||||
|
|
||||||
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
|
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
|
@ -250,7 +252,6 @@ class _AppState extends State<App> with WidgetsBindingObserver {
|
||||||
super.initState();
|
super.initState();
|
||||||
WidgetsBinding.instance.addObserver(this);
|
WidgetsBinding.instance.addObserver(this);
|
||||||
|
|
||||||
log('DeviceUtil: ${DeviceUtil.getDeviceOSVersion()}');
|
|
||||||
|
|
||||||
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
|
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
|
||||||
_appStateNotifier = AppStateNotifier.instance;
|
_appStateNotifier = AppStateNotifier.instance;
|
||||||
|
@ -271,7 +272,10 @@ class _AppState extends State<App> with WidgetsBindingObserver {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void didChangeAppLifecycleState(AppLifecycleState state) async {
|
void didChangeAppLifecycleState(AppLifecycleState state) async {
|
||||||
if(state == AppLifecycleState.resumed) await LocalizationService.processLocals(context);
|
if(state == AppLifecycleState.detached) {
|
||||||
|
await LocalizationService.processLocals(context);
|
||||||
|
FirebaseMessagingService().updateDeviceToken();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
@ -41,7 +41,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
|
||||||
|
|
||||||
_model = createModel(context, () => HomePageModel(safeSetState: () => safeSetState((){})));
|
_model = createModel(context, () => HomePageModel(safeSetState: () => safeSetState((){})));
|
||||||
|
|
||||||
FirebaseMessagingService().updateDeviceToken();
|
|
||||||
|
|
||||||
_model.textController ??= TextEditingController();
|
_model.textController ??= TextEditingController();
|
||||||
_model.textFieldFocusNode ??= FocusNode();
|
_model.textFieldFocusNode ??= FocusNode();
|
||||||
|
|
|
@ -2,7 +2,7 @@ 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';
|
||||||
|
|
||||||
class SecureStorage extends ChangeNotifier implements BaseStorage {
|
class SecureStorage implements BaseStorage {
|
||||||
SecureStorage._();
|
SecureStorage._();
|
||||||
|
|
||||||
static final SecureStorage instance = SecureStorage._();
|
static final SecureStorage instance = SecureStorage._();
|
||||||
|
@ -22,18 +22,15 @@ class SecureStorage extends ChangeNotifier implements BaseStorage {
|
||||||
@override
|
@override
|
||||||
Future<void> set(String key, String value) async {
|
Future<void> set(String key, String value) async {
|
||||||
await _secureStorage.write(key: key, value: value);
|
await _secureStorage.write(key: key, value: value);
|
||||||
notifyListeners();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> delete(String key) async {
|
Future<void> delete(String key) async {
|
||||||
await _secureStorage.delete(key: key);
|
await _secureStorage.delete(key: key);
|
||||||
notifyListeners();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> clearAll() async {
|
Future<void> clearAll() async {
|
||||||
await _secureStorage.deleteAll();
|
await _secureStorage.deleteAll();
|
||||||
notifyListeners();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ 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';
|
||||||
|
|
||||||
class SharedPreferencesStorage extends ChangeNotifier implements BaseStorage {
|
class SharedPreferencesStorage implements BaseStorage {
|
||||||
SharedPreferencesStorage._();
|
SharedPreferencesStorage._();
|
||||||
|
|
||||||
static final SharedPreferencesStorage instance = SharedPreferencesStorage._();
|
static final SharedPreferencesStorage instance = SharedPreferencesStorage._();
|
||||||
|
@ -22,18 +22,15 @@ class SharedPreferencesStorage extends ChangeNotifier implements BaseStorage {
|
||||||
@override
|
@override
|
||||||
Future<void> set(String key, String value) async {
|
Future<void> set(String key, String value) async {
|
||||||
await _prefs.setString(key, value);
|
await _prefs.setString(key, value);
|
||||||
notifyListeners();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> delete(String key) async {
|
Future<void> delete(String key) async {
|
||||||
await _prefs.remove(key);
|
await _prefs.remove(key);
|
||||||
notifyListeners();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> clearAll() async {
|
Future<void> clearAll() async {
|
||||||
await _prefs.clear();
|
await _prefs.clear();
|
||||||
notifyListeners();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:hub/shared/helpers/base_storage.dart';
|
import 'package:hub/shared/helpers/base_storage.dart';
|
||||||
import 'package:sqflite/sqflite.dart';
|
import 'package:sqflite/sqflite.dart';
|
||||||
import 'package:sqflite/sqlite_api.dart';
|
import 'package:sqflite/sqlite_api.dart';
|
||||||
import 'package:path/path.dart';
|
import 'package:path/path.dart';
|
||||||
|
|
||||||
class SQLiteStorage extends ChangeNotifier implements BaseStorage {
|
class SQLiteStorage implements BaseStorage {
|
||||||
SQLiteStorage._();
|
SQLiteStorage._();
|
||||||
|
|
||||||
final String _dbName = 'database.db';
|
static final String _dbName = 'database.db';
|
||||||
final int _dbVersion = 1;
|
static final int _dbVersion = 1;
|
||||||
|
|
||||||
|
static const String tableKeychain = 'keychain';
|
||||||
|
|
||||||
static final SQLiteStorage instance = SQLiteStorage._();
|
static final SQLiteStorage instance = SQLiteStorage._();
|
||||||
|
|
||||||
late final _database;
|
late final _database;
|
||||||
|
|
||||||
@override
|
@override Future<void> init() async {
|
||||||
Future<void> init() async {
|
|
||||||
_database = await openDatabase(
|
_database = await openDatabase(
|
||||||
join(await getDatabasesPath(), _dbName),
|
join(await getDatabasesPath(), _dbName),
|
||||||
version: _dbVersion,
|
version: _dbVersion,
|
||||||
|
@ -23,30 +23,15 @@ class SQLiteStorage extends ChangeNotifier implements BaseStorage {
|
||||||
onUpgrade: _onUpdate,
|
onUpgrade: _onUpdate,
|
||||||
onDowngrade: _onDowngrade,
|
onDowngrade: _onDowngrade,
|
||||||
);
|
);
|
||||||
|
// await _onInitLocalVariables(_database);
|
||||||
await _onInitLocalVariables(_database);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_onCreate(Database database, int version) async {
|
_onCreate(Database database, int version) async {
|
||||||
await database.execute(_tableKeychain);
|
await database.execute(_tableKeychain);
|
||||||
}
|
}
|
||||||
|
|
||||||
_onUpdate(Database database, int oldVersion, int newVersion) async {}
|
_onUpdate(Database database, int oldVersion, int newVersion) async {}
|
||||||
|
|
||||||
_onDowngrade(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 => '''
|
String get _tableKeychain => '''
|
||||||
CREATE TABLE keychain (
|
CREATE TABLE keychain (
|
||||||
|
@ -81,22 +66,18 @@ class SQLiteStorage extends ChangeNotifier implements BaseStorage {
|
||||||
{'key': SQLiteStorageKey.petAmount.value, 'value': '', 'type': 'local'},
|
{'key': SQLiteStorageKey.petAmount.value, 'value': '', 'type': 'local'},
|
||||||
];
|
];
|
||||||
|
|
||||||
@override
|
@override Future<String?> get(String key) async {
|
||||||
Future<String?> get(String key) async {
|
|
||||||
var response = await _database.query('keychain', where: 'key = ?', whereArgs: [key]);
|
var response = await _database.query('keychain', where: 'key = ?', whereArgs: [key]);
|
||||||
|
|
||||||
if (response.isEmpty) {
|
if (response.isEmpty) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return response.first['value'];
|
return response.first['value'];
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override Future<void> set(String key, String value) async {
|
||||||
Future<void> set(String key, String value) async {
|
|
||||||
var date = DateTime.now().toIso8601String();
|
var date = DateTime.now().toIso8601String();
|
||||||
await _database.insert(
|
await _database.insert(
|
||||||
'keychain',
|
tableKeychain,
|
||||||
{
|
{
|
||||||
'key': key,
|
'key': key,
|
||||||
'value': value,
|
'value': value,
|
||||||
|
@ -105,24 +86,15 @@ class SQLiteStorage extends ChangeNotifier implements BaseStorage {
|
||||||
'resolvedAt': date,
|
'resolvedAt': date,
|
||||||
'createdAt': date,
|
'createdAt': date,
|
||||||
},
|
},
|
||||||
conflictAlgorithm: ConflictAlgorithm.replace);
|
conflictAlgorithm: ConflictAlgorithm.replace
|
||||||
notifyListeners();
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override Future<void> delete(String key) async {
|
||||||
Future<void> delete(String key) async {
|
await _database.delete('keychain', where: 'key = ?', whereArgs: [key]);
|
||||||
var isConfig = await _database.query('keychain', where: 'key = ?', whereArgs: [key]);
|
|
||||||
|
|
||||||
if (isConfig.isNotEmpty) {
|
|
||||||
await _database.delete('keychain', where: 'key = ?', whereArgs: [key]);
|
|
||||||
}
|
|
||||||
|
|
||||||
notifyListeners();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override Future<void> clearAll() async {
|
||||||
Future<void> clearAll() async {
|
|
||||||
await _database.delete('keychain');
|
await _database.delete('keychain');
|
||||||
notifyListeners();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,6 @@ import 'package:hub/shared/helpers/sqlite_storage.dart';
|
||||||
|
|
||||||
|
|
||||||
class StorageHelper {
|
class StorageHelper {
|
||||||
|
|
||||||
|
|
||||||
static final StorageHelper _instance = StorageHelper._internal();
|
static final StorageHelper _instance = StorageHelper._internal();
|
||||||
factory StorageHelper() => _instance;
|
factory StorageHelper() => _instance;
|
||||||
StorageHelper._internal();
|
StorageHelper._internal();
|
||||||
|
|
|
@ -210,16 +210,18 @@ class LocalizationService {
|
||||||
enText: 'Error getting authentication credentials',
|
enText: 'Error getting authentication credentials',
|
||||||
);
|
);
|
||||||
await DialogUtil.error(context, errorMsg);
|
await DialogUtil.error(context, errorMsg);
|
||||||
|
return;
|
||||||
// await DialogUtil.error(context, errorMsg).whenComplete(() async => await AuthenticationService.signOut(context));
|
// await DialogUtil.error(context, errorMsg).whenComplete(() async => await AuthenticationService.signOut(context));
|
||||||
}
|
}
|
||||||
else if (isAuthenticated && !isDevLinked) {
|
if (!isDevLinked) {
|
||||||
errorMsg = FFLocalizations.of(context).getVariableText(
|
errorMsg = FFLocalizations.of(context).getVariableText(
|
||||||
ptText: 'Não foi possível vincular o dispositivo, tente novamente.',
|
ptText: 'Não foi possível vincular o dispositivo, tente novamente.',
|
||||||
enText: 'Unable to link device, try again',
|
enText: 'Unable to link device, try again',
|
||||||
);
|
);
|
||||||
await DialogUtil.warning(context, errorMsg);
|
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));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue