Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -38,18 +38,19 @@ class _AuthenticationSettingsScreenState extends State<AuthenticationSettingsScr
bool _isDeviceAuthEnabled = false;
bool _isLoading = true;
String _biometricDescription = 'Use Device Authentication';
int _authTimeout = 0;
late int _authTimeout;

@override
void initState() {
super.initState();
_authTimeout = _localAuthService.getAuthTimeoutMinutes();
_loadAuthenticationSettings();
}

Future<void> _loadAuthenticationSettings() async {
try {
final isEnabled = _localAuthService.isLocalAuthEnabled();
final authTimeout = _localAuthService.getAuthTimeout();
final authTimeout = _localAuthService.getAuthTimeoutMinutes();
final isAvailable = await _localAuthService.isBiometricAvailable();
final description = await _localAuthService.getBiometricDescription();

Expand Down Expand Up @@ -143,7 +144,7 @@ class _AuthenticationSettingsScreenState extends State<AuthenticationSettingsScr
}

void _setAuthTimeout(int timeoutDurationInMinutes) {
_localAuthService.setAuthTimeout(timeoutDurationInMinutes);
_localAuthService.setAuthTimeoutMinutes(timeoutDurationInMinutes);
setState(() {
_authTimeout = timeoutDurationInMinutes;
});
Expand Down
12 changes: 7 additions & 5 deletions mobile-app/lib/services/local_auth_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,11 @@ class LocalAuthService {
_settingsService.setAuthEnabled(enabled);
}

int getAuthTimeout() {
return _settingsService.getAuthTimeout() ?? 0;
int getAuthTimeoutMinutes() {
return _settingsService.getAuthTimeout() ?? 1;
}

void setAuthTimeout(int timeoutDurationInMinutes) {
void setAuthTimeoutMinutes(int timeoutDurationInMinutes) {
return _settingsService.setAuthTimeout(timeoutDurationInMinutes);
}

Expand Down Expand Up @@ -175,9 +175,10 @@ class LocalAuthService {
if (!isEnabled) return false;

final DateTime? lastAuthTime = _settingsService.getLastSuccessfulAuthTime();

if (lastAuthTime == null) return true;

final int timeoutDurationInMinutes = _settingsService.getAuthTimeout() ?? 5;
final int timeoutDurationInMinutes = getAuthTimeoutMinutes();

final Duration authTimeout = Duration(minutes: timeoutDurationInMinutes);

Expand All @@ -186,7 +187,8 @@ class LocalAuthService {
'auth time difference: ${DateTime.now().difference(lastAuthTime).inSeconds}',
);

return DateTime.now().difference(lastAuthTime) > authTimeout;
final isTimeout = DateTime.now().difference(lastAuthTime) > authTimeout;
return isTimeout;
} catch (e) {
debugPrint('Error checking if authentication is required: $e');
return true; // Err on the side of caution
Expand Down
2 changes: 2 additions & 0 deletions quantus_sdk/lib/src/services/settings_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -225,13 +225,15 @@ class SettingsService {
_prefs.setString(_lastSuccessfulAuthKey, time.toIso8601String());
}

/// Do not call this directly - call local auth service getAuthTimeoutMinutes() instead.
int? getAuthTimeout() {
final int? authTimeout = _prefs.getInt(_authTimeoutKey);
if (authTimeout == null) return null;

return authTimeout;
}

/// Do not call this directly - call local auth service setAuthTimeoutMinutes() instead.
void setAuthTimeout(int timeoutDurationInMinutes) {
_prefs.setInt(_authTimeoutKey, timeoutDurationInMinutes);
}
Expand Down