mirror of
https://github.com/immich-app/immich.git
synced 2025-11-25 15:55:17 -05:00
fix(mobile): first video memory on page doesn't play (#23906)
* fix(mobile): first video memory doesn't play * refactor: moved logic to static method * refactor: fix haptic feedback & empty check * refactor: use DriftMemory on setMemory * refactor: move video reset into if block
This commit is contained in:
parent
1dbc20fd77
commit
9f3eeed091
@ -24,6 +24,16 @@ class DriftMemoryPage extends HookConsumerWidget {
|
|||||||
|
|
||||||
const DriftMemoryPage({required this.memories, required this.memoryIndex, super.key});
|
const DriftMemoryPage({required this.memories, required this.memoryIndex, super.key});
|
||||||
|
|
||||||
|
static void setMemory(WidgetRef ref, DriftMemory memory) {
|
||||||
|
if (memory.assets.isNotEmpty) {
|
||||||
|
ref.read(currentAssetNotifier.notifier).setAsset(memory.assets.first);
|
||||||
|
|
||||||
|
if (memory.assets.first.isVideo) {
|
||||||
|
ref.read(videoPlaybackValueProvider.notifier).reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final currentMemory = useState(memories[memoryIndex]);
|
final currentMemory = useState(memories[memoryIndex]);
|
||||||
@ -202,6 +212,10 @@ class DriftMemoryPage extends HookConsumerWidget {
|
|||||||
if (pageNumber < memories.length) {
|
if (pageNumber < memories.length) {
|
||||||
currentMemoryIndex.value = pageNumber;
|
currentMemoryIndex.value = pageNumber;
|
||||||
currentMemory.value = memories[pageNumber];
|
currentMemory.value = memories[pageNumber];
|
||||||
|
|
||||||
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
|
DriftMemoryPage.setMemory(ref, memories[pageNumber]);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
currentAssetPage.value = 0;
|
currentAssetPage.value = 0;
|
||||||
|
|||||||
@ -3,10 +3,9 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:immich_mobile/domain/models/memory.model.dart';
|
import 'package:immich_mobile/domain/models/memory.model.dart';
|
||||||
import 'package:immich_mobile/extensions/translate_extensions.dart';
|
import 'package:immich_mobile/extensions/translate_extensions.dart';
|
||||||
|
import 'package:immich_mobile/presentation/pages/drift_memory.page.dart';
|
||||||
import 'package:immich_mobile/presentation/widgets/images/thumbnail.widget.dart';
|
import 'package:immich_mobile/presentation/widgets/images/thumbnail.widget.dart';
|
||||||
import 'package:immich_mobile/providers/asset_viewer/video_player_value_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/asset_viewer/current_asset.provider.dart';
|
|
||||||
import 'package:immich_mobile/providers/infrastructure/memory.provider.dart';
|
import 'package:immich_mobile/providers/infrastructure/memory.provider.dart';
|
||||||
import 'package:immich_mobile/routing/router.dart';
|
import 'package:immich_mobile/routing/router.dart';
|
||||||
|
|
||||||
@ -31,16 +30,9 @@ class DriftMemoryLane extends ConsumerWidget {
|
|||||||
overlayColor: WidgetStateProperty.all(Colors.white.withValues(alpha: 0.1)),
|
overlayColor: WidgetStateProperty.all(Colors.white.withValues(alpha: 0.1)),
|
||||||
onTap: (index) {
|
onTap: (index) {
|
||||||
ref.read(hapticFeedbackProvider.notifier).heavyImpact();
|
ref.read(hapticFeedbackProvider.notifier).heavyImpact();
|
||||||
|
|
||||||
if (memories[index].assets.isNotEmpty) {
|
if (memories[index].assets.isNotEmpty) {
|
||||||
final asset = memories[index].assets[0];
|
DriftMemoryPage.setMemory(ref, memories[index]);
|
||||||
ref.read(currentAssetNotifier.notifier).setAsset(asset);
|
|
||||||
|
|
||||||
if (asset.isVideo) {
|
|
||||||
ref.read(videoPlaybackValueProvider.notifier).reset();
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
context.pushRoute(DriftMemoryRoute(memories: memories, memoryIndex: index));
|
context.pushRoute(DriftMemoryRoute(memories: memories, memoryIndex: index));
|
||||||
},
|
},
|
||||||
children: memories
|
children: memories
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user