diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index db834a4..221734f 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -60,6 +60,10 @@ + + + + diff --git a/lib/app/content/content.dart b/lib/app/content/content.dart index e820db3..c32c014 100644 --- a/lib/app/content/content.dart +++ b/lib/app/content/content.dart @@ -314,6 +314,17 @@ class _AppContentState extends State { onSelect: () { SaveFile.downloadAndSave(context, entry.value); }), + MenuItem( + text: "Поделиться", + onSelect: () async { + final file = await SaveFile.downloadAndSaveTmp(entry.value); + final mime = lookupMimeType(entry.value); + Share.shareFiles( + [file.path], + mimeTypes: mime != null ? [mime] : null, + ); + }, + ) ]); return GestureDetector( onLongPress: () { diff --git a/lib/app/extensions/youtube/player.dart b/lib/app/extensions/youtube/player.dart index 867ca77..6f4f495 100644 --- a/lib/app/extensions/youtube/player.dart +++ b/lib/app/extensions/youtube/player.dart @@ -96,7 +96,7 @@ class _AppYouTubePlayerState extends State shouldOverrideUrlLoading: (controller, request) async { _webView.evaluateJavascript( source: - 'document.querySelector(\'iframe\')).contentWindow.postMessage({ type: \'pause\'}, \'*\');'); + "document.querySelector('iframe').contentWindow.postMessage({ type: 'pause'}, '*');"); canLaunch(request.request.url.toString()).then((value) => value ? launch(request.request.url.toString()) diff --git a/lib/core/common/save-file.dart b/lib/core/common/save-file.dart index f16ae66..1f40e3b 100644 --- a/lib/core/common/save-file.dart +++ b/lib/core/common/save-file.dart @@ -13,7 +13,8 @@ import 'notifications-manager.dart'; import 'snack-bar.dart'; class SaveFile { - static Future _saveToDir(String filePath, Uint8List data, { bool checkPermissions = false }) async { + static Future _saveToDir(String filePath, Uint8List data, + {bool checkPermissions = false}) async { if (checkPermissions && !(await Permission.storage.isGranted)) { final status = await Permission.storage.request(); if (status != PermissionStatus.granted) { @@ -91,4 +92,10 @@ class SaveFile { return _saveToDir(filePath, file, checkPermissions: false); } + + static Future downloadAndSaveTmp(String url) async { + final dir = await getTemporaryDirectory(); + String fileName = Uri.decodeComponent(url.split('/').last); + return downloadAndSaveExternal(url, "${dir.path}/$fileName"); + } } diff --git a/pubspec.yaml b/pubspec.yaml index d336a0b..e6df729 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: reactor description: JoyReactor client. -version: 0.7.7 +version: 0.7.8 environment: sdk: '>=2.14.0 <3.0.0'