mirror of
https://github.com/immich-app/immich.git
synced 2026-01-27 06:07:26 -05:00
* fix(mobile): bring back map settings * chore: styling --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Co-authored-by: Alex <alex.tran1502@gmail.com>
56 lines
2.0 KiB
Dart
56 lines
2.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
|
import 'package:immich_mobile/presentation/widgets/bottom_sheet/base_bottom_sheet.widget.dart';
|
|
import 'package:immich_mobile/presentation/widgets/map/map.state.dart';
|
|
import 'package:immich_mobile/presentation/widgets/timeline/timeline.widget.dart';
|
|
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
|
|
import 'package:immich_mobile/providers/user.provider.dart';
|
|
|
|
class MapBottomSheet extends StatelessWidget {
|
|
const MapBottomSheet({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return BaseBottomSheet(
|
|
initialChildSize: 0.25,
|
|
maxChildSize: 0.75,
|
|
shouldCloseOnMinExtent: false,
|
|
resizeOnScroll: false,
|
|
actions: [],
|
|
backgroundColor: context.themeData.colorScheme.surface,
|
|
slivers: [const SliverFillRemaining(hasScrollBody: false, child: _ScopedMapTimeline())],
|
|
);
|
|
}
|
|
}
|
|
|
|
class _ScopedMapTimeline extends StatelessWidget {
|
|
const _ScopedMapTimeline();
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
// TODO: this causes the timeline to switch to flicker to "loading" state and back. This is both janky and inefficient.
|
|
return ProviderScope(
|
|
overrides: [
|
|
timelineServiceProvider.overrideWith((ref) {
|
|
final user = ref.watch(currentUserProvider);
|
|
if (user == null) {
|
|
throw Exception('User must be logged in to access archive');
|
|
}
|
|
|
|
final users = ref.watch(mapStateProvider).withPartners
|
|
? ref.watch(timelineUsersProvider).valueOrNull ?? [user.id]
|
|
: [user.id];
|
|
|
|
final timelineService = ref
|
|
.watch(timelineFactoryProvider)
|
|
.map(users, ref.watch(mapStateProvider).toOptions());
|
|
ref.onDispose(timelineService.dispose);
|
|
return timelineService;
|
|
}),
|
|
],
|
|
child: const Timeline(appBar: null, bottomSheet: null, withScrubber: false),
|
|
);
|
|
}
|
|
}
|