mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-09 20:07:51 -06:00
Feat: Update scanner persistence, more migrations and bugfixes
This commit is contained in:
@@ -7,6 +7,7 @@ import 'package:paperless_mobile/core/interceptor/server_reachability_error_inte
|
||||
import 'package:paperless_mobile/core/security/session_manager.dart';
|
||||
import 'package:paperless_mobile/features/login/model/client_certificate.dart';
|
||||
import 'package:paperless_mobile/features/login/model/reachability_status.dart';
|
||||
import 'package:rxdart/subjects.dart';
|
||||
|
||||
abstract class ConnectivityStatusService {
|
||||
Future<bool> isConnectedToInternet();
|
||||
@@ -20,14 +21,19 @@ abstract class ConnectivityStatusService {
|
||||
|
||||
class ConnectivityStatusServiceImpl implements ConnectivityStatusService {
|
||||
final Connectivity _connectivity;
|
||||
final BehaviorSubject<bool> _connectivityState$ = BehaviorSubject();
|
||||
|
||||
ConnectivityStatusServiceImpl(this._connectivity);
|
||||
ConnectivityStatusServiceImpl(this._connectivity) {
|
||||
_connectivityState$.addStream(
|
||||
_connectivity.onConnectivityChanged
|
||||
.map(_hasActiveInternetConnection)
|
||||
.asBroadcastStream(),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Stream<bool> connectivityChanges() {
|
||||
return _connectivity.onConnectivityChanged
|
||||
.map(_hasActiveInternetConnection)
|
||||
.asBroadcastStream();
|
||||
return _connectivityState$.asBroadcastStream();
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -98,3 +104,31 @@ class ConnectivityStatusServiceImpl implements ConnectivityStatusService {
|
||||
return ReachabilityStatus.notReachable;
|
||||
}
|
||||
}
|
||||
|
||||
class ConnectivityStatusServiceMock implements ConnectivityStatusService {
|
||||
final bool isConnected;
|
||||
|
||||
ConnectivityStatusServiceMock(this.isConnected);
|
||||
@override
|
||||
Stream<bool> connectivityChanges() {
|
||||
return Stream.value(isConnected);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> isConnectedToInternet() async {
|
||||
return isConnected;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<ReachabilityStatus> isPaperlessServerReachable(String serverAddress,
|
||||
[ClientCertificate? clientCertificate]) async {
|
||||
return isConnected
|
||||
? ReachabilityStatus.reachable
|
||||
: ReachabilityStatus.notReachable;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> isServerReachable(String serverAddress) async {
|
||||
return isConnected;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ class FileService {
|
||||
case PaperlessDirectoryType.temporary:
|
||||
return temporaryDirectory;
|
||||
case PaperlessDirectoryType.scans:
|
||||
return scanDirectory;
|
||||
return temporaryScansDirectory;
|
||||
case PaperlessDirectoryType.download:
|
||||
return downloadsDirectory;
|
||||
}
|
||||
@@ -52,8 +52,7 @@ class FileService {
|
||||
} else if (Platform.isIOS) {
|
||||
final appDir = await getApplicationDocumentsDirectory();
|
||||
final dir = Directory('${appDir.path}/documents');
|
||||
dir.createSync();
|
||||
return dir;
|
||||
return dir.create(recursive: true);
|
||||
} else {
|
||||
throw UnsupportedError("Platform not supported.");
|
||||
}
|
||||
@@ -72,33 +71,22 @@ class FileService {
|
||||
} else if (Platform.isIOS) {
|
||||
final appDir = await getApplicationDocumentsDirectory();
|
||||
final dir = Directory('${appDir.path}/downloads');
|
||||
dir.createSync();
|
||||
return dir;
|
||||
return dir.create(recursive: true);
|
||||
} else {
|
||||
throw UnsupportedError("Platform not supported.");
|
||||
}
|
||||
}
|
||||
|
||||
static Future<Directory?> get scanDirectory async {
|
||||
if (Platform.isAndroid) {
|
||||
final scanDir = await getExternalStorageDirectories(
|
||||
type: StorageDirectory.dcim,
|
||||
);
|
||||
return scanDir!.first;
|
||||
} else if (Platform.isIOS) {
|
||||
final appDir = await getApplicationDocumentsDirectory();
|
||||
final dir = Directory('${appDir.path}/scans');
|
||||
dir.createSync();
|
||||
return dir;
|
||||
} else {
|
||||
throw UnsupportedError("Platform not supported.");
|
||||
}
|
||||
static Future<Directory> get temporaryScansDirectory async {
|
||||
final tempDir = await temporaryDirectory;
|
||||
final scansDir = Directory('${tempDir.path}/scans');
|
||||
return scansDir.create(recursive: true);
|
||||
}
|
||||
|
||||
static Future<void> clearUserData() async {
|
||||
final scanDir = await scanDirectory;
|
||||
final scanDir = await temporaryScansDirectory;
|
||||
final tempDir = await temporaryDirectory;
|
||||
await scanDir?.delete(recursive: true);
|
||||
await scanDir.delete(recursive: true);
|
||||
await tempDir.delete(recursive: true);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user