mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-01-06 03:31:02 -06:00
[client] Refactor common functionality in resource actions
This commit is contained in:
@@ -1,5 +1,22 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:offtheline/offtheline.dart';
|
||||
import 'package:phylum/libphylum/phylum_api_types.dart';
|
||||
|
||||
abstract class ResourceAction extends PhylumAction {
|
||||
String get resourceId;
|
||||
String _resourceId;
|
||||
String get resourceId => _resourceId;
|
||||
|
||||
ResourceAction({required String resourceId}) : _resourceId = resourceId;
|
||||
|
||||
void updateResourceId(String resourceId) {
|
||||
_resourceId = resourceId;
|
||||
}
|
||||
|
||||
@override
|
||||
FutureOr<void> processResponse(ApiResponse response) async {
|
||||
if (response is PhylumApiSuccessResponse) {
|
||||
await account.resourceRepository.processResourceUpdateResponse(resourceId, response.data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,26 @@
|
||||
import 'action_resource.dart';
|
||||
|
||||
abstract class ResourceBindAction extends ResourceAction {
|
||||
String get parent;
|
||||
String get resourceName;
|
||||
String _parent;
|
||||
String get parent => _parent;
|
||||
|
||||
Future<void> updateResourceName(String resourceName);
|
||||
String _resourceName;
|
||||
String get resourceName => _resourceName;
|
||||
|
||||
ResourceBindAction({
|
||||
required super.resourceId,
|
||||
required String parent,
|
||||
required String resourceName,
|
||||
}) : _parent = parent,
|
||||
_resourceName = resourceName;
|
||||
|
||||
Future<void> updateParent(String parent) {
|
||||
_parent = parent;
|
||||
return update(revertOptimisticUpdate);
|
||||
}
|
||||
|
||||
Future<void> updateResourceName(String resourceName) {
|
||||
_resourceName = resourceName;
|
||||
return update(revertOptimisticUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,24 +17,17 @@ class ResourceCopyAction extends ResourceCreateAction with JsonApiAction {
|
||||
String get endpoint => '/api/v1/fs/cp/$srcId';
|
||||
|
||||
final String srcId;
|
||||
@override
|
||||
final String resourceId;
|
||||
@override
|
||||
final String parent;
|
||||
String _resourceName;
|
||||
@override
|
||||
String get resourceName => _resourceName;
|
||||
final String description;
|
||||
final bool dir;
|
||||
|
||||
ResourceCopyAction._({
|
||||
required this.srcId,
|
||||
required this.resourceId,
|
||||
required this.parent,
|
||||
required String resourceName,
|
||||
required super.resourceId,
|
||||
required super.parent,
|
||||
required super.resourceName,
|
||||
required this.dir,
|
||||
required this.description,
|
||||
}) : _resourceName = resourceName;
|
||||
});
|
||||
|
||||
ResourceCopyAction({
|
||||
required Resource src,
|
||||
@@ -94,19 +87,6 @@ class ResourceCopyAction extends ResourceCreateAction with JsonApiAction {
|
||||
'description': description,
|
||||
};
|
||||
|
||||
@override
|
||||
FutureOr<void> processResponse(ApiResponse response) async {
|
||||
if (response is PhylumApiSuccessResponse) {
|
||||
await account.resourceRepository.processResourceUpdateResponse(resourceId, response.data);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> updateResourceName(String resourceName) {
|
||||
_resourceName = resourceName;
|
||||
return update(revertOptimisticUpdate);
|
||||
}
|
||||
|
||||
@override
|
||||
bool dependsOn(PhylumAction action) => action is ResourceCreateAction && action.resourceId == parent;
|
||||
}
|
||||
|
||||
@@ -5,11 +5,18 @@ import 'package:phylum/libphylum/actions/action_resource_bind.dart';
|
||||
import 'package:phylum/libphylum/phylum_api_types.dart';
|
||||
|
||||
abstract class ResourceCreateAction extends ResourceBindAction {
|
||||
ResourceCreateAction({
|
||||
required super.resourceId,
|
||||
required super.parent,
|
||||
required super.resourceName,
|
||||
});
|
||||
|
||||
@override
|
||||
FutureOr<void> processResponse(ApiResponse response) async {
|
||||
if (response is PhylumApiSuccessResponse) {
|
||||
final resource = await account.resourceRepository.processResourceUpdateResponse(resourceId, response.data);
|
||||
if (resource.id.value != resourceId) {
|
||||
final parsedId = resource.id.value;
|
||||
if (parsedId != resourceId) {
|
||||
revertOptimisticUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,12 +19,10 @@ class ResourceDeleteAction extends ResourceAction with JsonApiAction {
|
||||
@override
|
||||
String get endpoint => '/api/v1/fs/rm/$id';
|
||||
|
||||
@override
|
||||
final String resourceId;
|
||||
final String resourceName;
|
||||
|
||||
ResourceDeleteAction._({
|
||||
required this.resourceId,
|
||||
required super.resourceId,
|
||||
required this.resourceName,
|
||||
});
|
||||
|
||||
|
||||
@@ -15,19 +15,11 @@ class ResourceMkdirAction extends ResourceCreateAction with JsonApiAction {
|
||||
@override
|
||||
String get endpoint => '/api/v1/fs/mkdir/$resourceId';
|
||||
|
||||
@override
|
||||
final String resourceId;
|
||||
@override
|
||||
final String parent;
|
||||
String _resourceName;
|
||||
@override
|
||||
String get resourceName => _resourceName;
|
||||
|
||||
ResourceMkdirAction({
|
||||
required this.resourceId,
|
||||
required this.parent,
|
||||
required String resourceName,
|
||||
}) : _resourceName = resourceName;
|
||||
required super.resourceId,
|
||||
required super.parent,
|
||||
required super.resourceName,
|
||||
});
|
||||
|
||||
static ResourceMkdirAction fromMap(Map<String, dynamic> map) {
|
||||
return ResourceMkdirAction(
|
||||
@@ -67,12 +59,6 @@ class ResourceMkdirAction extends ResourceCreateAction with JsonApiAction {
|
||||
'parent': parent,
|
||||
};
|
||||
|
||||
@override
|
||||
Future<void> updateResourceName(String resourceName) {
|
||||
_resourceName = resourceName;
|
||||
return update(revertOptimisticUpdate);
|
||||
}
|
||||
|
||||
@override
|
||||
bool dependsOn(PhylumAction action) => action is ResourceMkdirAction && action.resourceId == parent;
|
||||
}
|
||||
|
||||
@@ -18,23 +18,16 @@ class ResourceMoveAction extends ResourceBindAction with JsonApiAction {
|
||||
@override
|
||||
String get endpoint => '/api/v1/fs/mv/$resourceId';
|
||||
|
||||
@override
|
||||
final String resourceId;
|
||||
@override
|
||||
final String parent;
|
||||
String _resourceName;
|
||||
@override
|
||||
String get resourceName => _resourceName;
|
||||
final DateTime modified;
|
||||
final String description;
|
||||
|
||||
ResourceMoveAction._({
|
||||
required this.resourceId,
|
||||
required this.parent,
|
||||
required String resourceName,
|
||||
required super.resourceId,
|
||||
required super.parent,
|
||||
required super.resourceName,
|
||||
required this.description,
|
||||
required this.modified,
|
||||
}) : _resourceName = resourceName;
|
||||
});
|
||||
|
||||
ResourceMoveAction({
|
||||
required Resource r,
|
||||
@@ -114,19 +107,6 @@ class ResourceMoveAction extends ResourceBindAction with JsonApiAction {
|
||||
'modified': modified.millisecondsSinceEpoch,
|
||||
};
|
||||
|
||||
@override
|
||||
FutureOr<void> processResponse(ApiResponse response) async {
|
||||
if (response is PhylumApiSuccessResponse) {
|
||||
await account.resourceRepository.processResourceUpdateResponse(resourceId, response.data);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> updateResourceName(String resourceName) {
|
||||
_resourceName = resourceName;
|
||||
return update(revertOptimisticUpdate);
|
||||
}
|
||||
|
||||
@override
|
||||
bool dependsOn(PhylumAction action) =>
|
||||
(action is ResourceCreateAction && action.resourceId == resourceId) ||
|
||||
|
||||
@@ -20,15 +20,13 @@ class ResourceShareAction extends ResourceAction with JsonApiAction {
|
||||
@override
|
||||
String get endpoint => '/api/v1/fs/share/$resourceId';
|
||||
|
||||
@override
|
||||
final String resourceId;
|
||||
final String username;
|
||||
final int permission;
|
||||
final DateTime modified;
|
||||
final String description;
|
||||
|
||||
ResourceShareAction._({
|
||||
required this.resourceId,
|
||||
required super.resourceId,
|
||||
required this.username,
|
||||
required this.permission,
|
||||
required this.modified,
|
||||
@@ -124,13 +122,6 @@ class ResourceShareAction extends ResourceAction with JsonApiAction {
|
||||
'description': description,
|
||||
};
|
||||
|
||||
@override
|
||||
FutureOr<void> processResponse(ApiResponse response) async {
|
||||
if (response is PhylumApiSuccessResponse) {
|
||||
await account.resourceRepository.processResourceUpdateResponse(resourceId, response.data);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
bool dependsOn(PhylumAction action) =>
|
||||
(action is ResourceCreateAction && action.resourceId == resourceId) ||
|
||||
|
||||
@@ -23,25 +23,18 @@ class ResourceUploadAction extends ResourceCreateAction with FileUploadApiAction
|
||||
@override
|
||||
Future<MultipartFile> get file => MultipartFile.fromPath('contents', path, filename: resourceName, contentType: MediaType.parse(contentType));
|
||||
|
||||
@override
|
||||
final String resourceId;
|
||||
@override
|
||||
final String parent;
|
||||
String _resourceName;
|
||||
@override
|
||||
String get resourceName => _resourceName;
|
||||
final String path;
|
||||
final int size;
|
||||
final String contentType;
|
||||
|
||||
ResourceUploadAction._({
|
||||
required this.resourceId,
|
||||
required this.parent,
|
||||
required String resourceName,
|
||||
required super.resourceId,
|
||||
required super.parent,
|
||||
required super.resourceName,
|
||||
required this.path,
|
||||
required this.size,
|
||||
required this.contentType,
|
||||
}) : _resourceName = resourceName;
|
||||
});
|
||||
|
||||
static Future<ResourceUploadAction> fromPath({
|
||||
required String parent,
|
||||
@@ -104,12 +97,6 @@ class ResourceUploadAction extends ResourceCreateAction with FileUploadApiAction
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> updateResourceName(String resourceName) {
|
||||
_resourceName = resourceName;
|
||||
return update(revertOptimisticUpdate);
|
||||
}
|
||||
|
||||
@override
|
||||
bool dependsOn(PhylumAction action) => (action is ResourceCreateAction && action.resourceId == parent);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user