[client] Copy/Move to

This commit is contained in:
Abhishek Shroff
2024-11-26 22:04:42 +05:30
parent c7e67667e1
commit 333ac58543
2 changed files with 47 additions and 21 deletions

View File

@@ -8,25 +8,6 @@ import 'package:phylum/libphylum/phylum_account.dart';
import 'package:phylum/libphylum/phylum_api_types.dart';
import 'package:phylum/libphylum/requests/resource_detail_request.dart';
class ResourceAdapter implements TypeAdapter<Resource> {
const ResourceAdapter();
@override
int get typeId => 1;
@override
Resource read(BinaryReader reader) {
reader.readByte();
return Resource.fromJson(json.decode(reader.readString()));
}
@override
void write(BinaryWriter writer, Resource obj) {
writer.writeByte(0); // Version marker, in case we need to change something in the future
writer.writeString(obj.toJsonString());
}
}
class ResourceRepository {
final PhylumAccount account;
late final Box<Resource> _serverDataBox;
@@ -226,3 +207,22 @@ class ResourceRepository {
);
}
}
class ResourceAdapter implements TypeAdapter<Resource> {
const ResourceAdapter();
@override
int get typeId => 1;
@override
Resource read(BinaryReader reader) {
reader.readByte();
return Resource.fromJson(json.decode(reader.readString()));
}
@override
void write(BinaryWriter writer, Resource obj) {
writer.writeByte(0); // Version marker, in case we need to change something in the future
writer.writeString(obj.toJsonString());
}
}

View File

@@ -3,12 +3,14 @@ import 'dart:async';
import 'package:flutter/material.dart';
import 'package:phylum/app_shortcuts.dart';
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/db/db.dart';
import 'package:phylum/libphylum/phylum_account.dart';
import 'package:phylum/libphylum/util/uuid.dart';
import 'package:phylum/ui/common/responsive_dialog.dart';
import 'package:phylum/ui/destination_picker/destination_picker.dart';
import 'package:phylum/ui/explorer/resource_info_view.dart';
@@ -49,10 +51,31 @@ void handleOption(BuildContext context, Iterable<Resource> resources, MenuOption
}
break;
case MenuOption.move:
final parent = resources.firstOrNull?.parent;
if (parent == null) return;
final dest = await DestinationPicker.show(context, parent);
if (dest == null) {
return;
}
for (final r in resources) {
account.addAction(ResourceMoveAction(r: r, parent: dest));
}
break;
case MenuOption.copy:
final parent = resources.firstOrNull?.parent;
if (parent == null) return;
await DestinationPicker.show(context, parent);
final dest = await DestinationPicker.show(context, parent);
if (dest == null) {
return;
}
for (final r in resources) {
account.addAction(ResourceCopyAction(
src: r,
resourceId: generateUuid(),
resourceName: r.name,
parentId: dest,
));
}
break;
case MenuOption.delete:
final name = resources.length == 1 ? resources.first.name : '${resources.length} items';
@@ -68,9 +91,12 @@ void handleOption(BuildContext context, Iterable<Resource> resources, MenuOption
break;
case MenuOption.permissions:
case MenuOption.publinks:
break;
case MenuOption.download:
for (final r in resources) {
context.read<DownloadManager>().downloadResource(r);
if (r.dir) {
context.read<DownloadManager>().downloadResource(r);
}
}
break;
case MenuOption.bookmarkAdd: