feat(mobile): quota (#6409)

* feat(mobile): quota

* openapi

* user entity update

* Render quota

* refresh usage upon opening the app bar

* stop backup when quota exceed
This commit is contained in:
Alex 2024-01-16 20:08:31 -06:00 committed by GitHub
parent abce82e235
commit 78de4f1312
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 386 additions and 76 deletions

View file

@ -3,18 +3,33 @@ import 'dart:async';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/shared/models/store.dart';
import 'package:immich_mobile/shared/models/user.dart';
import 'package:immich_mobile/shared/providers/api.provider.dart';
import 'package:immich_mobile/shared/providers/db.provider.dart';
import 'package:immich_mobile/shared/services/api.service.dart';
import 'package:isar/isar.dart';
class CurrentUserProvider extends StateNotifier<User?> {
CurrentUserProvider() : super(null) {
CurrentUserProvider(this._apiService) : super(null) {
state = Store.tryGet(StoreKey.currentUser);
streamSub =
Store.watch(StoreKey.currentUser).listen((user) => state = user);
}
final ApiService _apiService;
late final StreamSubscription<User?> streamSub;
refresh() async {
try {
final user = await _apiService.userApi.getMyUserInfo();
if (user != null) {
Store.put(
StoreKey.currentUser,
User.fromUserDto(user),
);
}
} catch (_) {}
}
@override
void dispose() {
streamSub.cancel();
@ -24,7 +39,9 @@ class CurrentUserProvider extends StateNotifier<User?> {
final currentUserProvider =
StateNotifierProvider<CurrentUserProvider, User?>((ref) {
return CurrentUserProvider();
return CurrentUserProvider(
ref.watch(apiServiceProvider),
);
});
class TimelineUserIdsProvider extends StateNotifier<List<int>> {