From 3fe3d9e2b3624792579ef4981d925668aa5ea45b Mon Sep 17 00:00:00 2001 From: Abhishek Shroff Date: Tue, 17 Dec 2024 20:41:08 +0530 Subject: [PATCH] [client] First pass at resource name change --- .../lib/libphylum/actions/action_resource_bind.dart | 2 ++ .../lib/libphylum/actions/action_resource_copy.dart | 12 ++++++++++++ .../lib/libphylum/actions/action_resource_mkdir.dart | 9 +++++++++ .../lib/libphylum/actions/action_resource_move.dart | 11 +++++++++++ .../libphylum/actions/action_resource_upload.dart | 12 ++++++++++++ client/lib/ui/sync/action_view.dart | 7 +++++-- client/pubspec.lock | 8 +++----- client/pubspec.yaml | 2 +- 8 files changed, 55 insertions(+), 8 deletions(-) diff --git a/client/lib/libphylum/actions/action_resource_bind.dart b/client/lib/libphylum/actions/action_resource_bind.dart index 30375b44..02f76235 100644 --- a/client/lib/libphylum/actions/action_resource_bind.dart +++ b/client/lib/libphylum/actions/action_resource_bind.dart @@ -3,4 +3,6 @@ import 'package:phylum/libphylum/phylum_api_types.dart'; mixin ResourceBindAction on PhylumAction { String get parent; String get resourceName; + + ResourceBindAction copyWithResourceName(String resourceName); } diff --git a/client/lib/libphylum/actions/action_resource_copy.dart b/client/lib/libphylum/actions/action_resource_copy.dart index bdb7ed13..ddef33e3 100644 --- a/client/lib/libphylum/actions/action_resource_copy.dart +++ b/client/lib/libphylum/actions/action_resource_copy.dart @@ -102,6 +102,18 @@ class ResourceCopyAction extends PhylumAction with JsonApiAction, ResourceCreate } } + @override + ResourceBindAction copyWithResourceName(String resourceName) { + return ResourceCopyAction._( + srcId: srcId, + resourceId: resourceId, + resourceName: resourceName, + parent: parent, + dir: dir, + description: description, + ); + } + @override bool dependsOn(PhylumAction action) => action is ResourceCreateAction && action.resourceId == parent; } diff --git a/client/lib/libphylum/actions/action_resource_mkdir.dart b/client/lib/libphylum/actions/action_resource_mkdir.dart index dd9750c2..1c696e39 100644 --- a/client/lib/libphylum/actions/action_resource_mkdir.dart +++ b/client/lib/libphylum/actions/action_resource_mkdir.dart @@ -75,6 +75,15 @@ class ResourceMkdirAction extends PhylumAction with JsonApiAction, ResourceCreat } } + @override + ResourceBindAction copyWithResourceName(String resourceName) { + return ResourceMkdirAction( + resourceId: resourceId, + parent: parent, + resourceName: resourceName, + ); + } + @override bool dependsOn(PhylumAction action) => action is ResourceMkdirAction && action.resourceId == parent; } diff --git a/client/lib/libphylum/actions/action_resource_move.dart b/client/lib/libphylum/actions/action_resource_move.dart index 84b800e9..a49617dc 100644 --- a/client/lib/libphylum/actions/action_resource_move.dart +++ b/client/lib/libphylum/actions/action_resource_move.dart @@ -115,6 +115,17 @@ class ResourceMoveAction extends PhylumAction with JsonApiAction, ResourceBindAc } } + @override + ResourceBindAction copyWithResourceName(String resourceName) { + return ResourceMoveAction._( + resourceId: resourceId, + parent: parent, + resourceName: resourceName, + modified: modified, + description: description, + ); + } + @override bool dependsOn(PhylumAction action) => (action is ResourceCreateAction && action.resourceId == resourceId) || diff --git a/client/lib/libphylum/actions/action_resource_upload.dart b/client/lib/libphylum/actions/action_resource_upload.dart index 8b884f4d..112fea10 100644 --- a/client/lib/libphylum/actions/action_resource_upload.dart +++ b/client/lib/libphylum/actions/action_resource_upload.dart @@ -111,6 +111,18 @@ class ResourceUploadAction extends PhylumAction with FileUploadApiAction, Resour } } + @override + ResourceBindAction copyWithResourceName(String resourceName) { + return ResourceUploadAction._( + resourceId: resourceId, + parent: parent, + resourceName: resourceName, + path: path, + size: size, + contentType: contentType, + ); + } + @override bool dependsOn(PhylumAction action) => (action is ResourceCreateAction && action.resourceId == parent); } diff --git a/client/lib/ui/sync/action_view.dart b/client/lib/ui/sync/action_view.dart index a2c1f5b5..06f43080 100644 --- a/client/lib/ui/sync/action_view.dart +++ b/client/lib/ui/sync/action_view.dart @@ -59,10 +59,13 @@ class ActionView extends StatelessWidget { icon: const Icon(Icons.edit), tooltip: 'Rename', onPressed: () async { - final preset = (action.action is ResourceBindAction) ? (action.action as ResourceBindAction).resourceName : null; + final offlineAction = action.action; + if (offlineAction is! ResourceBindAction) return; + final preset = offlineAction.resourceName; final name = await showInputDialog(context, title: 'Edit Name', preset: preset, capitalization: TextCapitalization.words, validate: (name) => name.trim().isNotEmpty); - if (name == null) return; + if (name == null || !context.mounted) return; + context.read().editAction(action, offlineAction.copyWithResourceName(name)); }), IconButton(icon: const Icon(Icons.refresh), tooltip: 'Retry', onPressed: () => context.read().retryAction(action.id)), IconButton(icon: const Icon(Icons.block), tooltip: 'Delete', onPressed: () => context.read().deleteAction(action.id)), diff --git a/client/pubspec.lock b/client/pubspec.lock index 1ed8c1d2..1fc1e39e 100644 --- a/client/pubspec.lock +++ b/client/pubspec.lock @@ -584,11 +584,9 @@ packages: offtheline: dependency: "direct main" description: - path: "." - ref: bf58934191bef731d7e75081351fb59a9abf8595 - resolved-ref: bf58934191bef731d7e75081351fb59a9abf8595 - url: "https://codeberg.org/shroff/offtheline.git" - source: git + path: "../../offtheline" + relative: true + source: path version: "0.16.0" open_file: dependency: "direct main" diff --git a/client/pubspec.yaml b/client/pubspec.yaml index fb89807e..f83bde1f 100644 --- a/client/pubspec.yaml +++ b/client/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: offtheline: git: url: https://codeberg.org/shroff/offtheline.git - ref: bf58934191bef731d7e75081351fb59a9abf8595 + ref: a9da8779e0ee602d132010a945d9023f071c0ff1 open_file: path: path_provider: