|
@@ -1,6 +1,9 @@
|
|
import 'package:dio/dio.dart';
|
|
import 'package:dio/dio.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
+import 'package:hive_flutter/hive_flutter.dart';
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
|
|
+import 'package:immich_mobile/constants/hive_box.dart';
|
|
|
|
+import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
|
|
import 'package:immich_mobile/shared/services/server_info.service.dart';
|
|
import 'package:immich_mobile/shared/services/server_info.service.dart';
|
|
import 'package:immich_mobile/shared/models/backup_state.model.dart';
|
|
import 'package:immich_mobile/shared/models/backup_state.model.dart';
|
|
import 'package:immich_mobile/shared/models/server_info.model.dart';
|
|
import 'package:immich_mobile/shared/models/server_info.model.dart';
|
|
@@ -8,7 +11,7 @@ import 'package:immich_mobile/shared/services/backup.service.dart';
|
|
import 'package:photo_manager/photo_manager.dart';
|
|
import 'package:photo_manager/photo_manager.dart';
|
|
|
|
|
|
class BackupNotifier extends StateNotifier<BackUpState> {
|
|
class BackupNotifier extends StateNotifier<BackUpState> {
|
|
- BackupNotifier()
|
|
|
|
|
|
+ BackupNotifier(this.ref)
|
|
: super(
|
|
: super(
|
|
BackUpState(
|
|
BackUpState(
|
|
backupProgress: BackUpProgressEnum.idle,
|
|
backupProgress: BackUpProgressEnum.idle,
|
|
@@ -29,6 +32,7 @@ class BackupNotifier extends StateNotifier<BackUpState> {
|
|
),
|
|
),
|
|
);
|
|
);
|
|
|
|
|
|
|
|
+ final Ref ref;
|
|
final BackupService _backupService = BackupService();
|
|
final BackupService _backupService = BackupService();
|
|
final ServerInfoService _serverInfoService = ServerInfoService();
|
|
final ServerInfoService _serverInfoService = ServerInfoService();
|
|
|
|
|
|
@@ -96,7 +100,7 @@ class BackupNotifier extends StateNotifier<BackUpState> {
|
|
|
|
|
|
void cancelBackup() {
|
|
void cancelBackup() {
|
|
state.cancelToken.cancel('Cancel Backup');
|
|
state.cancelToken.cancel('Cancel Backup');
|
|
- state = state.copyWith(backupProgress: BackUpProgressEnum.idle);
|
|
|
|
|
|
+ state = state.copyWith(backupProgress: BackUpProgressEnum.idle, progressInPercentage: 0.0);
|
|
}
|
|
}
|
|
|
|
|
|
void _onAssetUploaded() {
|
|
void _onAssetUploaded() {
|
|
@@ -130,8 +134,38 @@ class BackupNotifier extends StateNotifier<BackUpState> {
|
|
),
|
|
),
|
|
);
|
|
);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ void resumeBackup() {
|
|
|
|
+ debugPrint("[resumeBackup]");
|
|
|
|
+ var authState = ref.read(authenticationProvider);
|
|
|
|
+
|
|
|
|
+ // Check if user is login
|
|
|
|
+ var accessKey = Hive.box(userInfoBox).get(accessTokenKey);
|
|
|
|
+
|
|
|
|
+ // User has been logged out return
|
|
|
|
+ if (accessKey == null || !authState.isAuthenticated) {
|
|
|
|
+ debugPrint("[resumeBackup] not authenticated - abort");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Check if this device is enable backup by the user
|
|
|
|
+ if ((authState.deviceInfo.deviceId == authState.deviceId) && authState.deviceInfo.isAutoBackup) {
|
|
|
|
+ // check if backup is alreayd in process - then return
|
|
|
|
+ if (state.backupProgress == BackUpProgressEnum.inProgress) {
|
|
|
|
+ debugPrint("[resumeBackup] Backup is already in progress - abort");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Run backup
|
|
|
|
+ debugPrint("[resumeBackup] Start back up");
|
|
|
|
+ startBackupProcess();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ debugPrint("[resumeBackup] User disables auto backup");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
final backupProvider = StateNotifierProvider<BackupNotifier, BackUpState>((ref) {
|
|
final backupProvider = StateNotifierProvider<BackupNotifier, BackUpState>((ref) {
|
|
- return BackupNotifier();
|
|
|
|
|
|
+ return BackupNotifier(ref);
|
|
});
|
|
});
|