|
@@ -2,7 +2,9 @@ import 'dart:convert';
|
|
|
import 'dart:typed_data';
|
|
|
|
|
|
import 'package:collection/collection.dart';
|
|
|
+import "package:fast_base58/fast_base58.dart";
|
|
|
import 'package:flutter/material.dart';
|
|
|
+import "package:flutter/services.dart";
|
|
|
import "package:photos/generated/l10n.dart";
|
|
|
import "package:photos/models/api/collection/public_url.dart";
|
|
|
import 'package:photos/models/collection.dart';
|
|
@@ -20,6 +22,7 @@ import 'package:photos/utils/crypto_util.dart';
|
|
|
import 'package:photos/utils/date_time_util.dart';
|
|
|
import 'package:photos/utils/dialog_util.dart';
|
|
|
import 'package:photos/utils/navigation_util.dart';
|
|
|
+import "package:photos/utils/share_util.dart";
|
|
|
import 'package:photos/utils/toast_util.dart';
|
|
|
|
|
|
class ManageSharedLinkWidget extends StatefulWidget {
|
|
@@ -50,6 +53,10 @@ class _ManageSharedLinkWidgetState extends State<ManageSharedLinkWidget> {
|
|
|
widget.collection!.publicURLs?.firstOrNull?.passwordEnabled ?? false;
|
|
|
final enteColorScheme = getEnteColorScheme(context);
|
|
|
final PublicURL url = widget.collection!.publicURLs!.firstOrNull!;
|
|
|
+ final String collectionKey = Base58Encode(
|
|
|
+ CollectionsService.instance.getCollectionKey(widget.collection!.id),
|
|
|
+ );
|
|
|
+ final String urlValue = "${url.url}#$collectionKey";
|
|
|
return Scaffold(
|
|
|
appBar: AppBar(
|
|
|
elevation: 0,
|
|
@@ -226,6 +233,54 @@ class _ManageSharedLinkWidgetState extends State<ManageSharedLinkWidget> {
|
|
|
const SizedBox(
|
|
|
height: 24,
|
|
|
),
|
|
|
+ if (url.isExpired)
|
|
|
+ MenuItemWidget(
|
|
|
+ captionedTextWidget: CaptionedTextWidget(
|
|
|
+ title: S.of(context).linkHasExpired,
|
|
|
+ textColor: getEnteColorScheme(context).warning500,
|
|
|
+ ),
|
|
|
+ leadingIcon: Icons.error_outline,
|
|
|
+ leadingIconColor: getEnteColorScheme(context).warning500,
|
|
|
+ menuItemColor: getEnteColorScheme(context).fillFaint,
|
|
|
+ isBottomBorderRadiusRemoved: true,
|
|
|
+ ),
|
|
|
+ if (!url.isExpired)
|
|
|
+ MenuItemWidget(
|
|
|
+ captionedTextWidget: CaptionedTextWidget(
|
|
|
+ title: S.of(context).copyLink,
|
|
|
+ makeTextBold: true,
|
|
|
+ ),
|
|
|
+ leadingIcon: Icons.copy,
|
|
|
+ menuItemColor: getEnteColorScheme(context).fillFaint,
|
|
|
+ showOnlyLoadingState: true,
|
|
|
+ onTap: () async {
|
|
|
+ await Clipboard.setData(ClipboardData(text: urlValue));
|
|
|
+ showShortToast(
|
|
|
+ context, S.of(context).linkCopiedToClipboard);
|
|
|
+ },
|
|
|
+ isBottomBorderRadiusRemoved: true,
|
|
|
+ ),
|
|
|
+ if (!url.isExpired)
|
|
|
+ DividerWidget(
|
|
|
+ dividerType: DividerType.menu,
|
|
|
+ bgColor: getEnteColorScheme(context).fillFaint,
|
|
|
+ ),
|
|
|
+ if (!url.isExpired)
|
|
|
+ MenuItemWidget(
|
|
|
+ captionedTextWidget: CaptionedTextWidget(
|
|
|
+ title: S.of(context).sendLink,
|
|
|
+ makeTextBold: true,
|
|
|
+ ),
|
|
|
+ leadingIcon: Icons.adaptive.share,
|
|
|
+ menuItemColor: getEnteColorScheme(context).fillFaint,
|
|
|
+ onTap: () async {
|
|
|
+ shareText(urlValue);
|
|
|
+ },
|
|
|
+ isTopBorderRadiusRemoved: true,
|
|
|
+ ),
|
|
|
+ const SizedBox(
|
|
|
+ height: 24,
|
|
|
+ ),
|
|
|
MenuItemWidget(
|
|
|
captionedTextWidget: CaptionedTextWidget(
|
|
|
title: S.of(context).removeLink,
|
|
@@ -243,7 +298,7 @@ class _ManageSharedLinkWidgetState extends State<ManageSharedLinkWidget> {
|
|
|
);
|
|
|
if (result && mounted) {
|
|
|
Navigator.of(context).pop();
|
|
|
- if(widget.collection!.isQuickLinkCollection()) {
|
|
|
+ if (widget.collection!.isQuickLinkCollection()) {
|
|
|
Navigator.of(context).pop();
|
|
|
}
|
|
|
}
|