From 85b253e8ab7dfdd5e10064e5b305e0735bf88bc4 Mon Sep 17 00:00:00 2001 From: Abhishek Shroff Date: Wed, 25 Dec 2024 13:33:00 +0530 Subject: [PATCH] [client] Bring bookmark actions into ResourceAction hierarchy --- ...dart => action_resource_bookmark_add.dart} | 26 ++++++++++++------- ...t => action_resource_bookmark_remove.dart} | 22 +++++++++------- .../libphylum/actions/bookmark_action.dart | 5 ---- .../lib/libphylum/actions/deserializers.dart | 8 +++--- client/lib/ui/menu/menu_option.dart | 10 +++---- 5 files changed, 39 insertions(+), 32 deletions(-) rename client/lib/libphylum/actions/{bookmark_add_action.dart => action_resource_bookmark_add.dart} (70%) rename client/lib/libphylum/actions/{bookmark_remove_action.dart => action_resource_bookmark_remove.dart} (69%) delete mode 100644 client/lib/libphylum/actions/bookmark_action.dart diff --git a/client/lib/libphylum/actions/bookmark_add_action.dart b/client/lib/libphylum/actions/action_resource_bookmark_add.dart similarity index 70% rename from client/lib/libphylum/actions/bookmark_add_action.dart rename to client/lib/libphylum/actions/action_resource_bookmark_add.dart index 67cc1d50..61ff69ea 100644 --- a/client/lib/libphylum/actions/bookmark_add_action.dart +++ b/client/lib/libphylum/actions/action_resource_bookmark_add.dart @@ -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 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 map) { - return BookmarkAddAction._( + static ResourceBookmarkAddAction fromMap(Map 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; } diff --git a/client/lib/libphylum/actions/bookmark_remove_action.dart b/client/lib/libphylum/actions/action_resource_bookmark_remove.dart similarity index 69% rename from client/lib/libphylum/actions/bookmark_remove_action.dart rename to client/lib/libphylum/actions/action_resource_bookmark_remove.dart index 861151eb..3b6df6a4 100644 --- a/client/lib/libphylum/actions/bookmark_remove_action.dart +++ b/client/lib/libphylum/actions/action_resource_bookmark_remove.dart @@ -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 map) { - return BookmarkRemoveAction._( + static ResourceBookmarkRemoveAction fromMap(Map 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; } diff --git a/client/lib/libphylum/actions/bookmark_action.dart b/client/lib/libphylum/actions/bookmark_action.dart deleted file mode 100644 index 58a7f485..00000000 --- a/client/lib/libphylum/actions/bookmark_action.dart +++ /dev/null @@ -1,5 +0,0 @@ -import 'package:phylum/libphylum/phylum_api_types.dart'; - -mixin BookmarkAction on PhylumAction { - String get resourceId; -} diff --git a/client/lib/libphylum/actions/deserializers.dart b/client/lib/libphylum/actions/deserializers.dart index 1a196478..26e3b03b 100644 --- a/client/lib/libphylum/actions/deserializers.dart +++ b/client/lib/libphylum/actions/deserializers.dart @@ -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, diff --git a/client/lib/ui/menu/menu_option.dart b/client/lib/ui/menu/menu_option.dart index c45c8b29..e908213d 100644 --- a/client/lib/ui/menu/menu_option.dart +++ b/client/lib/ui/menu/menu_option.dart @@ -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 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: