diff --git a/FoxTube/Classes/Methods.cs b/FoxTube/Classes/Methods.cs
index bd39395..fef6a3f 100644
--- a/FoxTube/Classes/Methods.cs
+++ b/FoxTube/Classes/Methods.cs
@@ -7,6 +7,9 @@ using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using Windows.ApplicationModel.Core;
+using Windows.ApplicationModel.DataTransfer;
+using Windows.Storage;
+using Windows.Storage.Streams;
using Windows.System;
using Windows.UI;
using Windows.UI.Xaml;
@@ -234,5 +237,29 @@ namespace FoxTube
await Launcher.LaunchUriAsync(new Uri(url));
}
}
+
+ public static async void Share(DataRequestedEventArgs args, string thumbnail, string title, string url, string type)
+ {
+ DataRequest request = args.Request;
+ request.Data.Properties.Title = title;
+ request.Data.Properties.Description = $"Sharing a {type}";
+
+ request.Data.SetText(title + "\n" + "#YouTube #FoxTube #SharedWithFoxTube");
+ request.Data.SetWebLink(url.ToUri());
+
+ DataRequestDeferral deferral = request.GetDeferral();
+ try
+ {
+ StorageFile thumbnailFile = await StorageFile.CreateStreamedFileFromUriAsync("tempThumb.jpg", thumbnail.ToUri(), null);
+ request.Data.Properties.Thumbnail = RandomAccessStreamReference.CreateFromFile(thumbnailFile);
+ StorageFile imageFile = thumbnailFile;
+
+ request.Data.SetBitmap(RandomAccessStreamReference.CreateFromFile(imageFile));
+ }
+ finally
+ {
+ deferral.Complete();
+ }
+ }
}
}
diff --git a/FoxTube/Pages/ChannelPage.xaml.cs b/FoxTube/Pages/ChannelPage.xaml.cs
index 2f374cf..bc3ee8b 100644
--- a/FoxTube/Pages/ChannelPage.xaml.cs
+++ b/FoxTube/Pages/ChannelPage.xaml.cs
@@ -1,44 +1,25 @@
using System;
-using System.Collections.Generic;
-using System.IO;
using System.Linq;
-using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
-using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Controls.Primitives;
-using Windows.UI.Xaml.Data;
-using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
-
-using Google.Apis.Services;
using Google.Apis.YouTube.v3;
using Google.Apis.YouTube.v3.Data;
using Windows.UI.Xaml.Media.Imaging;
-using Windows.UI.Text;
-using Windows.Storage;
using FoxTube.Controls;
-using FoxTube.Pages;
using Windows.ApplicationModel.DataTransfer;
-using Windows.ApplicationModel;
-using Windows.Storage.Streams;
using Windows.System;
using Windows.UI;
-using System.Diagnostics;
-
-// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238
namespace FoxTube.Pages
{
///
- /// An empty page that can be used on its own or navigated to within a Frame.
+ /// Channel page
///
public sealed partial class ChannelPage : Page
{
- ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;
-
public string channelId;
public Channel item;
@@ -299,45 +280,13 @@ namespace FoxTube.Pages
DataTransferManager.ShowShareUI();
}
- private async void Share(DataTransferManager sender, DataRequestedEventArgs args)
+ private void Share(DataTransferManager sender, DataRequestedEventArgs args)
{
- DataRequest request = args.Request;
- request.Data.Properties.Title = item.Snippet.Title;
- request.Data.Properties.Description = "Sharing a channel";
-
- // Handle errors
- //request.FailWithDisplayText("Something unexpected could happen.");
-
- // Plain text
- request.Data.SetText(item.Snippet.Title + "\n" + "#YouTube #FoxTube #SharedWithFoxTube");
-
- // Uniform Resource Identifiers (URIs)
- if(!string.IsNullOrWhiteSpace(item.Snippet.CustomUrl))
- request.Data.SetWebLink(new Uri($"https://www.youtube.com/user/{item.Snippet.CustomUrl}"));
- else
- request.Data.SetWebLink(new Uri($"https://www.youtube.com/channel/{item.Id}"));
-
- // HTML
- //request.Data.SetHtmlFormat("Bold Text");
-
- // Because we are making async calls in the DataRequested event handler,
- // we need to get the deferral first.
- DataRequestDeferral deferral = request.GetDeferral();
-
- // Make sure we always call Complete on the deferral.
- try
- {
- StorageFile thumbnailFile = await Package.Current.InstalledLocation.GetFileAsync(item.Snippet.Thumbnails.Medium.Url);
- request.Data.Properties.Thumbnail = RandomAccessStreamReference.CreateFromFile(thumbnailFile);
- StorageFile imageFile = await Package.Current.InstalledLocation.GetFileAsync(item.Snippet.Thumbnails.Medium.Url);
-
- // Bitmaps
- request.Data.SetBitmap(RandomAccessStreamReference.CreateFromFile(imageFile));
- }
- finally
- {
- deferral.Complete();
- }
+ Methods.Share(args,
+ item.Snippet.Thumbnails.Medium.Url,
+ item.Snippet.Title,
+ string.IsNullOrWhiteSpace(item.Snippet.CustomUrl) ? $"https://www.youtube.com/channel/{item.Id}" : $"https://www.youtube.com/user/{item.Snippet.CustomUrl}",
+ "channel");
}
}
}
diff --git a/FoxTube/Pages/PlaylistPage.xaml.cs b/FoxTube/Pages/PlaylistPage.xaml.cs
index 89dbd9e..a385327 100644
--- a/FoxTube/Pages/PlaylistPage.xaml.cs
+++ b/FoxTube/Pages/PlaylistPage.xaml.cs
@@ -2,32 +2,18 @@
using Google.Apis.YouTube.v3;
using Google.Apis.YouTube.v3.Data;
using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Runtime.InteropServices.WindowsRuntime;
-using Windows.ApplicationModel;
using Windows.ApplicationModel.DataTransfer;
using Windows.Foundation;
-using Windows.Foundation.Collections;
-using Windows.Storage;
-using Windows.Storage.Streams;
using Windows.System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Controls.Primitives;
-using Windows.UI.Xaml.Data;
-using Windows.UI.Xaml.Input;
-using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;
using Windows.UI.Xaml.Navigation;
-// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238
-
namespace FoxTube.Pages
{
///
- /// An empty page that can be used on its own or navigated to within a Frame.
+ /// Playlist page
///
public sealed partial class PlaylistPage : Page
{
@@ -39,7 +25,7 @@ namespace FoxTube.Pages
public PlaylistPage()
{
- this.InitializeComponent();
+ InitializeComponent();
loading = grid.Children[2] as LoadingPage;
list = ((grid.Children[0] as ScrollViewer).Content as Grid).Children[1] as VideoGrid;
loading.RefreshPage += refresh_Click;
@@ -137,42 +123,13 @@ namespace FoxTube.Pages
DataTransferManager.ShowShareUI();
}
- private async void Share(DataTransferManager sender, DataRequestedEventArgs args)
+ private void Share(DataTransferManager sender, DataRequestedEventArgs args)
{
- DataRequest request = args.Request;
- request.Data.Properties.Title = item.Snippet.Title;
- request.Data.Properties.Description = "Sharing a playlist";
-
- // Handle errors
- //request.FailWithDisplayText("Something unexpected could happen.");
-
- // Plain text
- request.Data.SetText(item.Snippet.Title + "\n" + "#YouTube #FoxTube #SharedWithFoxTube");
-
- // Uniform Resource Identifiers (URIs)
- request.Data.SetWebLink(new Uri($"https://www.youtube.com/playlist?list={item.Id}"));
-
- // HTML
- //request.Data.SetHtmlFormat("Bold Text");
-
- // Because we are making async calls in the DataRequested event handler,
- // we need to get the deferral first.
- DataRequestDeferral deferral = request.GetDeferral();
-
- // Make sure we always call Complete on the deferral.
- try
- {
- StorageFile thumbnailFile = await Package.Current.InstalledLocation.GetFileAsync(item.Snippet.Thumbnails.Medium.Url);
- request.Data.Properties.Thumbnail = RandomAccessStreamReference.CreateFromFile(thumbnailFile);
- StorageFile imageFile = await Package.Current.InstalledLocation.GetFileAsync(item.Snippet.Thumbnails.Medium.Url);
-
- // Bitmaps
- request.Data.SetBitmap(RandomAccessStreamReference.CreateFromFile(imageFile));
- }
- finally
- {
- deferral.Complete();
- }
+ Methods.Share(args,
+ item.Snippet.Thumbnails.Medium.Url,
+ item.Snippet.Title,
+ $"https://www.youtube.com/playlist?list={item.Id}",
+ "playlist");
}
}
}
diff --git a/FoxTube/Pages/VideoPage.xaml.cs b/FoxTube/Pages/VideoPage.xaml.cs
index 40aaff5..36f4765 100644
--- a/FoxTube/Pages/VideoPage.xaml.cs
+++ b/FoxTube/Pages/VideoPage.xaml.cs
@@ -13,8 +13,6 @@ using Windows.UI.Xaml.Media.Imaging;
using System.Diagnostics;
using Windows.ApplicationModel.DataTransfer;
using Windows.Storage;
-using Windows.ApplicationModel;
-using Windows.Storage.Streams;
using Windows.UI;
using FoxTube.Controls;
using YoutubeExplode.Models.MediaStreams;
@@ -61,7 +59,7 @@ namespace FoxTube.Pages
public VideoPage()
{
- this.InitializeComponent();
+ InitializeComponent();
loading = grid.Children[3] as LoadingPage;
loading.RefreshPage += refresh_Click;
player = mainContent.Children[0] as VideoPlayer;
@@ -367,43 +365,15 @@ namespace FoxTube.Pages
}
}
- private async void Share(DataTransferManager sender, DataRequestedEventArgs args)
+ private void Share(DataTransferManager sender, DataRequestedEventArgs args)
{
player.Pause();
- DataRequest request = args.Request;
- request.Data.Properties.Title = item.Snippet.Title;
- request.Data.Properties.Description = "Sharing a video";
- // Handle errors
- //request.FailWithDisplayText("Something unexpected could happen.");
-
- // Plain text
- request.Data.SetText(item.Snippet.Title + "\n" + "#YouTube #FoxTube #SharedWithFoxTube");
-
- // Uniform Resource Identifiers (URIs)
- request.Data.SetWebLink(new Uri(string.Format("https://www.youtube.com/watch?v={0}", videoId)));
-
- // HTML
- //request.Data.SetHtmlFormat("Bold Text");
-
- // Because we are making async calls in the DataRequested event handler,
- // we need to get the deferral first.
- DataRequestDeferral deferral = request.GetDeferral();
-
- // Make sure we always call Complete on the deferral.
- try
- {
- StorageFile thumbnailFile = await Package.Current.InstalledLocation.GetFileAsync(item.Snippet.Thumbnails.Medium.Url);
- request.Data.Properties.Thumbnail = RandomAccessStreamReference.CreateFromFile(thumbnailFile);
- StorageFile imageFile = await Package.Current.InstalledLocation.GetFileAsync(item.Snippet.Thumbnails.Medium.Url);
-
- // Bitmaps
- request.Data.SetBitmap(RandomAccessStreamReference.CreateFromFile(imageFile));
- }
- finally
- {
- deferral.Complete();
- }
+ Methods.Share(args,
+ item.Snippet.Thumbnails.Medium.Url,
+ item.Snippet.Title,
+ $"https://www.youtube.com/watch?v={videoId}",
+ "video");
}
private void share_Click(object sender, RoutedEventArgs e)