Quellcode durchsuchen

ManageLink: Show link copy and share option

Neeraj Gupta vor 2 Jahren
Ursprung
Commit
e99b5e0fd7
1 geänderte Dateien mit 56 neuen und 1 gelöschten Zeilen
  1. 56 1
      lib/ui/sharing/manage_links_widget.dart

+ 56 - 1
lib/ui/sharing/manage_links_widget.dart

@@ -2,7 +2,9 @@ import 'dart:convert';
 import 'dart:typed_data';
 import 'dart:typed_data';
 
 
 import 'package:collection/collection.dart';
 import 'package:collection/collection.dart';
+import "package:fast_base58/fast_base58.dart";
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
+import "package:flutter/services.dart";
 import "package:photos/generated/l10n.dart";
 import "package:photos/generated/l10n.dart";
 import "package:photos/models/api/collection/public_url.dart";
 import "package:photos/models/api/collection/public_url.dart";
 import 'package:photos/models/collection.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/date_time_util.dart';
 import 'package:photos/utils/dialog_util.dart';
 import 'package:photos/utils/dialog_util.dart';
 import 'package:photos/utils/navigation_util.dart';
 import 'package:photos/utils/navigation_util.dart';
+import "package:photos/utils/share_util.dart";
 import 'package:photos/utils/toast_util.dart';
 import 'package:photos/utils/toast_util.dart';
 
 
 class ManageSharedLinkWidget extends StatefulWidget {
 class ManageSharedLinkWidget extends StatefulWidget {
@@ -50,6 +53,10 @@ class _ManageSharedLinkWidgetState extends State<ManageSharedLinkWidget> {
         widget.collection!.publicURLs?.firstOrNull?.passwordEnabled ?? false;
         widget.collection!.publicURLs?.firstOrNull?.passwordEnabled ?? false;
     final enteColorScheme = getEnteColorScheme(context);
     final enteColorScheme = getEnteColorScheme(context);
     final PublicURL url = widget.collection!.publicURLs!.firstOrNull!;
     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(
     return Scaffold(
       appBar: AppBar(
       appBar: AppBar(
         elevation: 0,
         elevation: 0,
@@ -226,6 +233,54 @@ class _ManageSharedLinkWidgetState extends State<ManageSharedLinkWidget> {
                   const SizedBox(
                   const SizedBox(
                     height: 24,
                     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(
                   MenuItemWidget(
                     captionedTextWidget: CaptionedTextWidget(
                     captionedTextWidget: CaptionedTextWidget(
                       title: S.of(context).removeLink,
                       title: S.of(context).removeLink,
@@ -243,7 +298,7 @@ class _ManageSharedLinkWidgetState extends State<ManageSharedLinkWidget> {
                       );
                       );
                       if (result && mounted) {
                       if (result && mounted) {
                         Navigator.of(context).pop();
                         Navigator.of(context).pop();
-                        if(widget.collection!.isQuickLinkCollection()) {
+                        if (widget.collection!.isQuickLinkCollection()) {
                           Navigator.of(context).pop();
                           Navigator.of(context).pop();
                         }
                         }
                       }
                       }