fix: timeline service uninitialised across routes (#19544)
This commit is contained in:
@@ -1,20 +1,18 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:immich_mobile/constants/enums.dart';
|
||||
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
|
||||
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
|
||||
import 'package:immich_mobile/providers/multiselect.provider.dart';
|
||||
import 'package:immich_mobile/providers/timeline/multiselect.provider.dart';
|
||||
import 'package:immich_mobile/providers/user.provider.dart';
|
||||
import 'package:immich_mobile/services/action.service.dart';
|
||||
import 'package:immich_mobile/services/timeline.service.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
|
||||
final actionProvider = NotifierProvider<ActionNotifier, void>(
|
||||
ActionNotifier.new,
|
||||
dependencies: [
|
||||
actionServiceProvider,
|
||||
multiSelectProvider,
|
||||
timelineServiceProvider,
|
||||
multiselectProvider,
|
||||
],
|
||||
);
|
||||
|
||||
@@ -32,7 +30,7 @@ class ActionResult {
|
||||
|
||||
class ActionNotifier extends Notifier<void> {
|
||||
final Logger _logger = Logger('ActionNotifier');
|
||||
late final ActionService _service;
|
||||
late ActionService _service;
|
||||
|
||||
ActionNotifier() : super();
|
||||
|
||||
|
||||
@@ -15,9 +15,17 @@ final timelineArgsProvider = Provider.autoDispose<TimelineArgs>(
|
||||
throw UnimplementedError('Will be overridden through a ProviderScope.'),
|
||||
);
|
||||
|
||||
final timelineServiceProvider = Provider.autoDispose<TimelineService>(
|
||||
(ref) =>
|
||||
throw UnimplementedError('Will be overridden through a ProviderScope.'),
|
||||
final timelineServiceProvider = Provider<TimelineService>(
|
||||
(ref) {
|
||||
final timelineUsers = ref.watch(timelineUsersProvider).valueOrNull ?? [];
|
||||
final timelineService =
|
||||
ref.watch(timelineFactoryProvider).main(timelineUsers);
|
||||
ref.onDispose(timelineService.dispose);
|
||||
return timelineService;
|
||||
},
|
||||
// Empty dependencies to inform the framework that this provider
|
||||
// might be used in a ProviderScope
|
||||
dependencies: [],
|
||||
);
|
||||
|
||||
final timelineFactoryProvider = Provider<TimelineFactory>(
|
||||
|
||||
@@ -47,12 +47,10 @@ class MultiSelectState {
|
||||
}
|
||||
|
||||
class MultiSelectNotifier extends Notifier<MultiSelectState> {
|
||||
late final TimelineService _timelineService;
|
||||
TimelineService get _timelineService => ref.read(timelineServiceProvider);
|
||||
|
||||
@override
|
||||
MultiSelectState build() {
|
||||
_timelineService = ref.read(timelineServiceProvider);
|
||||
|
||||
return const MultiSelectState(selectedAssets: {});
|
||||
}
|
||||
|
||||
@@ -145,5 +143,5 @@ final bucketSelectionProvider = Provider.family<bool, List<BaseAsset>>(
|
||||
// Check if all assets in the bucket are selected
|
||||
return bucketAssets.every((asset) => selectedAssets.contains(asset));
|
||||
},
|
||||
dependencies: [multiSelectProvider],
|
||||
dependencies: [multiSelectProvider, timelineServiceProvider],
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user