mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 08:15:16 +00:00
Add references support
This commit is contained in:
52
lib/helpers/virtual_directory_helper.dart
Normal file
52
lib/helpers/virtual_directory_helper.dart
Normal file
@ -0,0 +1,52 @@
|
||||
import 'package:comunic/models/api_request.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// Virtual directory helper
|
||||
///
|
||||
/// @author Pierre Hubert
|
||||
|
||||
enum VirtualDirectoryType { USER, GROUP, NONE }
|
||||
|
||||
class VirtualDirectoryResult {
|
||||
final VirtualDirectoryType type;
|
||||
final int id;
|
||||
|
||||
const VirtualDirectoryResult({
|
||||
@required this.type,
|
||||
this.id,
|
||||
}) : assert(type != null);
|
||||
}
|
||||
|
||||
class VirtualDirectoryHelper {
|
||||
/// Find a virtual directory
|
||||
Future<VirtualDirectoryResult> find(String directory) async {
|
||||
final response = await APIRequest(
|
||||
uri: "virtualDirectory/find",
|
||||
needLogin: true,
|
||||
args: {"directory": directory}).exec();
|
||||
|
||||
switch (response.code) {
|
||||
case 404:
|
||||
return VirtualDirectoryResult(type: VirtualDirectoryType.NONE);
|
||||
|
||||
case 200:
|
||||
final id = response.getObject()["id"];
|
||||
final kind = response.getObject()["kind"];
|
||||
switch (kind) {
|
||||
case "user":
|
||||
return VirtualDirectoryResult(
|
||||
type: VirtualDirectoryType.USER, id: id);
|
||||
case "group":
|
||||
return VirtualDirectoryResult(
|
||||
type: VirtualDirectoryType.GROUP, id: id);
|
||||
|
||||
default:
|
||||
throw Exception("Unsupported virtual directory kind: $kind");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new Exception("Could not get virtual directory!");
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user