(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 {
assert(platform_k.isAndroid);
try {
final method = await _askShareMethod();
if (method == null) {
@ -69,6 +68,7 @@ class ShareHandler {
}
Future<void> _shareAsFile(Account account, List<File> files) async {
assert(platform_k.isAndroid);
final controller = StreamController<String>();
showDialog(
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/list_extension.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/session_storage.dart';
import 'package:nc_photos/share_handler.dart';
@ -248,14 +247,13 @@ class _AlbumBrowserState extends State<AlbumBrowser>
Widget _buildSelectionAppBar(BuildContext context) {
return buildSelectionAppBar(context, [
if (platform_k.isAndroid)
IconButton(
icon: const Icon(Icons.share),
tooltip: L10n.global().shareTooltip,
onPressed: () {
_onSelectionSharePressed(context);
},
),
IconButton(
icon: const Icon(Icons.share),
tooltip: L10n.global().shareTooltip,
onPressed: () {
_onSelectionSharePressed(context);
},
),
IconButton(
icon: const Icon(Icons.remove),
tooltip: L10n.global().removeSelectedFromAlbumTooltip,
@ -336,7 +334,6 @@ class _AlbumBrowserState extends State<AlbumBrowser>
}
void _onSelectionSharePressed(BuildContext context) {
assert(platform_k.isAndroid);
final selected = selectedListItems
.whereType<_FileListItem>()
.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/k.dart' as k;
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/share_handler.dart';
import 'package:nc_photos/snack_bar_manager.dart';
@ -258,14 +257,13 @@ class _DynamicAlbumBrowserState extends State<DynamicAlbumBrowser>
Widget _buildSelectionAppBar(BuildContext context) {
return buildSelectionAppBar(context, [
if (platform_k.isAndroid)
IconButton(
icon: const Icon(Icons.share),
tooltip: L10n.global().shareTooltip,
onPressed: () {
_onSelectionSharePressed(context);
},
),
IconButton(
icon: const Icon(Icons.share),
tooltip: L10n.global().shareTooltip,
onPressed: () {
_onSelectionSharePressed(context);
},
),
PopupMenuButton<_SelectionMenuOption>(
tooltip: MaterialLocalizations.of(context).moreButtonTooltip,
itemBuilder: (context) => [
@ -389,7 +387,6 @@ class _DynamicAlbumBrowserState extends State<DynamicAlbumBrowser>
}
void _onSelectionSharePressed(BuildContext context) {
assert(platform_k.isAndroid);
final selected = selectedListItems
.whereType<_FileListItem>()
.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/metadata_task_manager.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/primitive.dart';
import 'package:nc_photos/share_handler.dart';
@ -186,14 +185,13 @@ class _HomePhotosState extends State<HomePhotos>
});
},
actions: [
if (platform_k.isAndroid)
IconButton(
icon: const Icon(Icons.share),
tooltip: L10n.global().shareTooltip,
onPressed: () {
_onSelectionSharePressed(context);
},
),
IconButton(
icon: const Icon(Icons.share),
tooltip: L10n.global().shareTooltip,
onPressed: () {
_onSelectionSharePressed(context);
},
),
IconButton(
icon: const Icon(Icons.playlist_add),
tooltip: L10n.global().addToAlbumTooltip,
@ -387,7 +385,6 @@ class _HomePhotosState extends State<HomePhotos>
}
void _onSelectionSharePressed(BuildContext context) {
assert(platform_k.isAndroid);
final selected = selectedListItems
.whereType<_FileListItem>()
.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/k.dart' as k;
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/share_handler.dart';
import 'package:nc_photos/snack_bar_manager.dart';
@ -262,14 +261,13 @@ class _PersonBrowserState extends State<PersonBrowser>
});
},
actions: [
if (platform_k.isAndroid)
IconButton(
icon: const Icon(Icons.share),
tooltip: L10n.global().shareTooltip,
onPressed: () {
_onSelectionSharePressed(context);
},
),
IconButton(
icon: const Icon(Icons.share),
tooltip: L10n.global().shareTooltip,
onPressed: () {
_onSelectionSharePressed(context);
},
),
IconButton(
icon: const Icon(Icons.playlist_add),
tooltip: L10n.global().addToAlbumTooltip,
@ -339,7 +337,6 @@ class _PersonBrowserState extends State<PersonBrowser>
}
void _onSelectionSharePressed(BuildContext context) {
assert(platform_k.isAndroid);
final selected =
selectedListItems.whereType<_ListItem>().map((e) => e.file).toList();
ShareHandler(

View file

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:nc_photos/app_localizations.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
enum ShareMethod {
file,
@ -18,15 +19,16 @@ class ShareMethodDialog extends StatelessWidget {
return SimpleDialog(
title: Text(L10n.global().shareMethodDialogTitle),
children: [
SimpleDialogOption(
child: ListTile(
title: Text(L10n.global().shareMethodFileTitle),
subtitle: Text(L10n.global().shareMethodFileDescription),
if (platform_k.isAndroid)
SimpleDialogOption(
child: ListTile(
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(
child: ListTile(
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/exception_util.dart' as exception_util;
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/share_handler.dart';
import 'package:nc_photos/snack_bar_manager.dart';
@ -183,15 +182,14 @@ class _ViewerState extends State<Viewer>
: const Duration(milliseconds: 1),
child: ViewerBottomAppBar(
children: [
if (platform_k.isAndroid)
IconButton(
icon: Icon(
Icons.share_outlined,
color: Colors.white.withOpacity(.87),
),
tooltip: L10n.global().shareTooltip,
onPressed: () => _onSharePressed(context),
IconButton(
icon: Icon(
Icons.share_outlined,
color: Colors.white.withOpacity(.87),
),
tooltip: L10n.global().shareTooltip,
onPressed: () => _onSharePressed(context),
),
IconButton(
icon: Icon(
Icons.download_outlined,
@ -433,7 +431,6 @@ class _ViewerState extends State<Viewer>
}
void _onSharePressed(BuildContext context) {
assert(platform_k.isAndroid);
final file = widget.streamFiles[_viewerController.currentPage];
ShareHandler(
context: context,