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/services.dart';
import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:collection/collection.dart' show IterableExtension;
@ -37,14 +38,36 @@ class UrlLauncher {
);
return;
}
final consent = await showOkCancelAlertDialog(
final consent = await showConfirmationDialog(
context: context,
title: L10n.of(context)!.openLinkInBrowser,
message: url,
okLabel: L10n.of(context)!.ok,
cancelLabel: L10n.of(context)!.cancel,
actions: [
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)) {
// just launch non-https / non-http uris directly
@ -215,3 +238,8 @@ class UrlLauncher {
}
}
}
enum _LaunchUrlResponse {
launch,
copy,
}