refactor: map query
This commit is contained in:
@@ -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 {}
|
||||
|
||||
Reference in New Issue
Block a user