refactor: yeet old timeline (#27666)

* refactor: yank old timeline

# Conflicts:
#	mobile/lib/presentation/pages/editing/drift_edit.page.dart
#	mobile/lib/providers/websocket.provider.dart
#	mobile/lib/routing/router.dart

* more cleanup

* remove native code

* chore: bump sqlite-data version

* remove old background tasks from BGTaskSchedulerPermittedIdentifiers

* rebase

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
shenlong
2026-04-15 23:00:27 +05:30
committed by GitHub
parent 6dd6053222
commit 79fccdbee0
367 changed files with 332 additions and 50870 deletions
+36 -109
View File
@@ -7,10 +7,7 @@ import 'package:immich_mobile/domain/services/memory.service.dart';
import 'package:immich_mobile/domain/services/people.service.dart';
import 'package:immich_mobile/domain/services/remote_album.service.dart';
import 'package:immich_mobile/domain/services/timeline.service.dart';
import 'package:immich_mobile/entities/store.entity.dart';
import 'package:immich_mobile/presentation/widgets/asset_viewer/asset_viewer.page.dart';
import 'package:immich_mobile/providers/album/current_album.provider.dart';
import 'package:immich_mobile/providers/asset_viewer/current_asset.provider.dart';
import 'package:immich_mobile/providers/infrastructure/album.provider.dart';
import 'package:immich_mobile/providers/infrastructure/asset.provider.dart' as beta_asset_provider;
import 'package:immich_mobile/providers/infrastructure/memory.provider.dart';
@@ -18,19 +15,9 @@ import 'package:immich_mobile/providers/infrastructure/people.provider.dart';
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
import 'package:immich_mobile/providers/user.provider.dart';
import 'package:immich_mobile/routing/router.dart';
import 'package:immich_mobile/services/album.service.dart';
import 'package:immich_mobile/services/asset.service.dart';
import 'package:immich_mobile/services/memory.service.dart';
import 'package:immich_mobile/widgets/asset_grid/asset_grid_data_structure.dart';
final deepLinkServiceProvider = Provider(
(ref) => DeepLinkService(
ref.watch(memoryServiceProvider),
ref.watch(assetServiceProvider),
ref.watch(albumServiceProvider),
ref.watch(currentAssetProvider.notifier),
ref.watch(currentAlbumProvider.notifier),
// Below is used for beta timeline
ref.watch(timelineFactoryProvider),
ref.watch(beta_asset_provider.assetServiceProvider),
ref.watch(remoteAlbumServiceProvider),
@@ -41,14 +28,6 @@ final deepLinkServiceProvider = Provider(
);
class DeepLinkService {
/// TODO: Remove this when beta is default
final MemoryService _memoryService;
final AssetService _assetService;
final AlbumService _albumService;
final CurrentAsset _currentAsset;
final CurrentAlbum _currentAlbum;
/// Used for beta timeline
final TimelineFactory _betaTimelineFactory;
final beta_asset_service.AssetService _betaAssetService;
final RemoteAlbumService _betaRemoteAlbumService;
@@ -58,11 +37,6 @@ class DeepLinkService {
final UserDto? _currentUser;
const DeepLinkService(
this._memoryService,
this._assetService,
this._albumService,
this._currentAsset,
this._currentAlbum,
this._betaTimelineFactory,
this._betaAssetService,
this._betaRemoteAlbumService,
@@ -75,7 +49,7 @@ class DeepLinkService {
return DeepLink([
// we need something to segue back to if the app was cold started
// TODO: use MainTimelineRoute this when beta is default
if (isColdStart) (Store.isBetaTimelineEnabled) ? const TabShellRoute() : const PhotosRoute(),
if (isColdStart) const TabShellRoute(),
route,
]);
}
@@ -138,95 +112,52 @@ class DeepLinkService {
}
Future<PageRouteInfo?> _buildMemoryDeepLink(String? memoryId) async {
if (Store.isBetaTimelineEnabled) {
List<DriftMemory> memories = [];
List<DriftMemory> memories = [];
if (memoryId == null) {
if (_currentUser == null) {
return null;
}
memories = await _betaMemoryService.getMemoryLane(_currentUser.id);
} else {
final memory = await _betaMemoryService.get(memoryId);
if (memory != null) {
memories = [memory];
}
}
if (memories.isEmpty) {
if (memoryId == null) {
if (_currentUser == null) {
return null;
}
return DriftMemoryRoute(memories: memories, memoryIndex: 0);
memories = await _betaMemoryService.getMemoryLane(_currentUser.id);
} else {
// TODO: Remove this when beta is default
if (memoryId == null) {
return null;
final memory = await _betaMemoryService.get(memoryId);
if (memory != null) {
memories = [memory];
}
final memory = await _memoryService.getMemoryById(memoryId);
if (memory == null) {
return null;
}
return MemoryRoute(memories: [memory], memoryIndex: 0);
}
}
Future<PageRouteInfo?> _buildAssetDeepLink(String assetId, WidgetRef ref) async {
if (Store.isBetaTimelineEnabled) {
final asset = await _betaAssetService.getRemoteAsset(assetId);
if (asset == null) {
return null;
}
AssetViewer.setAsset(ref, asset);
return AssetViewerRoute(
initialIndex: 0,
timelineService: _betaTimelineFactory.fromAssets([asset], TimelineOrigin.deepLink),
);
} else {
// TODO: Remove this when beta is default
final asset = await _assetService.getAssetByRemoteId(assetId);
if (asset == null) {
return null;
}
_currentAsset.set(asset);
final renderList = await RenderList.fromAssets([asset], GroupAssetsBy.auto);
return GalleryViewerRoute(renderList: renderList, initialIndex: 0, heroOffset: 0, showStack: true);
}
}
Future<PageRouteInfo?> _buildAlbumDeepLink(String albumId) async {
if (Store.isBetaTimelineEnabled) {
final album = await _betaRemoteAlbumService.get(albumId);
if (album == null) {
return null;
}
return RemoteAlbumRoute(album: album);
} else {
// TODO: Remove this when beta is default
final album = await _albumService.getAlbumByRemoteId(albumId);
if (album == null) {
return null;
}
_currentAlbum.set(album);
return AlbumViewerRoute(albumId: album.id);
}
}
Future<PageRouteInfo?> _buildActivityDeepLink(String albumId) async {
if (Store.isBetaTimelineEnabled == false) {
if (memories.isEmpty) {
return null;
}
return DriftMemoryRoute(memories: memories, memoryIndex: 0);
}
Future<PageRouteInfo?> _buildAssetDeepLink(String assetId, WidgetRef ref) async {
final asset = await _betaAssetService.getRemoteAsset(assetId);
if (asset == null) {
return null;
}
AssetViewer.setAsset(ref, asset);
return AssetViewerRoute(
initialIndex: 0,
timelineService: _betaTimelineFactory.fromAssets([asset], TimelineOrigin.deepLink),
);
}
Future<PageRouteInfo?> _buildAlbumDeepLink(String albumId) async {
final album = await _betaRemoteAlbumService.get(albumId);
if (album == null) {
return null;
}
return RemoteAlbumRoute(album: album);
}
Future<PageRouteInfo?> _buildActivityDeepLink(String albumId) async {
final album = await _betaRemoteAlbumService.get(albumId);
if (album == null || album.isActivityEnabled == false) {
@@ -237,10 +168,6 @@ class DeepLinkService {
}
Future<PageRouteInfo?> _buildPeopleDeepLink(String personId) async {
if (Store.isBetaTimelineEnabled == false) {
return null;
}
final person = await _betaPeopleService.get(personId);
if (person == null) {