Merge branch 'braid/url-launch-copy' into 'main'

feat: add button to copy url in open dialog

See merge request famedly/fluffychat!1133
This commit is contained in:
Krille-chan 2023-06-29 07:13:30 +00:00
commit a0b9bb277f
1 changed files with 32 additions and 4 deletions

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:adaptive_dialog/adaptive_dialog.dart'; import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:collection/collection.dart' show IterableExtension; import 'package:collection/collection.dart' show IterableExtension;
@ -37,14 +38,36 @@ class UrlLauncher {
); );
return; return;
} }
final consent = await showOkCancelAlertDialog( final consent = await showConfirmationDialog(
context: context, context: context,
title: L10n.of(context)!.openLinkInBrowser, title: L10n.of(context)!.openLinkInBrowser,
message: url, message: url,
okLabel: L10n.of(context)!.ok, actions: [
cancelLabel: L10n.of(context)!.cancel, AlertDialogAction(
key: null,
label: L10n.of(context)!.cancel,
),
AlertDialogAction(
key: _LaunchUrlResponse.copy,
label: L10n.of(context)!.copy,
),
AlertDialogAction(
key: _LaunchUrlResponse.launch,
label: L10n.of(context)!.ok,
),
],
); );
if (consent != OkCancelResult.ok) return; if (consent == _LaunchUrlResponse.copy) {
await Clipboard.setData(ClipboardData(text: uri.toString()));
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(L10n.of(context)!.copiedToClipboard),
),
);
return;
}
if (consent != _LaunchUrlResponse.launch) return;
if (!{'https', 'http'}.contains(uri.scheme)) { if (!{'https', 'http'}.contains(uri.scheme)) {
// just launch non-https / non-http uris directly // just launch non-https / non-http uris directly
@ -215,3 +238,8 @@ class UrlLauncher {
} }
} }
} }
enum _LaunchUrlResponse {
launch,
copy,
}