From 4d8433808693322307b32bb85acb50e3c2e6925c Mon Sep 17 00:00:00 2001 From: Sudheer Reddy Puthana Date: Thu, 4 Sep 2025 09:50:38 -0400 Subject: [PATCH] fix(mobile): readonly mode fixes (#21545) * fix: Enables videotimeline in readonly mode - Enables only the video controls in the bottom bar when readonlyMode is enabled. - Fixes the message on the app profile bar when readOnlyMode is enabled **but** betaTimeline is not enabled. Fixes https://github.com/immich-app/immich/issues/21441 Signed-off-by: Sudheer Puthana * cleanup bottom bar handling --------- Signed-off-by: Sudheer Puthana Co-authored-by: bwees --- .../widgets/asset_viewer/bottom_bar.widget.dart | 8 ++++---- .../lib/widgets/common/app_bar_dialog/app_bar_dialog.dart | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/mobile/lib/presentation/widgets/asset_viewer/bottom_bar.widget.dart b/mobile/lib/presentation/widgets/asset_viewer/bottom_bar.widget.dart index e581e32df0..3111512823 100644 --- a/mobile/lib/presentation/widgets/asset_viewer/bottom_bar.widget.dart +++ b/mobile/lib/presentation/widgets/asset_viewer/bottom_bar.widget.dart @@ -62,7 +62,7 @@ class ViewerBottomBar extends ConsumerWidget { duration: Durations.short2, child: AnimatedSwitcher( duration: Durations.short4, - child: isSheetOpen || isReadonlyModeEnabled + child: isSheetOpen ? const SizedBox.shrink() : Theme( data: context.themeData.copyWith( @@ -72,14 +72,14 @@ class ViewerBottomBar extends ConsumerWidget { ), ), child: Container( - height: context.padding.bottom + (asset.isVideo ? 160 : 90), color: Colors.black.withAlpha(125), - padding: EdgeInsets.only(bottom: context.padding.bottom), + padding: EdgeInsets.only(bottom: context.padding.bottom, top: 16), child: Column( mainAxisAlignment: MainAxisAlignment.end, children: [ if (asset.isVideo) const VideoControls(), - if (!isInLockedView) Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: actions), + if (!isInLockedView && !isReadonlyModeEnabled) + Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: actions), ], ), ), diff --git a/mobile/lib/widgets/common/app_bar_dialog/app_bar_dialog.dart b/mobile/lib/widgets/common/app_bar_dialog/app_bar_dialog.dart index b204058859..e504cf0675 100644 --- a/mobile/lib/widgets/common/app_bar_dialog/app_bar_dialog.dart +++ b/mobile/lib/widgets/common/app_bar_dialog/app_bar_dialog.dart @@ -1,7 +1,8 @@ import 'package:auto_route/auto_route.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:flutter_hooks/flutter_hooks.dart' hide Store; +import 'package:immich_mobile/entities/store.entity.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/models/backup/backup_state.model.dart'; @@ -259,7 +260,7 @@ class ImmichAppBarDialog extends HookConsumerWidget { const AppBarProfileInfoBox(), buildStorageInformation(), const AppBarServerInfo(), - if (isReadonlyModeEnabled) buildReadonlyMessage(), + if (Store.isBetaTimelineEnabled && isReadonlyModeEnabled) buildReadonlyMessage(), buildAppLogButton(), buildSettingButton(), buildSignOutButton(),