ente/lib/folder_service.dart

75 lines
2.2 KiB
Dart
Raw Normal View History

2020-05-17 19:35:57 +00:00
import 'dart:developer';
2020-05-17 12:39:38 +00:00
import 'package:dio/dio.dart';
import 'package:photos/core/configuration.dart';
2020-05-17 19:35:57 +00:00
import 'package:photos/models/folder.dart';
2020-05-17 12:39:38 +00:00
2020-05-17 14:35:31 +00:00
class FolderSharingService {
2020-05-17 12:39:38 +00:00
final _dio = Dio();
2020-05-17 14:35:31 +00:00
FolderSharingService._privateConstructor();
static final FolderSharingService instance =
FolderSharingService._privateConstructor();
2020-05-17 12:39:38 +00:00
2020-05-18 15:35:38 +00:00
void sync() {
// TODO
}
Future<List<Folder>> getFolders() async {
return _dio
.get(
Configuration.instance.getHttpEndpoint() + "/folders/",
options:
Options(headers: {"X-Auth-Token": Configuration.instance.getToken()}),
)
.then((foldersResponse) {
return (foldersResponse.data as List)
.map((f) => Folder.fromMap(f))
.toList();
});
}
2020-05-17 12:39:38 +00:00
Future<Map<String, bool>> getSharingStatus(String path) async {
return _dio
.get(
Configuration.instance.getHttpEndpoint() + "/users",
options:
Options(headers: {"X-Auth-Token": Configuration.instance.getToken()}),
)
.then((usersResponse) {
2020-05-18 15:35:38 +00:00
return getFolders().then((folders) {
2020-05-17 19:35:57 +00:00
Folder sharedFolder;
for (var folder in folders) {
if (folder.owner == Configuration.instance.getUsername() &&
folder.deviceFolder == path) {
sharedFolder = folder;
break;
}
}
var sharedUsers = Set<String>();
if (sharedFolder != null) {
sharedUsers.addAll(sharedFolder.sharedWith);
}
2020-05-17 12:39:38 +00:00
final result = Map<String, bool>();
2020-05-17 19:35:57 +00:00
(usersResponse.data["users"] as List).forEach((user) {
2020-05-17 12:39:38 +00:00
if (user != Configuration.instance.getUsername()) {
result[user] = sharedUsers.contains(user);
}
});
return result;
});
});
}
2020-05-17 20:39:21 +00:00
Future<void> shareFolder(String name, String path, Set<String> users) {
var folder = Folder(0, name, Configuration.instance.getUsername(), path,
users.toList(), -1);
return _dio
.put(Configuration.instance.getHttpEndpoint() + "/folders/",
options: Options(
headers: {"X-Auth-Token": Configuration.instance.getToken()}),
data: folder.toMap())
.then((response) => log(response.toString()));
}
2020-05-17 12:39:38 +00:00
}