fix: timeline service uninitialised across routes (#19544)

This commit is contained in:
shenlong 2025-07-01 20:53:20 +05:30 committed by GitHub
parent f59b0bab5a
commit 15be3437bf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 95 additions and 139 deletions

View file

@ -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();

View file

@ -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>(