From b012fe37ccfc50f39662adb2c49580b64569c73d Mon Sep 17 00:00:00 2001 From: FrigaT Date: Tue, 14 Apr 2026 16:52:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B0=20"=D0=BF?= =?UTF-8?q?=D0=BE=D0=B4=D0=B5=D0=BB=D0=B8=D1=82=D1=8C=D1=81=D1=8F"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/ShareButton.razor | 84 +++++++++++++++++++ .../Pages/SharedPlaylistView.razor | 2 + 2 files changed, 86 insertions(+) create mode 100644 PlaylistShared.Pwa/Components/ShareButton.razor diff --git a/PlaylistShared.Pwa/Components/ShareButton.razor b/PlaylistShared.Pwa/Components/ShareButton.razor new file mode 100644 index 0000000..755b3c7 --- /dev/null +++ b/PlaylistShared.Pwa/Components/ShareButton.razor @@ -0,0 +1,84 @@ +@inject IJSRuntime JS +@inject ISnackbar Snackbar + + + + + + Ссылка для приглашения: +
+ + + Копировать + +
+
+
+ +@code { + private MudIconButton? _buttonRef; + private bool _popoverOpen; + private string _shareUrl = ""; + + /// + /// Ссылка для копирования. Если не указана, используется текущий URL страницы. + /// + [Parameter] public string ShareUrl { get; set; } = string.Empty; + + protected override void OnInitialized() + { + if (string.IsNullOrEmpty(ShareUrl)) + ShareUrl = Navigation.Uri; + } + + protected override void OnParametersSet() + { + if (!string.IsNullOrEmpty(ShareUrl)) + _shareUrl = ShareUrl; + } + + private async Task OpenPopover() + { + if (string.IsNullOrEmpty(ShareUrl)) + { + Snackbar.Add("Ссылка недоступна", Severity.Warning); + return; + } + _shareUrl = ShareUrl; + _popoverOpen = true; + } + + private async Task CopyLink() + { + try + { + await JS.InvokeVoidAsync("navigator.clipboard.writeText", _shareUrl); + Snackbar.Add("Ссылка скопирована в буфер обмена", Severity.Success); + _popoverOpen = false; + } + catch (Exception ex) + { + Snackbar.Add($"Не удалось скопировать ссылку: {ex.Message}", Severity.Error); + } + } +} \ No newline at end of file diff --git a/PlaylistShared.Pwa/Pages/SharedPlaylistView.razor b/PlaylistShared.Pwa/Pages/SharedPlaylistView.razor index 5e4d04a..a63abe8 100644 --- a/PlaylistShared.Pwa/Pages/SharedPlaylistView.razor +++ b/PlaylistShared.Pwa/Pages/SharedPlaylistView.razor @@ -36,6 +36,8 @@ + +