mirror of
https://github.com/immich-app/immich.git
synced 2024-12-30 11:28:22 +02:00
cb391342d7
* feat(mobile): map page - add map view * map: add map-markers * feat(map): add relative date filter * fix: do not let users scroll past map bounds * fix: fetch relative date from store to state on init * feat(mobile):re-fetch markers only on filter change * feat(mobile) - asset bottom sheet in map page * feat(mobile): display markers based on bottom sheet scroll * fix: exif-bottom-sheet - rebase conflict * feat(mobile): map-view - strongly typed map page events * feat(map): zoom to asset * chore: dart analyzer fixes * map-page move attribution to top-right * feat(mobile): map view - asset selection handling * feat(mobile): map-view display map in places row * fix: make asset marker icon responsive * optimise map page rebuilds * refactor(mobile): map page * feat(mobile): map-view: Go to location * map-view(mobile): minor refactor * fix(mobile): Handle invalid coords gracefully * small styling --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
52 lines
1.6 KiB
Dart
52 lines
1.6 KiB
Dart
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:immich_mobile/modules/map/models/map_state.model.dart';
|
|
import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
|
|
import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
|
|
|
|
class MapStateNotifier extends StateNotifier<MapState> {
|
|
MapStateNotifier(this.appSettingsProvider)
|
|
: super(
|
|
MapState(
|
|
isDarkTheme: appSettingsProvider
|
|
.getSetting<bool>(AppSettingsEnum.mapThemeMode),
|
|
showFavoriteOnly: appSettingsProvider
|
|
.getSetting<bool>(AppSettingsEnum.mapShowFavoriteOnly),
|
|
relativeTime: appSettingsProvider
|
|
.getSetting<int>(AppSettingsEnum.mapRelativeDate),
|
|
),
|
|
);
|
|
|
|
final AppSettingsService appSettingsProvider;
|
|
|
|
bool get isDarkTheme => state.isDarkTheme;
|
|
|
|
void switchTheme(bool isDarkTheme) {
|
|
appSettingsProvider.setSetting(
|
|
AppSettingsEnum.mapThemeMode,
|
|
isDarkTheme,
|
|
);
|
|
state = state.copyWith(isDarkTheme: isDarkTheme);
|
|
}
|
|
|
|
void switchFavoriteOnly(bool isFavoriteOnly) {
|
|
appSettingsProvider.setSetting(
|
|
AppSettingsEnum.mapShowFavoriteOnly,
|
|
appSettingsProvider,
|
|
);
|
|
state = state.copyWith(showFavoriteOnly: isFavoriteOnly);
|
|
}
|
|
|
|
void setRelativeTime(int relativeTime) {
|
|
appSettingsProvider.setSetting(
|
|
AppSettingsEnum.mapRelativeDate,
|
|
relativeTime,
|
|
);
|
|
state = state.copyWith(relativeTime: relativeTime);
|
|
}
|
|
}
|
|
|
|
final mapStateNotifier =
|
|
StateNotifierProvider<MapStateNotifier, MapState>((ref) {
|
|
return MapStateNotifier(ref.watch(appSettingsServiceProvider));
|
|
});
|