mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-02 06:46:22 +01:00
(Web) Allow sharing as links
This commit is contained in:
parent
5e100d1586
commit
a37697f7be
7 changed files with 46 additions and 59 deletions
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue