public static async Task ShareAsync(SharedEntryType type, [CanBeNull] string defaultName, [CanBeNull] string target, [NotNull] byte[] data) { if (_sharingInProcess) return; _sharingInProcess = true; try { var contentName = defaultName; if (!SettingsHolder.Sharing.ShareWithoutName) { contentName = Prompt.Show(ControlsStrings.Share_EnterName, ControlsStrings.Share_EnterNameHeader, defaultName, ToolsStrings.Common_None, maxLength: 60); if (contentName == null) return; // cancelled if (string.IsNullOrWhiteSpace(contentName)) { contentName = null; } } string id = null; if (SettingsHolder.Sharing.CustomIds) { id = Prompt.Show(ControlsStrings.Share_EnterCustomId, ControlsStrings.Share_EnterCustomIdHeader, "", ToolsStrings.Common_None, maxLength: 200)?.Trim(); if (id == null) return; // cancelled if (string.IsNullOrWhiteSpace(id)) { id = null; } } var authorName = SettingsHolder.Sharing.ShareAnonymously ? null : SettingsHolder.Sharing.SharingName; if (SettingsHolder.Sharing.VerifyBeforeSharing && ModernDialog.ShowMessage( string.Format(ControlsStrings.Share_VerifyMessage, authorName ?? @"?", contentName ?? @"?", type.GetDescription()), ControlsStrings.Share_VerifyMessageHeader, MessageBoxButton.YesNo) != MessageBoxResult.Yes) { return; } string link; using (var waiting = new WaitingDialog()) { waiting.Report(ControlsStrings.Share_InProgress); link = await SharingHelper.ShareAsync(type, contentName, target, data, id, waiting.CancellationToken); if (link == null) return; } ShowShared(type, link); await Task.Delay(2000); #if WIN10_SHARE try { var dataTransferManager = DataTransferManager.GetForCurrentView(); dataTransferManager.DataRequested += OnDataRequested; DataTransferManager.ShowShareUI(); } catch (Exception e) { Logging.Warning("DataTransferManager exception: " + e); } #endif } catch (Exception e) { NonfatalError.Notify(string.Format(ControlsStrings.Share_CannotShare, type.GetDescription()), ToolsStrings.Common_CannotDownloadFile_Commentary, e); } finally { _sharingInProcess = false; } }
public static async Task ShareAsync(SharedEntryType type, [CanBeNull] string defaultName, [CanBeNull] string target, [NotNull] byte[] data) { if (_sharingInProcess) { return; } _sharingInProcess = true; try { var contentName = defaultName; if (!SettingsHolder.Sharing.ShareWithoutName) { contentName = Prompt.Show(ControlsStrings.Share_EnterName, ControlsStrings.Share_EnterNameHeader, defaultName, ToolsStrings.Common_None, maxLength: 60); if (contentName == null) { return; // cancelled } if (string.IsNullOrWhiteSpace(contentName)) { contentName = null; } } string id = null; if (SettingsHolder.Sharing.CustomIds) { id = Prompt.Show(ControlsStrings.Share_EnterCustomId, ControlsStrings.Share_EnterCustomIdHeader, "", ToolsStrings.Common_None, maxLength: 200)?.Trim(); if (id == null) { return; // cancelled } if (string.IsNullOrWhiteSpace(id)) { id = null; } } var authorName = SettingsHolder.Sharing.ShareAnonymously ? null : SettingsHolder.Sharing.SharingName; if (SettingsHolder.Sharing.VerifyBeforeSharing && ModernDialog.ShowMessage( string.Format(ControlsStrings.Share_VerifyMessage, authorName ?? @"?", contentName ?? @"?", type.GetDescription()), ControlsStrings.Share_VerifyMessageHeader, MessageBoxButton.YesNo) != MessageBoxResult.Yes) { return; } string link; using (var waiting = new WaitingDialog()) { waiting.Report(ControlsStrings.Share_InProgress); link = await SharingHelper.ShareAsync(type, contentName, target, data, id, waiting.CancellationToken); if (link == null) { return; } } ShowShared(type, link); await Task.Delay(2000); } catch (Exception e) { NonfatalError.Notify(string.Format(ControlsStrings.Share_CannotShare, type.GetDescription()), ToolsStrings.Common_CannotDownloadFile_Commentary, e); } finally { _sharingInProcess = false; } }
public static void ShowShared(SharedEntryType type, string link) { ShowShared(type.GetDescription(), link); }
public static void ShowShared(SharedEntryType type, string link) { if (SettingsHolder.Sharing.CopyLinkToClipboard) { Clipboard.SetText(link); } Toast.Show(string.Format(ControlsStrings.Share_Shared, type.GetDescription().ToTitle()), SettingsHolder.Sharing.CopyLinkToClipboard ? ControlsStrings.Share_SharedMessage : ControlsStrings.Share_SharedMessageAlternative, () => { Process.Start(link + "#noauto"); }); }