diff --git a/FoxTube/Pages/Video.xaml b/FoxTube/Pages/Video.xaml
index e344894..274221f 100644
--- a/FoxTube/Pages/Video.xaml
+++ b/FoxTube/Pages/Video.xaml
@@ -40,17 +40,17 @@
-
+
-
+
@@ -85,14 +85,23 @@
-
+
+
+
+
+
+
+
+
+
+
-
-
+
+
diff --git a/FoxTube/Pages/Video.xaml.cs b/FoxTube/Pages/Video.xaml.cs
index de354f3..64b11ce 100644
--- a/FoxTube/Pages/Video.xaml.cs
+++ b/FoxTube/Pages/Video.xaml.cs
@@ -34,6 +34,8 @@ using FoxTube.Pages;
namespace FoxTube
{
+ public enum Rating { None, Like, Dislike }
+
///
/// An empty page that can be used on its own or navigated to within a Frame.
///
@@ -45,7 +47,10 @@ namespace FoxTube
bool wide;
bool isExtended = false;
+ Rating userRating = Rating.None;
+
public VideoPlayer player;
+ public CommentsPage comments;
LoadingPage LoadingScreen = new LoadingPage();
LoadingPage loadingRelated = new LoadingPage();
@@ -106,7 +111,10 @@ namespace FoxTube
else
{
views.Text = string.Format("{0:0,0} views", item.Statistics.ViewCount);
- (commentsPlaceholder.Content as CommentsPage).Initialize(item);
+ comments = new CommentsPage();
+ commentsPlaceholder.Content = null;
+ commentsPlaceholder.Content = comments;
+ comments.Initialize(item);
}
VideoCategoriesResource.ListRequest categoryRequest = SecretsVault.NoAuthService.VideoCategories.List("snippet");
@@ -136,11 +144,20 @@ namespace FoxTube
channelName.Text = item.Snippet.ChannelTitle;
subscribers.Text = item1.Statistics.SubscriberCount + " subscribers";
- /*var ratingResponse = await SecretsVault.YoutubeService.Videos.GetRating(id).ExecuteAsync();
- if (ratingResponse.Items[0].Rating == "like")
- like.Foreground = new SolidColorBrush(Colors.Green);
- else if (ratingResponse.Items[0].Rating == "dislike")
- dislike.Foreground = new SolidColorBrush(Colors.Red);*/
+ if(SecretsVault.IsAuthorized)
+ {
+ VideoGetRatingResponse ratingResponse = await SecretsVault.Service.Videos.GetRating(id).ExecuteAsync();
+ if (ratingResponse.Items[0].Rating == "like")
+ {
+ userRating = Rating.Like;
+ like.Foreground = new SolidColorBrush(Colors.Green);
+ }
+ else if (ratingResponse.Items[0].Rating == "dislike")
+ {
+ userRating = Rating.Dislike;
+ dislike.Foreground = new SolidColorBrush(Colors.Red);
+ }
+ }
player = new VideoPlayer(item, item1.Snippet.Thumbnails.Medium.Url);
player.SetFullSize += Player_SetFullSize;
@@ -164,7 +181,7 @@ namespace FoxTube
loadingRelated.Refresh();
loadingRelated.Visibility = Visibility.Visible;
- SearchResource.ListRequest request = SecretsVault.NoAuthService.Search.List("snippet");
+ SearchResource.ListRequest request = SecretsVault.IsAuthorized? SecretsVault.Service.Search.List("snippet") : SecretsVault.NoAuthService.Search.List("snippet");
request.RelatedToVideoId = videoId;
request.MaxResults = 20;
request.Type = "video";
@@ -416,57 +433,72 @@ namespace FoxTube
private async void dislike_Click(object sender, RoutedEventArgs e)
{
- if(like.Foreground == new SolidColorBrush(Colors.Green))
- {
- like.Foreground = new SolidColorBrush(Colors.Gray);
- likes.Text = (Convert.ToInt32(likes.Text) - 1).ToString();
- rating.Value = (int)((item.Statistics.DislikeCount) / (item.Statistics.DislikeCount + item.Statistics.LikeCount - 1) * 100);
- await SecretsVault.NoAuthService.Videos.Rate(videoId, VideosResource.RateRequest.RatingEnum.None).ExecuteAsync();
- }
+ if (SecretsVault.IsAuthorized)
+ switch (userRating)
+ {
+ case Rating.Like:
+ like.Foreground = new SolidColorBrush(Colors.Gray);
+ likes.Text = (Convert.ToInt32(likes.Text) - 1).ToString();
- if(dislike.Foreground == new SolidColorBrush(Colors.Red))
- {
- dislike.Foreground = new SolidColorBrush(Colors.Gray);
- rating.Value = (int)((item.Statistics.DislikeCount - 1) / (item.Statistics.DislikeCount + item.Statistics.LikeCount - 1) * 100);
- await SecretsVault.NoAuthService.Videos.Rate(videoId, VideosResource.RateRequest.RatingEnum.None).ExecuteAsync();
- }
- else
- {
- dislike.Foreground = new SolidColorBrush(Colors.Red);
- dislikes.Text = (Convert.ToInt32(dislikes.Text) + 1).ToString();
- rating.Value = (int)((item.Statistics.DislikeCount + 1) / (item.Statistics.DislikeCount + item.Statistics.LikeCount + 1) * 100);
- await SecretsVault.NoAuthService.Videos.Rate(videoId, VideosResource.RateRequest.RatingEnum.Dislike).ExecuteAsync();
- }
+ dislike.Foreground = new SolidColorBrush(Colors.Red);
+ dislikes.Text = (Convert.ToInt32(dislikes.Text) + 1).ToString();
+ rating.Value = (int)((item.Statistics.LikeCount - 1) / (item.Statistics.DislikeCount + item.Statistics.LikeCount) * 100);
+ await SecretsVault.Service.Videos.Rate(videoId, VideosResource.RateRequest.RatingEnum.Dislike).ExecuteAsync();
+
+ userRating = Rating.Dislike;
+ break;
+
+ case Rating.None:
+ dislike.Foreground = new SolidColorBrush(Colors.Red);
+ dislikes.Text = (Convert.ToInt32(dislikes.Text) + 1).ToString();
+ rating.Value = (int)((item.Statistics.LikeCount) / (item.Statistics.DislikeCount + item.Statistics.LikeCount + 1) * 100);
+ await SecretsVault.Service.Videos.Rate(videoId, VideosResource.RateRequest.RatingEnum.Dislike).ExecuteAsync();
+
+ userRating = Rating.Dislike;
+ break;
+
+ case Rating.Dislike:
+ dislike.Foreground = new SolidColorBrush(Colors.Gray);
+ dislikes.Text = (Convert.ToInt32(dislikes.Text) - 1).ToString();
+ rating.Value = (int)((item.Statistics.LikeCount) / (item.Statistics.DislikeCount + item.Statistics.LikeCount - 1) * 100);
+ await SecretsVault.Service.Videos.Rate(videoId, VideosResource.RateRequest.RatingEnum.None).ExecuteAsync();
+ break;
+ }
}
private async void like_Click(object sender, RoutedEventArgs e)
{
- if (dislike.Foreground == new SolidColorBrush(Colors.Red))
- {
- dislike.Foreground = new SolidColorBrush(Colors.Gray);
- dislikes.Text = (Convert.ToInt32(likes.Text) - 1).ToString();
- rating.Value = (int)((item.Statistics.LikeCount) / (item.Statistics.DislikeCount + item.Statistics.LikeCount - 1) * 100);
- await SecretsVault.NoAuthService.Videos.Rate(videoId, VideosResource.RateRequest.RatingEnum.None).ExecuteAsync();
- }
+ if(SecretsVault.IsAuthorized)
+ switch (userRating)
+ {
+ case Rating.Dislike:
+ dislike.Foreground = new SolidColorBrush(Colors.Gray);
+ dislikes.Text = (Convert.ToInt32(dislikes.Text) - 1).ToString();
- if (like.Foreground == new SolidColorBrush(Colors.Green))
- {
- like.Foreground = new SolidColorBrush(Colors.Gray);
- rating.Value = (int)((item.Statistics.LikeCount - 1) / (item.Statistics.DislikeCount + item.Statistics.LikeCount - 1) * 100);
- await SecretsVault.NoAuthService.Videos.Rate(videoId, VideosResource.RateRequest.RatingEnum.None).ExecuteAsync();
- }
- else
- {
- like.Foreground = new SolidColorBrush(Colors.Green);
- likes.Text = (Convert.ToInt32(dislikes.Text) + 1).ToString();
- rating.Value = (int)((item.Statistics.LikeCount + 1) / (item.Statistics.DislikeCount + item.Statistics.LikeCount + 1) * 100);
- await SecretsVault.NoAuthService.Videos.Rate(videoId, VideosResource.RateRequest.RatingEnum.Dislike).ExecuteAsync();
- }
- }
+ like.Foreground = new SolidColorBrush(Colors.Green);
+ likes.Text = (Convert.ToInt32(likes.Text) + 1).ToString();
+ rating.Value = (int)((item.Statistics.LikeCount + 1) / (item.Statistics.DislikeCount + item.Statistics.LikeCount) * 100);
+ await SecretsVault.Service.Videos.Rate(videoId, VideosResource.RateRequest.RatingEnum.Like).ExecuteAsync();
- private async void description_LinkClicked(object sender, Microsoft.Toolkit.Uwp.UI.Controls.LinkClickedEventArgs e)
- {
- await Launcher.LaunchUriAsync(new Uri(e.Link));
+ userRating = Rating.Like;
+ break;
+
+ case Rating.None:
+ like.Foreground = new SolidColorBrush(Colors.Green);
+ likes.Text = (Convert.ToInt32(likes.Text) + 1).ToString();
+ rating.Value = (int)((item.Statistics.LikeCount + 1) / (item.Statistics.DislikeCount + item.Statistics.LikeCount + 1) * 100);
+ await SecretsVault.Service.Videos.Rate(videoId, VideosResource.RateRequest.RatingEnum.Like).ExecuteAsync();
+
+ userRating = Rating.Like;
+ break;
+
+ case Rating.Like:
+ like.Foreground = new SolidColorBrush(Colors.Gray);
+ likes.Text = (Convert.ToInt32(likes.Text) - 1).ToString();
+ rating.Value = (int)((item.Statistics.LikeCount - 1) / (item.Statistics.DislikeCount + item.Statistics.LikeCount - 1) * 100);
+ await SecretsVault.Service.Videos.Rate(videoId, VideosResource.RateRequest.RatingEnum.None).ExecuteAsync();
+ break;
+ }
}
}
}