new option: Lock on Startup Only
This commit is contained in:
@@ -41,7 +41,7 @@ final class TabRepositoryProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$tabRepositoryHash() => r'749b131347685933ac36a3afcdd49f7def7155a9';
|
String _$tabRepositoryHash() => r'e80c972b0d1a328c170354c123d2730028a774b2';
|
||||||
|
|
||||||
abstract class _$TabRepository extends $Notifier<void> {
|
abstract class _$TabRepository extends $Notifier<void> {
|
||||||
void build();
|
void build();
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ final class TabDataRepositoryProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$tabDataRepositoryHash() => r'cb923fb0723271cd64d66a720dc3e1aed2d86c71';
|
String _$tabDataRepositoryHash() => r'adc1c664b492e41a96a0310d92252dbbacc1a089';
|
||||||
|
|
||||||
abstract class _$TabDataRepository extends $Notifier<void> {
|
abstract class _$TabDataRepository extends $Notifier<void> {
|
||||||
void build();
|
void build();
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import 'package:json_annotation/json_annotation.dart';
|
|||||||
|
|
||||||
part 'auth_settings.g.dart';
|
part 'auth_settings.g.dart';
|
||||||
|
|
||||||
enum AutoLockMode { background, timeout }
|
enum AutoLockMode { background, timeout, startup }
|
||||||
|
|
||||||
@CopyWith()
|
@CopyWith()
|
||||||
@JsonSerializable()
|
@JsonSerializable()
|
||||||
@@ -56,6 +56,10 @@ class AuthSettings with FastEquatable {
|
|||||||
return copyWith(autoLockMode: AutoLockMode.timeout, timeout: value);
|
return copyWith(autoLockMode: AutoLockMode.timeout, timeout: value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AuthSettings withStartupLock() {
|
||||||
|
return copyWith(autoLockMode: AutoLockMode.startup);
|
||||||
|
}
|
||||||
|
|
||||||
factory AuthSettings.fromJson(Map<String, dynamic> json) =>
|
factory AuthSettings.fromJson(Map<String, dynamic> json) =>
|
||||||
_$AuthSettingsFromJson(json);
|
_$AuthSettingsFromJson(json);
|
||||||
|
|
||||||
|
|||||||
@@ -105,4 +105,5 @@ Map<String, dynamic> _$AuthSettingsToJson(AuthSettings instance) =>
|
|||||||
const _$AutoLockModeEnumMap = {
|
const _$AutoLockModeEnumMap = {
|
||||||
AutoLockMode.background: 'background',
|
AutoLockMode.background: 'background',
|
||||||
AutoLockMode.timeout: 'timeout',
|
AutoLockMode.timeout: 'timeout',
|
||||||
|
AutoLockMode.startup: 'startup',
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ class ProfileEditScreen extends HookConsumerWidget {
|
|||||||
.authenticate(
|
.authenticate(
|
||||||
authKey: profileAccessAuthKey(profile!.id),
|
authKey: profileAccessAuthKey(profile!.id),
|
||||||
localizedReason: 'Require authentication for profile',
|
localizedReason: 'Require authentication for profile',
|
||||||
|
settings: authSettings,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!authResult) {
|
if (!authResult) {
|
||||||
@@ -222,6 +223,14 @@ class _AuthSection extends StatelessWidget {
|
|||||||
title: Text('Lock After Timeout'),
|
title: Text('Lock After Timeout'),
|
||||||
subtitle: Text('Lock after a period of inactivity'),
|
subtitle: Text('Lock after a period of inactivity'),
|
||||||
),
|
),
|
||||||
|
RadioListTile.adaptive(
|
||||||
|
value: AutoLockMode.startup,
|
||||||
|
title: Text('Lock on Startup Only'),
|
||||||
|
subtitle: Text(
|
||||||
|
'Unlock once when the app starts; stay unlocked '
|
||||||
|
'until the app is fully closed',
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -46,6 +46,8 @@ class LocalAuthenticationService extends _$LocalAuthenticationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Background mode cache stays valid until app background eviction.
|
// Background mode cache stays valid until app background eviction.
|
||||||
|
// Startup mode cache is never evicted, so it stays valid for the whole
|
||||||
|
// process lifetime.
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user