diff --git a/FoxTube/Controls/CommentCard.xaml b/FoxTube/Controls/CommentCard.xaml
index 65d47ae..c1934c1 100644
--- a/FoxTube/Controls/CommentCard.xaml
+++ b/FoxTube/Controls/CommentCard.xaml
@@ -77,6 +77,7 @@
+
@@ -91,9 +92,6 @@
Content="" />
-
-
-
-
+
diff --git a/FoxTube/Controls/CommentCard.xaml.cs b/FoxTube/Controls/CommentCard.xaml.cs
index 8affa9c..c5b15a1 100644
--- a/FoxTube/Controls/CommentCard.xaml.cs
+++ b/FoxTube/Controls/CommentCard.xaml.cs
@@ -26,21 +26,18 @@ namespace FoxTube.Controls
public enum CommentType { TopLevel, Reply }
public sealed partial class CommentCard : UserControl
{
- ShowMore more;
-
Comment item;
CommentThread thread;
+ bool repliesLoaded = false;
CommentType type = CommentType.TopLevel;
- string NextPageToken;
public CommentCard(CommentThread comment)
{
this.InitializeComponent();
- more = repliesPlaceholder.Children[1] as ShowMore;
Initialize(comment);
}
- public async void Initialize(CommentThread comment)
+ public void Initialize(CommentThread comment)
{
item = comment.Snippet.TopLevelComment;
thread = comment;
@@ -67,24 +64,6 @@ namespace FoxTube.Controls
try { avatar.ProfilePicture = new BitmapImage(new Uri(comment.Snippet.TopLevelComment.Snippet.AuthorProfileImageUrl)); }
catch { }
-
- if(comment.Snippet.TotalReplyCount > 0)
- {
- var request = SecretsVault.Service.Comments.List("snippet");
- request.ParentId = item.Id;
- request.TextFormat = CommentsResource.ListRequest.TextFormatEnum.PlainText;
- request.MaxResults = 10;
-
- var response = await request.ExecuteAsync();
-
- if (response.NextPageToken != null)
- NextPageToken = response.NextPageToken;
- else
- more.Visibility = Visibility.Collapsed;
-
- foreach (Comment c in response.Items.Reverse())
- replies.Children.Add(new CommentCard(c));
- }
}
public CommentCard(Comment comment)
@@ -125,10 +104,45 @@ namespace FoxTube.Controls
grid.RowDefinitions[1].Height = new GridLength(0);
}
- private void showReplies_Click(object sender, RoutedEventArgs e)
+ private async void showReplies_Click(object sender, RoutedEventArgs e)
{
if (grid.RowDefinitions[2].Height == new GridLength(0))
+ {
+ if(type == CommentType.TopLevel && !repliesLoaded)
+ {
+ commentsLoading.Visibility = Visibility.Visible;
+ var request = SecretsVault.Service.Comments.List("snippet");
+ request.ParentId = item.Id;
+ request.TextFormat = CommentsResource.ListRequest.TextFormatEnum.PlainText;
+ request.MaxResults = 50;
+
+ string token;
+ IList list = new List();
+
+ var response = await request.ExecuteAsync();
+ token = response.NextPageToken;
+
+ foreach (Comment i in response.Items)
+ list.Add(i);
+
+ while(token != null)
+ {
+ request.PageToken = token;
+ response = await request.ExecuteAsync();
+ token = response.NextPageToken;
+
+ foreach (Comment i in response.Items)
+ list.Add(i);
+ }
+
+ foreach (Comment c in list.Reverse())
+ replies.Children.Add(new CommentCard(c));
+
+ repliesLoaded = true;
+ commentsLoading.Visibility = Visibility.Collapsed;
+ }
grid.RowDefinitions[2].Height = GridLength.Auto;
+ }
else
grid.RowDefinitions[2].Height = new GridLength(0);
}
@@ -138,27 +152,6 @@ namespace FoxTube.Controls
Methods.MainPage.GoToChannel(item.Snippet.AuthorChannelId.ToString().Split('"')[3]);
}
- private async void more_Click()
- {
- var request = SecretsVault.NoAuthService.Comments.List("snippet");
- request.ParentId = item.Id;
- request.MaxResults = 10;
- request.PageToken = NextPageToken;
- request.TextFormat = CommentsResource.ListRequest.TextFormatEnum.PlainText;
- var response = await request.ExecuteAsync();
-
- foreach (Comment c in response.Items.Reverse())
- replies.Children.Add(new CommentCard(c));
-
- if (response.NextPageToken != null)
- {
- NextPageToken = response.NextPageToken;
- more.Complete();
- }
- else
- more.Complete(true);
- }
-
private void reply_TextChanged(object sender, TextChangedEventArgs e)
{
if (reply.Text.Length == 0)