mirror of
https://github.com/immich-app/immich
synced 2025-10-17 18:19:27 +00:00
chore: realized I could just pull from the timelineProvider instead of storing it in the asset viewer state
This commit is contained in:
parent
268867353b
commit
b397538478
5 changed files with 7 additions and 21 deletions
|
|
@ -61,9 +61,8 @@ class AssetViewer extends ConsumerStatefulWidget {
|
||||||
@override
|
@override
|
||||||
ConsumerState createState() => _AssetViewerState();
|
ConsumerState createState() => _AssetViewerState();
|
||||||
|
|
||||||
static void setAsset(WidgetRef ref, BaseAsset asset, TimelineType timelineType) {
|
static void setAsset(WidgetRef ref, BaseAsset asset) {
|
||||||
ref.read(assetViewerProvider.notifier).reset();
|
ref.read(assetViewerProvider.notifier).reset();
|
||||||
ref.read(assetViewerProvider.notifier).setTimelineType(timelineType);
|
|
||||||
_setAsset(ref, asset);
|
_setAsset(ref, asset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
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/services/timeline.service.dart';
|
|
||||||
import 'package:immich_mobile/domain/utils/event_stream.dart';
|
import 'package:immich_mobile/domain/utils/event_stream.dart';
|
||||||
import 'package:immich_mobile/providers/asset_viewer/video_player_controls_provider.dart';
|
import 'package:immich_mobile/providers/asset_viewer/video_player_controls_provider.dart';
|
||||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||||
|
|
@ -18,7 +17,6 @@ class AssetViewerState {
|
||||||
final bool showingControls;
|
final bool showingControls;
|
||||||
final BaseAsset? currentAsset;
|
final BaseAsset? currentAsset;
|
||||||
final int stackIndex;
|
final int stackIndex;
|
||||||
final TimelineType timelineType;
|
|
||||||
|
|
||||||
const AssetViewerState({
|
const AssetViewerState({
|
||||||
this.backgroundOpacity = 255,
|
this.backgroundOpacity = 255,
|
||||||
|
|
@ -26,7 +24,6 @@ class AssetViewerState {
|
||||||
this.showingControls = true,
|
this.showingControls = true,
|
||||||
this.currentAsset,
|
this.currentAsset,
|
||||||
this.stackIndex = 0,
|
this.stackIndex = 0,
|
||||||
this.timelineType = TimelineType.main,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
AssetViewerState copyWith({
|
AssetViewerState copyWith({
|
||||||
|
|
@ -35,7 +32,6 @@ class AssetViewerState {
|
||||||
bool? showingControls,
|
bool? showingControls,
|
||||||
BaseAsset? currentAsset,
|
BaseAsset? currentAsset,
|
||||||
int? stackIndex,
|
int? stackIndex,
|
||||||
TimelineType? timelineType,
|
|
||||||
}) {
|
}) {
|
||||||
return AssetViewerState(
|
return AssetViewerState(
|
||||||
backgroundOpacity: backgroundOpacity ?? this.backgroundOpacity,
|
backgroundOpacity: backgroundOpacity ?? this.backgroundOpacity,
|
||||||
|
|
@ -43,7 +39,6 @@ class AssetViewerState {
|
||||||
showingControls: showingControls ?? this.showingControls,
|
showingControls: showingControls ?? this.showingControls,
|
||||||
currentAsset: currentAsset ?? this.currentAsset,
|
currentAsset: currentAsset ?? this.currentAsset,
|
||||||
stackIndex: stackIndex ?? this.stackIndex,
|
stackIndex: stackIndex ?? this.stackIndex,
|
||||||
timelineType: timelineType ?? this.timelineType,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -124,13 +119,6 @@ class AssetViewerStateNotifier extends Notifier<AssetViewerState> {
|
||||||
}
|
}
|
||||||
state = state.copyWith(stackIndex: index);
|
state = state.copyWith(stackIndex: index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setTimelineType(TimelineType type) {
|
|
||||||
if (type == state.timelineType) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
state = state.copyWith(timelineType: type);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final assetViewerProvider = NotifierProvider<AssetViewerStateNotifier, AssetViewerState>(AssetViewerStateNotifier.new);
|
final assetViewerProvider = NotifierProvider<AssetViewerStateNotifier, AssetViewerState>(AssetViewerStateNotifier.new);
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import 'package:immich_mobile/providers/cast.provider.dart';
|
||||||
import 'package:immich_mobile/providers/infrastructure/asset_viewer/current_asset.provider.dart';
|
import 'package:immich_mobile/providers/infrastructure/asset_viewer/current_asset.provider.dart';
|
||||||
import 'package:immich_mobile/providers/infrastructure/current_album.provider.dart';
|
import 'package:immich_mobile/providers/infrastructure/current_album.provider.dart';
|
||||||
import 'package:immich_mobile/providers/infrastructure/readonly_mode.provider.dart';
|
import 'package:immich_mobile/providers/infrastructure/readonly_mode.provider.dart';
|
||||||
|
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
|
||||||
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/routing/router.dart';
|
import 'package:immich_mobile/routing/router.dart';
|
||||||
|
|
@ -39,7 +40,7 @@ class ViewerTopAppBar extends ConsumerWidget implements PreferredSizeWidget {
|
||||||
final isInLockedView = ref.watch(inLockedViewProvider);
|
final isInLockedView = ref.watch(inLockedViewProvider);
|
||||||
final isReadonlyModeEnabled = ref.watch(readonlyModeProvider);
|
final isReadonlyModeEnabled = ref.watch(readonlyModeProvider);
|
||||||
|
|
||||||
final timelineType = ref.read(assetViewerProvider).timelineType;
|
final timelineType = ref.read(timelineServiceProvider).type;
|
||||||
final showViewInTimelineButton =
|
final showViewInTimelineButton =
|
||||||
timelineType != TimelineType.main &&
|
timelineType != TimelineType.main &&
|
||||||
timelineType != TimelineType.deepLink &&
|
timelineType != TimelineType.deepLink &&
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@ import 'package:immich_mobile/presentation/widgets/timeline/timeline.state.dart'
|
||||||
import 'package:immich_mobile/presentation/widgets/timeline/timeline_drag_region.dart';
|
import 'package:immich_mobile/presentation/widgets/timeline/timeline_drag_region.dart';
|
||||||
import 'package:immich_mobile/providers/asset_viewer/is_motion_video_playing.provider.dart';
|
import 'package:immich_mobile/providers/asset_viewer/is_motion_video_playing.provider.dart';
|
||||||
import 'package:immich_mobile/providers/haptic_feedback.provider.dart';
|
import 'package:immich_mobile/providers/haptic_feedback.provider.dart';
|
||||||
import 'package:immich_mobile/providers/infrastructure/readonly_mode.provider.dart';
|
|
||||||
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
|
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
|
||||||
|
import 'package:immich_mobile/providers/infrastructure/readonly_mode.provider.dart';
|
||||||
import 'package:immich_mobile/providers/timeline/multiselect.provider.dart';
|
import 'package:immich_mobile/providers/timeline/multiselect.provider.dart';
|
||||||
import 'package:immich_mobile/routing/router.dart';
|
import 'package:immich_mobile/routing/router.dart';
|
||||||
|
|
||||||
|
|
@ -134,7 +134,6 @@ class _FixedSegmentRow extends ConsumerWidget {
|
||||||
key: ValueKey(Object.hash(assets[i].heroTag, assetIndex + i, timelineService.hashCode)),
|
key: ValueKey(Object.hash(assets[i].heroTag, assetIndex + i, timelineService.hashCode)),
|
||||||
asset: assets[i],
|
asset: assets[i],
|
||||||
assetIndex: assetIndex + i,
|
assetIndex: assetIndex + i,
|
||||||
timelineType: timelineService.type,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
@ -145,9 +144,8 @@ class _FixedSegmentRow extends ConsumerWidget {
|
||||||
class _AssetTileWidget extends ConsumerWidget {
|
class _AssetTileWidget extends ConsumerWidget {
|
||||||
final BaseAsset asset;
|
final BaseAsset asset;
|
||||||
final int assetIndex;
|
final int assetIndex;
|
||||||
final TimelineType timelineType;
|
|
||||||
|
|
||||||
const _AssetTileWidget({super.key, required this.asset, required this.assetIndex, required this.timelineType});
|
const _AssetTileWidget({super.key, required this.asset, required this.assetIndex});
|
||||||
|
|
||||||
Future _handleOnTap(BuildContext ctx, WidgetRef ref, int assetIndex, BaseAsset asset, int? heroOffset) async {
|
Future _handleOnTap(BuildContext ctx, WidgetRef ref, int assetIndex, BaseAsset asset, int? heroOffset) async {
|
||||||
final multiSelectState = ref.read(multiSelectProvider);
|
final multiSelectState = ref.read(multiSelectProvider);
|
||||||
|
|
@ -157,7 +155,7 @@ class _AssetTileWidget extends ConsumerWidget {
|
||||||
} else {
|
} else {
|
||||||
await ref.read(timelineServiceProvider).loadAssets(assetIndex, 1);
|
await ref.read(timelineServiceProvider).loadAssets(assetIndex, 1);
|
||||||
ref.read(isPlayingMotionVideoProvider.notifier).playing = false;
|
ref.read(isPlayingMotionVideoProvider.notifier).playing = false;
|
||||||
AssetViewer.setAsset(ref, asset, timelineType);
|
AssetViewer.setAsset(ref, asset);
|
||||||
ctx.pushRoute(
|
ctx.pushRoute(
|
||||||
AssetViewerRoute(
|
AssetViewerRoute(
|
||||||
initialIndex: assetIndex,
|
initialIndex: assetIndex,
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,7 @@ class DeepLinkService {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
AssetViewer.setAsset(ref, asset, TimelineType.deepLink);
|
AssetViewer.setAsset(ref, asset);
|
||||||
return AssetViewerRoute(
|
return AssetViewerRoute(
|
||||||
initialIndex: 0,
|
initialIndex: 0,
|
||||||
timelineService: _betaTimelineFactory.fromAssets([asset], TimelineType.deepLink),
|
timelineService: _betaTimelineFactory.fromAssets([asset], TimelineType.deepLink),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue