[client] First pass at resource name change

This commit is contained in:
Abhishek Shroff
2024-12-17 20:41:08 +05:30
parent 149219a446
commit 3fe3d9e2b3
8 changed files with 55 additions and 8 deletions

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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) ||

View File

@@ -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);
}

View File

@@ -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<PhylumActionQueue>().editAction(action, offlineAction.copyWithResourceName(name));
}),
IconButton(icon: const Icon(Icons.refresh), tooltip: 'Retry', onPressed: () => context.read<PhylumActionQueue>().retryAction(action.id)),
IconButton(icon: const Icon(Icons.block), tooltip: 'Delete', onPressed: () => context.read<PhylumActionQueue>().deleteAction(action.id)),

View File

@@ -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"

View File

@@ -23,7 +23,7 @@ dependencies:
offtheline:
git:
url: https://codeberg.org/shroff/offtheline.git
ref: bf58934191bef731d7e75081351fb59a9abf8595
ref: a9da8779e0ee602d132010a945d9023f071c0ff1
open_file:
path:
path_provider: