mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-01-04 10:39:47 -06:00
[client] Bring bookmark actions into ResourceAction hierarchy
This commit is contained in:
@@ -1,11 +1,14 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:offtheline/offtheline.dart';
|
||||
import 'package:phylum/libphylum/actions/bookmark_action.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_create.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_bookmark_remove.dart';
|
||||
import 'package:phylum/libphylum/db/db.dart';
|
||||
import 'package:phylum/libphylum/phylum_api_types.dart';
|
||||
|
||||
class BookmarkAddAction extends PhylumAction with JsonApiAction, BookmarkAction {
|
||||
import 'action_resource.dart';
|
||||
|
||||
class ResourceBookmarkAddAction extends ResourceAction with JsonApiAction {
|
||||
static const kActionName = 'bookmarkAdd';
|
||||
@override
|
||||
String get actionName => kActionName;
|
||||
@@ -19,14 +22,16 @@ class BookmarkAddAction extends PhylumAction with JsonApiAction, BookmarkAction
|
||||
@override
|
||||
Map<String, String> get queryParamters => {'name': bookmarkName};
|
||||
|
||||
@override
|
||||
final String resourceId;
|
||||
final String bookmarkName;
|
||||
final int createdMillis;
|
||||
|
||||
BookmarkAddAction._({required this.resourceId, required this.bookmarkName, required this.createdMillis});
|
||||
ResourceBookmarkAddAction._({
|
||||
required super.resourceId,
|
||||
required this.bookmarkName,
|
||||
required this.createdMillis,
|
||||
});
|
||||
|
||||
BookmarkAddAction({
|
||||
ResourceBookmarkAddAction({
|
||||
required Resource r,
|
||||
String? name,
|
||||
}) : this._(
|
||||
@@ -35,8 +40,8 @@ class BookmarkAddAction extends PhylumAction with JsonApiAction, BookmarkAction
|
||||
createdMillis: DateTime.now().millisecondsSinceEpoch,
|
||||
);
|
||||
|
||||
static BookmarkAddAction fromMap(Map<String, dynamic> map) {
|
||||
return BookmarkAddAction._(
|
||||
static ResourceBookmarkAddAction fromMap(Map<String, dynamic> map) {
|
||||
return ResourceBookmarkAddAction._(
|
||||
resourceId: map['resourceId'],
|
||||
bookmarkName: map['bookmarkName'],
|
||||
createdMillis: map['createdMillis'],
|
||||
@@ -81,5 +86,8 @@ class BookmarkAddAction extends PhylumAction with JsonApiAction, BookmarkAction
|
||||
}
|
||||
|
||||
@override
|
||||
bool dependsOn(PhylumAction action) => action is BookmarkAction && action.resourceId == resourceId;
|
||||
bool dependsOn(PhylumAction action) =>
|
||||
action is ResourceAction &&
|
||||
(action is ResourceCreateAction || action is ResourceBookmarkAddAction || action is ResourceBookmarkRemoveAction) &&
|
||||
action.resourceId == resourceId;
|
||||
}
|
||||
@@ -2,11 +2,14 @@ import 'dart:async';
|
||||
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:offtheline/offtheline.dart';
|
||||
import 'package:phylum/libphylum/actions/bookmark_action.dart';
|
||||
import 'package:phylum/libphylum/db/db.dart';
|
||||
import 'package:phylum/libphylum/phylum_api_types.dart';
|
||||
|
||||
class BookmarkRemoveAction extends PhylumAction with JsonApiAction, BookmarkAction {
|
||||
import 'action_resource.dart';
|
||||
import 'action_resource_bookmark_add.dart';
|
||||
import 'action_resource_create.dart';
|
||||
|
||||
class ResourceBookmarkRemoveAction extends ResourceAction with JsonApiAction {
|
||||
static const kActionName = 'bookmarkRemove';
|
||||
@override
|
||||
String get actionName => kActionName;
|
||||
@@ -17,21 +20,19 @@ class BookmarkRemoveAction extends PhylumAction with JsonApiAction, BookmarkActi
|
||||
@override
|
||||
String get endpoint => '/api/v1/my/bookmarks/remove/$resourceId';
|
||||
|
||||
@override
|
||||
final String resourceId;
|
||||
final String bookmarkName;
|
||||
|
||||
BookmarkRemoveAction._({required this.resourceId, required this.bookmarkName});
|
||||
ResourceBookmarkRemoveAction._({required super.resourceId, required this.bookmarkName});
|
||||
|
||||
BookmarkRemoveAction({
|
||||
ResourceBookmarkRemoveAction({
|
||||
required Resource r,
|
||||
}) : this._(
|
||||
resourceId: r.id,
|
||||
bookmarkName: r.name,
|
||||
);
|
||||
|
||||
static BookmarkRemoveAction fromMap(Map<String, dynamic> map) {
|
||||
return BookmarkRemoveAction._(
|
||||
static ResourceBookmarkRemoveAction fromMap(Map<String, dynamic> map) {
|
||||
return ResourceBookmarkRemoveAction._(
|
||||
resourceId: map['resourceId'],
|
||||
bookmarkName: map['bookmarkName'],
|
||||
);
|
||||
@@ -69,5 +70,8 @@ class BookmarkRemoveAction extends PhylumAction with JsonApiAction, BookmarkActi
|
||||
}
|
||||
|
||||
@override
|
||||
bool dependsOn(PhylumAction action) => action is BookmarkAction && action.resourceId == resourceId;
|
||||
bool dependsOn(PhylumAction action) =>
|
||||
action is ResourceAction &&
|
||||
(action is ResourceCreateAction || action is ResourceBookmarkAddAction || action is ResourceBookmarkRemoveAction) &&
|
||||
action.resourceId == resourceId;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import 'package:phylum/libphylum/phylum_api_types.dart';
|
||||
|
||||
mixin BookmarkAction on PhylumAction {
|
||||
String get resourceId;
|
||||
}
|
||||
@@ -4,12 +4,12 @@ import 'package:phylum/libphylum/actions/action_resource_mkdir.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_move.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_share.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_upload.dart';
|
||||
import 'package:phylum/libphylum/actions/bookmark_add_action.dart';
|
||||
import 'package:phylum/libphylum/actions/bookmark_remove_action.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_bookmark_add.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_bookmark_remove.dart';
|
||||
|
||||
const actionDeserializers = {
|
||||
BookmarkAddAction.kActionName: BookmarkAddAction.fromMap,
|
||||
BookmarkRemoveAction.kActionName: BookmarkRemoveAction.fromMap,
|
||||
ResourceBookmarkAddAction.kActionName: ResourceBookmarkAddAction.fromMap,
|
||||
ResourceBookmarkRemoveAction.kActionName: ResourceBookmarkRemoveAction.fromMap,
|
||||
ResourceCopyAction.kActionName: ResourceCopyAction.fromMap,
|
||||
ResourceDeleteAction.kActionName: ResourceDeleteAction.fromMap,
|
||||
ResourceMkdirAction.kActionName: ResourceMkdirAction.fromMap,
|
||||
|
||||
@@ -6,8 +6,8 @@ import 'package:phylum/integrations/download_manager.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_copy.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_delete.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_move.dart';
|
||||
import 'package:phylum/libphylum/actions/bookmark_add_action.dart';
|
||||
import 'package:phylum/libphylum/actions/bookmark_remove_action.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_bookmark_add.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_bookmark_remove.dart';
|
||||
import 'package:phylum/libphylum/db/db.dart';
|
||||
import 'package:phylum/libphylum/phylum_account.dart';
|
||||
import 'package:phylum/libphylum/util/uuid.dart';
|
||||
@@ -114,16 +114,16 @@ void handleOption(BuildContext context, Iterable<Resource> resources, MenuOption
|
||||
if (name == null || !context.mounted) {
|
||||
return;
|
||||
}
|
||||
account.addAction(BookmarkAddAction(r: r, name: name.isEmpty ? '' : name));
|
||||
account.addAction(ResourceBookmarkAddAction(r: r, name: name.isEmpty ? '' : name));
|
||||
} else {
|
||||
for (final r in resources) {
|
||||
account.addAction(BookmarkAddAction(r: r));
|
||||
account.addAction(ResourceBookmarkAddAction(r: r));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MenuOption.bookmarkRemove:
|
||||
for (final r in resources) {
|
||||
account.addAction(BookmarkRemoveAction(r: r));
|
||||
account.addAction(ResourceBookmarkRemoveAction(r: r));
|
||||
}
|
||||
break;
|
||||
case MenuOption.newFolder:
|
||||
|
||||
Reference in New Issue
Block a user