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
|
|
|
}
|