mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-11-26 06:49:22 +00:00
Load configuration at application startup
This commit is contained in:
parent
459757b292
commit
613ceadfaa
@ -5,7 +5,6 @@ import 'package:comunic/models/api_request.dart';
|
|||||||
import 'package:comunic/models/authentication_details.dart';
|
import 'package:comunic/models/authentication_details.dart';
|
||||||
import 'package:comunic/models/new_account.dart';
|
import 'package:comunic/models/new_account.dart';
|
||||||
import 'package:comunic/models/res_check_password_reset_token.dart';
|
import 'package:comunic/models/res_check_password_reset_token.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
|
||||||
|
|
||||||
/// Account helper
|
/// Account helper
|
||||||
///
|
///
|
||||||
@ -26,8 +25,6 @@ enum CreateAccountResult {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class AccountHelper {
|
class AccountHelper {
|
||||||
static const _USER_ID_PREFERENCE_NAME = "user_id";
|
|
||||||
|
|
||||||
// Current user ID
|
// Current user ID
|
||||||
static int _currentUserID = -1;
|
static int _currentUserID = -1;
|
||||||
|
|
||||||
@ -71,8 +68,8 @@ class AccountHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Save current user ID
|
// Save current user ID
|
||||||
final preferences = await SharedPreferences.getInstance();
|
final preferences = await PreferencesHelper.getInstance();
|
||||||
await preferences.setInt(_USER_ID_PREFERENCE_NAME, userID);
|
await preferences.setInt(PreferencesKeyList.USER_ID, userID);
|
||||||
_currentUserID = userID;
|
_currentUserID = userID;
|
||||||
|
|
||||||
return AuthResult.SUCCESS;
|
return AuthResult.SUCCESS;
|
||||||
@ -82,7 +79,9 @@ class AccountHelper {
|
|||||||
Future<void> signOut() async {
|
Future<void> signOut() async {
|
||||||
await APIRequest.withLogin("account/logout").exec();
|
await APIRequest.withLogin("account/logout").exec();
|
||||||
|
|
||||||
await (await PreferencesHelper.getInstance()).setLoginToken(null);
|
final preferencesHelper = await PreferencesHelper.getInstance();
|
||||||
|
await preferencesHelper.setLoginToken(null);
|
||||||
|
await preferencesHelper.setInt(PreferencesKeyList.USER_ID, -1);
|
||||||
_currentUserID = 0;
|
_currentUserID = 0;
|
||||||
|
|
||||||
// Close current web socket
|
// Close current web socket
|
||||||
@ -202,8 +201,8 @@ class AccountHelper {
|
|||||||
|
|
||||||
/// Get the ID of the currently signed in user
|
/// Get the ID of the currently signed in user
|
||||||
Future<void> _loadCurrentUserID() async {
|
Future<void> _loadCurrentUserID() async {
|
||||||
final preferences = await SharedPreferences.getInstance();
|
final preferences = await PreferencesHelper.getInstance();
|
||||||
_currentUserID = preferences.getInt(_USER_ID_PREFERENCE_NAME);
|
_currentUserID = preferences.getInt(PreferencesKeyList.USER_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Check if current user ID is loaded or not
|
/// Check if current user ID is loaded or not
|
||||||
|
@ -8,6 +8,7 @@ import 'package:shared_preferences/shared_preferences.dart';
|
|||||||
/// @author Pierre HUBERT
|
/// @author Pierre HUBERT
|
||||||
|
|
||||||
enum PreferencesKeyList {
|
enum PreferencesKeyList {
|
||||||
|
USER_ID,
|
||||||
LOGIN_TOKEN,
|
LOGIN_TOKEN,
|
||||||
ENABLE_DARK_THEME,
|
ENABLE_DARK_THEME,
|
||||||
FORCE_MOBILE_MODE,
|
FORCE_MOBILE_MODE,
|
||||||
@ -15,6 +16,7 @@ enum PreferencesKeyList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const _PreferenceKeysName = {
|
const _PreferenceKeysName = {
|
||||||
|
PreferencesKeyList.USER_ID: "user_id",
|
||||||
PreferencesKeyList.LOGIN_TOKEN: "login_token",
|
PreferencesKeyList.LOGIN_TOKEN: "login_token",
|
||||||
PreferencesKeyList.ENABLE_DARK_THEME: "dark_theme",
|
PreferencesKeyList.ENABLE_DARK_THEME: "dark_theme",
|
||||||
PreferencesKeyList.FORCE_MOBILE_MODE: "force_mobile_mode",
|
PreferencesKeyList.FORCE_MOBILE_MODE: "force_mobile_mode",
|
||||||
@ -76,6 +78,14 @@ class PreferencesHelper {
|
|||||||
return await _sharedPreferences.setBool(_PreferenceKeysName[key], value);
|
return await _sharedPreferences.setBool(_PreferenceKeysName[key], value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<bool> setInt(PreferencesKeyList key, int value) async {
|
||||||
|
return await _sharedPreferences.setInt(_PreferenceKeysName[key], value);
|
||||||
|
}
|
||||||
|
|
||||||
|
int getInt(PreferencesKeyList key) {
|
||||||
|
return _sharedPreferences.getInt(_PreferenceKeysName[key]);
|
||||||
|
}
|
||||||
|
|
||||||
bool getBool(PreferencesKeyList key, {bool alternative = false}) {
|
bool getBool(PreferencesKeyList key, {bool alternative = false}) {
|
||||||
final v = _sharedPreferences.getBool(_PreferenceKeysName[key]);
|
final v = _sharedPreferences.getBool(_PreferenceKeysName[key]);
|
||||||
return v == null ? alternative : v;
|
return v == null ? alternative : v;
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import 'package:comunic/helpers/account_helper.dart';
|
import 'package:comunic/helpers/account_helper.dart';
|
||||||
import 'package:comunic/helpers/database/database_helper.dart';
|
import 'package:comunic/helpers/database/database_helper.dart';
|
||||||
import 'package:comunic/helpers/preferences_helper.dart';
|
import 'package:comunic/helpers/preferences_helper.dart';
|
||||||
import 'package:comunic/ui/routes/login_route.dart';
|
|
||||||
import 'package:comunic/ui/widgets/init_widget.dart';
|
import 'package:comunic/ui/widgets/init_widget.dart';
|
||||||
import 'package:comunic/utils/intl_utils.dart';
|
import 'package:comunic/utils/intl_utils.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@ -51,7 +50,7 @@ class ComunicApplicationState extends State<ComunicApplication> {
|
|||||||
|
|
||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
debugShowCheckedModeBanner: false,
|
debugShowCheckedModeBanner: false,
|
||||||
home: AccountHelper.isUserIDLoaded ? InitializeWidget() : LoginRoute(),
|
home: InitializeWidget(),
|
||||||
theme: prefs.enableDarkMode ? ThemeData.dark() : null,
|
theme: prefs.enableDarkMode ? ThemeData.dark() : null,
|
||||||
showPerformanceOverlay: prefs.showPerformancesOverlay,
|
showPerformanceOverlay: prefs.showPerformancesOverlay,
|
||||||
);
|
);
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import 'package:comunic/helpers/account_helper.dart';
|
import 'package:comunic/helpers/account_helper.dart';
|
||||||
import 'package:comunic/ui/routes/conversation_route.dart';
|
import 'package:comunic/ui/routes/conversation_route.dart';
|
||||||
import 'package:comunic/ui/routes/login_route.dart';
|
|
||||||
import 'package:comunic/ui/routes/main_route/page_info.dart';
|
import 'package:comunic/ui/routes/main_route/page_info.dart';
|
||||||
import 'package:comunic/ui/routes/settings/account_settings_route.dart';
|
import 'package:comunic/ui/routes/settings/account_settings_route.dart';
|
||||||
import 'package:comunic/ui/screens/call_screen.dart';
|
import 'package:comunic/ui/screens/call_screen.dart';
|
||||||
@ -170,10 +169,6 @@ abstract class MainController extends State<MainRoute> {
|
|||||||
popUntilMainRoute();
|
popUntilMainRoute();
|
||||||
|
|
||||||
await AccountHelper().signOut();
|
await AccountHelper().signOut();
|
||||||
|
|
||||||
Navigator.pushReplacement(context, MaterialPageRoute(builder: (c) {
|
|
||||||
return LoginRoute();
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Pop current page. Last page can not be popped
|
/// Pop current page. Last page can not be popped
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
|
import 'package:comunic/helpers/account_helper.dart';
|
||||||
import 'package:comunic/helpers/events_helper.dart';
|
import 'package:comunic/helpers/events_helper.dart';
|
||||||
|
import 'package:comunic/helpers/server_config_helper.dart';
|
||||||
import 'package:comunic/helpers/websocket_helper.dart';
|
import 'package:comunic/helpers/websocket_helper.dart';
|
||||||
import 'package:comunic/ui/routes/login_route.dart';
|
import 'package:comunic/ui/routes/login_route.dart';
|
||||||
import 'package:comunic/ui/routes/main_route/main_route.dart';
|
import 'package:comunic/ui/routes/main_route/main_route.dart';
|
||||||
@ -57,6 +59,14 @@ class _InitializeWidgetState extends SafeState<InitializeWidget> {
|
|||||||
/// Try to connect to server
|
/// Try to connect to server
|
||||||
void _tryConnect() async {
|
void _tryConnect() async {
|
||||||
try {
|
try {
|
||||||
|
await ServerConfigurationHelper.ensureLoaded();
|
||||||
|
|
||||||
|
if (!AccountHelper.isUserIDLoaded) {
|
||||||
|
_popToMainRoute();
|
||||||
|
_openLoginPage();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
print("Attempting WebSocket connection...");
|
print("Attempting WebSocket connection...");
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
|
Loading…
Reference in New Issue
Block a user