refactor: map query

This commit is contained in:
wuzihao051119
2025-07-16 17:28:01 +08:00
committed by mertalev
parent d308d023c2
commit 5d722eef98
5 changed files with 78 additions and 51 deletions
+19 -11
View File
@@ -2,7 +2,11 @@ import 'package:immich_mobile/domain/models/map.model.dart';
import 'package:immich_mobile/infrastructure/repositories/map.repository.dart';
import 'package:maplibre_gl/maplibre_gl.dart';
typedef MapMarkerSource = Stream<List<Marker>> Function(LatLngBounds bounds);
typedef MapMarkerSource = Stream<List<Marker>> Function(LatLngBounds? bounds);
typedef MapQuery = ({
MapMarkerSource markerSource,
});
class MapFactory {
final DriftMapRepository _mapRepository;
@@ -11,25 +15,29 @@ class MapFactory {
required DriftMapRepository mapRepository,
}) : _mapRepository = mapRepository;
MapService main(List<String> timelineUsers) => MapService(
markerSource: (bounds) =>
_mapRepository.watchMainMarker(timelineUsers, bounds: bounds),
);
MapService remote(String ownerId) =>
MapService(_mapRepository.remote(ownerId));
MapService remoteAlbum({required String albumId}) => MapService(
markerSource: (bounds) =>
_mapRepository.watchRemoteAlbumMarker(albumId, bounds: bounds),
);
MapService favorite(String ownerId) =>
MapService(_mapRepository.favorite(ownerId));
MapService locked(String ownerId) =>
MapService(_mapRepository.locked(ownerId));
}
class MapService {
final MapMarkerSource _markerSource;
const MapService({
MapService(MapQuery query)
: this._(
markerSource: query.markerSource,
);
MapService._({
required MapMarkerSource markerSource,
}) : _markerSource = markerSource;
Stream<List<Marker>> Function(LatLngBounds bounds) get watchMarkers =>
Stream<List<Marker>> Function(LatLngBounds? bounds) get watchMarkers =>
_markerSource;
Future<void> dispose() async {}