1
0
Fork 0
mirror of https://gitlab.com/nkming2/nc-photos.git synced 2025-03-10 17:28:56 +01:00

(Web) Allow sharing as links

This commit is contained in:
Ming Ming 2021-10-09 16:42:18 +08:00
parent 5e100d1586
commit a37697f7be
7 changed files with 46 additions and 59 deletions

View file

@ -37,7 +37,6 @@ class ShareHandler {
}); });
Future<void> shareFiles(Account account, List<File> files) async { Future<void> shareFiles(Account account, List<File> files) async {
assert(platform_k.isAndroid);
try { try {
final method = await _askShareMethod(); final method = await _askShareMethod();
if (method == null) { if (method == null) {
@ -69,6 +68,7 @@ class ShareHandler {
} }
Future<void> _shareAsFile(Account account, List<File> files) async { Future<void> _shareAsFile(Account account, List<File> files) async {
assert(platform_k.isAndroid);
final controller = StreamController<String>(); final controller = StreamController<String>();
showDialog( showDialog(
context: context, context: context,

View file

@ -18,7 +18,6 @@ import 'package:nc_photos/exception_util.dart' as exception_util;
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/list_extension.dart'; import 'package:nc_photos/list_extension.dart';
import 'package:nc_photos/or_null.dart'; import 'package:nc_photos/or_null.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/pref.dart'; import 'package:nc_photos/pref.dart';
import 'package:nc_photos/session_storage.dart'; import 'package:nc_photos/session_storage.dart';
import 'package:nc_photos/share_handler.dart'; import 'package:nc_photos/share_handler.dart';
@ -248,14 +247,13 @@ class _AlbumBrowserState extends State<AlbumBrowser>
Widget _buildSelectionAppBar(BuildContext context) { Widget _buildSelectionAppBar(BuildContext context) {
return buildSelectionAppBar(context, [ return buildSelectionAppBar(context, [
if (platform_k.isAndroid) IconButton(
IconButton( icon: const Icon(Icons.share),
icon: const Icon(Icons.share), tooltip: L10n.global().shareTooltip,
tooltip: L10n.global().shareTooltip, onPressed: () {
onPressed: () { _onSelectionSharePressed(context);
_onSelectionSharePressed(context); },
}, ),
),
IconButton( IconButton(
icon: const Icon(Icons.remove), icon: const Icon(Icons.remove),
tooltip: L10n.global().removeSelectedFromAlbumTooltip, tooltip: L10n.global().removeSelectedFromAlbumTooltip,
@ -336,7 +334,6 @@ class _AlbumBrowserState extends State<AlbumBrowser>
} }
void _onSelectionSharePressed(BuildContext context) { void _onSelectionSharePressed(BuildContext context) {
assert(platform_k.isAndroid);
final selected = selectedListItems final selected = selectedListItems
.whereType<_FileListItem>() .whereType<_FileListItem>()
.map((e) => e.file) .map((e) => e.file)

View file

@ -21,7 +21,6 @@ import 'package:nc_photos/exception_util.dart' as exception_util;
import 'package:nc_photos/iterable_extension.dart'; import 'package:nc_photos/iterable_extension.dart';
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/or_null.dart'; import 'package:nc_photos/or_null.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/pref.dart'; import 'package:nc_photos/pref.dart';
import 'package:nc_photos/share_handler.dart'; import 'package:nc_photos/share_handler.dart';
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
@ -258,14 +257,13 @@ class _DynamicAlbumBrowserState extends State<DynamicAlbumBrowser>
Widget _buildSelectionAppBar(BuildContext context) { Widget _buildSelectionAppBar(BuildContext context) {
return buildSelectionAppBar(context, [ return buildSelectionAppBar(context, [
if (platform_k.isAndroid) IconButton(
IconButton( icon: const Icon(Icons.share),
icon: const Icon(Icons.share), tooltip: L10n.global().shareTooltip,
tooltip: L10n.global().shareTooltip, onPressed: () {
onPressed: () { _onSelectionSharePressed(context);
_onSelectionSharePressed(context); },
}, ),
),
PopupMenuButton<_SelectionMenuOption>( PopupMenuButton<_SelectionMenuOption>(
tooltip: MaterialLocalizations.of(context).moreButtonTooltip, tooltip: MaterialLocalizations.of(context).moreButtonTooltip,
itemBuilder: (context) => [ itemBuilder: (context) => [
@ -389,7 +387,6 @@ class _DynamicAlbumBrowserState extends State<DynamicAlbumBrowser>
} }
void _onSelectionSharePressed(BuildContext context) { void _onSelectionSharePressed(BuildContext context) {
assert(platform_k.isAndroid);
final selected = selectedListItems final selected = selectedListItems
.whereType<_FileListItem>() .whereType<_FileListItem>()
.map((e) => e.file) .map((e) => e.file)

View file

@ -26,7 +26,6 @@ import 'package:nc_photos/iterable_extension.dart';
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/metadata_task_manager.dart'; import 'package:nc_photos/metadata_task_manager.dart';
import 'package:nc_photos/notified_action.dart'; import 'package:nc_photos/notified_action.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/pref.dart'; import 'package:nc_photos/pref.dart';
import 'package:nc_photos/primitive.dart'; import 'package:nc_photos/primitive.dart';
import 'package:nc_photos/share_handler.dart'; import 'package:nc_photos/share_handler.dart';
@ -186,14 +185,13 @@ class _HomePhotosState extends State<HomePhotos>
}); });
}, },
actions: [ actions: [
if (platform_k.isAndroid) IconButton(
IconButton( icon: const Icon(Icons.share),
icon: const Icon(Icons.share), tooltip: L10n.global().shareTooltip,
tooltip: L10n.global().shareTooltip, onPressed: () {
onPressed: () { _onSelectionSharePressed(context);
_onSelectionSharePressed(context); },
}, ),
),
IconButton( IconButton(
icon: const Icon(Icons.playlist_add), icon: const Icon(Icons.playlist_add),
tooltip: L10n.global().addToAlbumTooltip, tooltip: L10n.global().addToAlbumTooltip,
@ -387,7 +385,6 @@ class _HomePhotosState extends State<HomePhotos>
} }
void _onSelectionSharePressed(BuildContext context) { void _onSelectionSharePressed(BuildContext context) {
assert(platform_k.isAndroid);
final selected = selectedListItems final selected = selectedListItems
.whereType<_FileListItem>() .whereType<_FileListItem>()
.map((e) => e.file) .map((e) => e.file)

View file

@ -25,7 +25,6 @@ import 'package:nc_photos/exception_util.dart' as exception_util;
import 'package:nc_photos/iterable_extension.dart'; import 'package:nc_photos/iterable_extension.dart';
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/notified_action.dart'; import 'package:nc_photos/notified_action.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/pref.dart'; import 'package:nc_photos/pref.dart';
import 'package:nc_photos/share_handler.dart'; import 'package:nc_photos/share_handler.dart';
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
@ -262,14 +261,13 @@ class _PersonBrowserState extends State<PersonBrowser>
}); });
}, },
actions: [ actions: [
if (platform_k.isAndroid) IconButton(
IconButton( icon: const Icon(Icons.share),
icon: const Icon(Icons.share), tooltip: L10n.global().shareTooltip,
tooltip: L10n.global().shareTooltip, onPressed: () {
onPressed: () { _onSelectionSharePressed(context);
_onSelectionSharePressed(context); },
}, ),
),
IconButton( IconButton(
icon: const Icon(Icons.playlist_add), icon: const Icon(Icons.playlist_add),
tooltip: L10n.global().addToAlbumTooltip, tooltip: L10n.global().addToAlbumTooltip,
@ -339,7 +337,6 @@ class _PersonBrowserState extends State<PersonBrowser>
} }
void _onSelectionSharePressed(BuildContext context) { void _onSelectionSharePressed(BuildContext context) {
assert(platform_k.isAndroid);
final selected = final selected =
selectedListItems.whereType<_ListItem>().map((e) => e.file).toList(); selectedListItems.whereType<_ListItem>().map((e) => e.file).toList();
ShareHandler( ShareHandler(

View file

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:nc_photos/app_localizations.dart'; import 'package:nc_photos/app_localizations.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
enum ShareMethod { enum ShareMethod {
file, file,
@ -18,15 +19,16 @@ class ShareMethodDialog extends StatelessWidget {
return SimpleDialog( return SimpleDialog(
title: Text(L10n.global().shareMethodDialogTitle), title: Text(L10n.global().shareMethodDialogTitle),
children: [ children: [
SimpleDialogOption( if (platform_k.isAndroid)
child: ListTile( SimpleDialogOption(
title: Text(L10n.global().shareMethodFileTitle), child: ListTile(
subtitle: Text(L10n.global().shareMethodFileDescription), title: Text(L10n.global().shareMethodFileTitle),
subtitle: Text(L10n.global().shareMethodFileDescription),
),
onPressed: () {
Navigator.of(context).pop(ShareMethod.file);
},
), ),
onPressed: () {
Navigator.of(context).pop(ShareMethod.file);
},
),
SimpleDialogOption( SimpleDialogOption(
child: ListTile( child: ListTile(
title: Text(L10n.global().shareMethodPublicLinkTitle), title: Text(L10n.global().shareMethodPublicLinkTitle),

View file

@ -16,7 +16,6 @@ import 'package:nc_photos/entity/file/data_source.dart';
import 'package:nc_photos/entity/file_util.dart' as file_util; import 'package:nc_photos/entity/file_util.dart' as file_util;
import 'package:nc_photos/exception_util.dart' as exception_util; import 'package:nc_photos/exception_util.dart' as exception_util;
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/pref.dart'; import 'package:nc_photos/pref.dart';
import 'package:nc_photos/share_handler.dart'; import 'package:nc_photos/share_handler.dart';
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
@ -183,15 +182,14 @@ class _ViewerState extends State<Viewer>
: const Duration(milliseconds: 1), : const Duration(milliseconds: 1),
child: ViewerBottomAppBar( child: ViewerBottomAppBar(
children: [ children: [
if (platform_k.isAndroid) IconButton(
IconButton( icon: Icon(
icon: Icon( Icons.share_outlined,
Icons.share_outlined, color: Colors.white.withOpacity(.87),
color: Colors.white.withOpacity(.87),
),
tooltip: L10n.global().shareTooltip,
onPressed: () => _onSharePressed(context),
), ),
tooltip: L10n.global().shareTooltip,
onPressed: () => _onSharePressed(context),
),
IconButton( IconButton(
icon: Icon( icon: Icon(
Icons.download_outlined, Icons.download_outlined,
@ -433,7 +431,6 @@ class _ViewerState extends State<Viewer>
} }
void _onSharePressed(BuildContext context) { void _onSharePressed(BuildContext context) {
assert(platform_k.isAndroid);
final file = widget.streamFiles[_viewerController.currentPage]; final file = widget.streamFiles[_viewerController.currentPage];
ShareHandler( ShareHandler(
context: context, context: context,