immich/mobile/lib/providers/gallery_permission.provider.dart
shenlong e9eafc3161
refactor: gallery permission notifier (#30477)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-08-08 11:14:14 -05:00

28 lines
1.1 KiB
Dart

import 'dart:async';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/constants/enums.dart';
import 'package:immich_mobile/domain/services/device_permission.service.dart';
import 'package:immich_mobile/repositories/permission.repository.dart';
final galleryPermissionServiceProvider = Provider((ref) {
return DevicePermissionService(ref.watch(permissionRepositoryProvider));
});
class GalleryPermissionNotifier extends StateNotifier<DevicePermissionStatus> {
GalleryPermissionNotifier(this._service) : super(.denied) {
unawaited(getGalleryPermissionStatus());
}
final DevicePermissionService _service;
bool get hasPermission => state.hasAccess;
Future<DevicePermissionStatus> requestGalleryPermission() async => state = await _service.requestGallery();
Future<DevicePermissionStatus> getGalleryPermissionStatus() async => state = await _service.galleryStatus();
}
final galleryPermissionNotifier = StateNotifierProvider<GalleryPermissionNotifier, DevicePermissionStatus>(
(ref) => GalleryPermissionNotifier(ref.watch(galleryPermissionServiceProvider)),
);