From 9ef85c69a7fb3d6b93c3d3cbd27aa872f26d915e Mon Sep 17 00:00:00 2001 From: mathru Date: Tue, 20 Dec 2022 23:26:26 +0900 Subject: [PATCH] feat: Added Picker-Storage linkage. --- packages/masamune/lib/masamune.dart | 3 ++- packages/masamune/lib/storage/storage.dart | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 packages/masamune/lib/storage/storage.dart diff --git a/packages/masamune/lib/masamune.dart b/packages/masamune/lib/masamune.dart index 70ebe7acb..33d4ede62 100644 --- a/packages/masamune/lib/masamune.dart +++ b/packages/masamune/lib/masamune.dart @@ -17,8 +17,8 @@ export 'package:katana_form/katana_form.dart'; export 'package:katana_indicator/katana_indicator.dart'; export 'package:katana_listenables/katana_listenables.dart'; export 'package:katana_localization/katana_localization.dart'; -export 'package:katana_picker/katana_picker.dart'; export 'package:katana_model/katana_model.dart'; +export 'package:katana_picker/katana_picker.dart'; export 'package:katana_router/katana_router.dart'; export 'package:katana_scoped/katana_scoped.dart'; export 'package:katana_shorten/katana_shorten.dart'; @@ -30,5 +30,6 @@ export 'package:meta/meta.dart' show useResult; part 'form/form_scoped_widget.dart'; part 'model/model.dart'; +part 'storage/storage.dart'; part 'scoped/controller.dart'; part 'src/masamune_app.dart'; diff --git a/packages/masamune/lib/storage/storage.dart b/packages/masamune/lib/storage/storage.dart new file mode 100644 index 000000000..b374cf9c0 --- /dev/null +++ b/packages/masamune/lib/storage/storage.dart @@ -0,0 +1,18 @@ +part of masamune; + +extension MasamunePickerUploaderAppRefExtensions on PickerValue { + Future upload({String dirPath = ""}) async { + if (path.isEmpty) { + throw Exception("[path] was not found."); + } + final remoteFile = path!.trimQuery().trimStringRight("/").last(); + final extension = remoteFile.last(separator: "."); + final storage = Storage( + StorageQuery( + "$dirPath/$uuid.$extension".trimQuery().trimStringLeft("/"), + ), + ); + await storage.upload(path!); + return await storage.publicURI; + } +}