diff --git a/mobile/lib/main.dart b/mobile/lib/main.dart index 459a6d041e..b3181f923c 100644 --- a/mobile/lib/main.dart +++ b/mobile/lib/main.dart @@ -112,7 +112,8 @@ Future _runInForeground(AdaptiveThemeMode? savedThemeMode) async { builder: (args) => EnteApp(_runBackgroundTask, _killBGTask, locale, savedThemeMode), lockScreen: const LockScreen(), - enabled: await Configuration.instance.shouldShowLockScreen(), + enabled: await Configuration.instance.shouldShowLockScreen() || + localSettings.isOnGuestView(), locale: locale, lightTheme: lightThemeData, darkTheme: darkThemeData, diff --git a/mobile/lib/ui/tools/lock_screen.dart b/mobile/lib/ui/tools/lock_screen.dart index 98d02fb6d1..516ac92319 100644 --- a/mobile/lib/ui/tools/lock_screen.dart +++ b/mobile/lib/ui/tools/lock_screen.dart @@ -9,6 +9,7 @@ import 'package:logging/logging.dart'; import "package:photos/core/configuration.dart"; import "package:photos/generated/l10n.dart"; import "package:photos/l10n/l10n.dart"; +import "package:photos/service_locator.dart"; import "package:photos/services/user_service.dart"; import "package:photos/theme/ente_theme.dart"; import "package:photos/ui/components/buttons/icon_button_widget.dart"; @@ -346,6 +347,7 @@ class _LockScreenState extends State lockedTimeInSeconds = 15; isTimerRunning = false; }); + await localSettings.setOnGuestView(false); } else { if (!_hasPlacedAppInBackground) { if (_lockscreenSetting.getInvalidAttemptCount() > 4 && diff --git a/mobile/lib/ui/viewer/actions/file_selection_actions_widget.dart b/mobile/lib/ui/viewer/actions/file_selection_actions_widget.dart index 50c6306322..d3ef8bc524 100644 --- a/mobile/lib/ui/viewer/actions/file_selection_actions_widget.dart +++ b/mobile/lib/ui/viewer/actions/file_selection_actions_widget.dart @@ -21,6 +21,7 @@ import 'package:photos/models/gallery_type.dart'; import "package:photos/models/metadata/common_keys.dart"; import "package:photos/models/ml/face/person.dart"; import 'package:photos/models/selected_files.dart'; +import "package:photos/service_locator.dart"; import 'package:photos/services/collections_service.dart'; import 'package:photos/services/hidden_service.dart'; import 'package:photos/services/machine_learning/face_ml/feedback/cluster_feedback.dart'; @@ -581,6 +582,7 @@ class _FileSelectionActionsWidgetState "guest_view", ), ); + await localSettings.setOnGuestView(true); routeToPage(context, page, forceCustomPageRoute: true).ignore(); WidgetsBinding.instance.addPostFrameCallback((_) { Bus.instance.fire(GuestViewEvent(true, false)); diff --git a/mobile/lib/ui/viewer/file/detail_page.dart b/mobile/lib/ui/viewer/file/detail_page.dart index 24dd9c0499..9f46cb3df4 100644 --- a/mobile/lib/ui/viewer/file/detail_page.dart +++ b/mobile/lib/ui/viewer/file/detail_page.dart @@ -15,6 +15,7 @@ import "package:photos/generated/l10n.dart"; import "package:photos/models/file/extensions/file_props.dart"; import 'package:photos/models/file/file.dart'; import "package:photos/models/file/file_type.dart"; +import "package:photos/service_locator.dart"; import "package:photos/services/local_authentication_service.dart"; import "package:photos/ui/common/fast_scroll_physics.dart"; import 'package:photos/ui/tools/editor/image_editor_page.dart'; @@ -156,6 +157,7 @@ class _DetailPageState extends State { final authenticated = await _requestAuthentication(); if (authenticated) { Bus.instance.fire(GuestViewEvent(false, false)); + await localSettings.setOnGuestView(false); } } }, diff --git a/mobile/lib/ui/viewer/file/file_app_bar.dart b/mobile/lib/ui/viewer/file/file_app_bar.dart index 67b10bb9ad..37b79cbd68 100644 --- a/mobile/lib/ui/viewer/file/file_app_bar.dart +++ b/mobile/lib/ui/viewer/file/file_app_bar.dart @@ -475,6 +475,7 @@ class FileAppBarState extends State { Future _onTapGuestView() async { if (await LocalAuthentication().isDeviceSupported()) { Bus.instance.fire(GuestViewEvent(true, true)); + await localSettings.setOnGuestView(true); } else { await showErrorDialog( context, @@ -492,6 +493,7 @@ class FileAppBarState extends State { ); if (hasAuthenticated) { Bus.instance.fire(GuestViewEvent(false, false)); + await localSettings.setOnGuestView(false); } } } diff --git a/mobile/lib/utils/local_settings.dart b/mobile/lib/utils/local_settings.dart index cc657c369e..1ea9c4af95 100644 --- a/mobile/lib/utils/local_settings.dart +++ b/mobile/lib/utils/local_settings.dart @@ -15,6 +15,7 @@ class LocalSettings { static const kEnableMultiplePart = "ls.enable_multiple_part"; static const kRateUsPromptThreshold = 2; static const shouldLoopVideoKey = "video.should_loop"; + static const onGuestViewKey = "on_guest_view"; final SharedPreferences _prefs; @@ -91,4 +92,12 @@ class LocalSettings { bool shouldLoopVideo() { return _prefs.getBool(shouldLoopVideoKey) ?? true; } + + Future setOnGuestView(bool value) { + return _prefs.setBool(onGuestViewKey, value); + } + + bool isOnGuestView() { + return _prefs.getBool(onGuestViewKey) ?? false; + } }