|
|
|
@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
|
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
|
|
import 'package:immich_mobile/constants/enums.dart';
|
|
|
|
import 'package:immich_mobile/constants/enums.dart';
|
|
|
|
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
|
|
|
|
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
|
|
|
|
|
|
|
|
import 'package:immich_mobile/domain/models/timeline.model.dart';
|
|
|
|
import 'package:immich_mobile/domain/utils/event_stream.dart';
|
|
|
|
import 'package:immich_mobile/domain/utils/event_stream.dart';
|
|
|
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
|
|
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
|
|
|
import 'package:immich_mobile/presentation/widgets/action_buttons/cast_action_button.widget.dart';
|
|
|
|
import 'package:immich_mobile/presentation/widgets/action_buttons/cast_action_button.widget.dart';
|
|
|
|
@ -15,6 +16,7 @@ import 'package:immich_mobile/providers/infrastructure/asset_viewer/current_asse
|
|
|
|
import 'package:immich_mobile/providers/routes.provider.dart';
|
|
|
|
import 'package:immich_mobile/providers/routes.provider.dart';
|
|
|
|
import 'package:immich_mobile/providers/user.provider.dart';
|
|
|
|
import 'package:immich_mobile/providers/user.provider.dart';
|
|
|
|
import 'package:immich_mobile/providers/websocket.provider.dart';
|
|
|
|
import 'package:immich_mobile/providers/websocket.provider.dart';
|
|
|
|
|
|
|
|
import 'package:immich_mobile/routing/router.dart';
|
|
|
|
|
|
|
|
|
|
|
|
class ViewerTopAppBar extends ConsumerWidget implements PreferredSizeWidget {
|
|
|
|
class ViewerTopAppBar extends ConsumerWidget implements PreferredSizeWidget {
|
|
|
|
const ViewerTopAppBar({super.key});
|
|
|
|
const ViewerTopAppBar({super.key});
|
|
|
|
@ -30,6 +32,9 @@ class ViewerTopAppBar extends ConsumerWidget implements PreferredSizeWidget {
|
|
|
|
final isOwner = asset is RemoteAsset && asset.ownerId == user?.id;
|
|
|
|
final isOwner = asset is RemoteAsset && asset.ownerId == user?.id;
|
|
|
|
final isInLockedView = ref.watch(inLockedViewProvider);
|
|
|
|
final isInLockedView = ref.watch(inLockedViewProvider);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final previousRouteName = ref.watch(previousRouteNameProvider);
|
|
|
|
|
|
|
|
final showViewInTimelineButton = previousRouteName != TabShellRoute.name && previousRouteName != null;
|
|
|
|
|
|
|
|
|
|
|
|
final isShowingSheet = ref.watch(assetViewerProvider.select((state) => state.showingBottomSheet));
|
|
|
|
final isShowingSheet = ref.watch(assetViewerProvider.select((state) => state.showingBottomSheet));
|
|
|
|
int opacity = ref.watch(
|
|
|
|
int opacity = ref.watch(
|
|
|
|
assetViewerProvider.select((state) => state.backgroundOpacity),
|
|
|
|
assetViewerProvider.select((state) => state.backgroundOpacity),
|
|
|
|
@ -50,6 +55,16 @@ class ViewerTopAppBar extends ConsumerWidget implements PreferredSizeWidget {
|
|
|
|
const CastActionButton(
|
|
|
|
const CastActionButton(
|
|
|
|
menuItem: true,
|
|
|
|
menuItem: true,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
|
|
|
|
if (showViewInTimelineButton)
|
|
|
|
|
|
|
|
IconButton(
|
|
|
|
|
|
|
|
onPressed: () async {
|
|
|
|
|
|
|
|
await context.maybePop();
|
|
|
|
|
|
|
|
await context.navigateTo(const TabShellRoute(children: [MainTimelineRoute()]));
|
|
|
|
|
|
|
|
EventStream.shared.emit(ScrollToDateEvent(asset.createdAt));
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
icon: const Icon(Icons.image_search),
|
|
|
|
|
|
|
|
tooltip: 'view_in_timeline',
|
|
|
|
|
|
|
|
),
|
|
|
|
if (asset.hasRemote && isOwner && !asset.isFavorite)
|
|
|
|
if (asset.hasRemote && isOwner && !asset.isFavorite)
|
|
|
|
const FavoriteActionButton(source: ActionSource.viewer, menuItem: true),
|
|
|
|
const FavoriteActionButton(source: ActionSource.viewer, menuItem: true),
|
|
|
|
if (asset.hasRemote && isOwner && asset.isFavorite)
|
|
|
|
if (asset.hasRemote && isOwner && asset.isFavorite)
|
|
|
|
|