// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using Newtonsoft.Json; using osu.Game.Users; using System.Collections.Generic; namespace osu.Game.Online.API.Requests.Responses { public class CommentBundle { private List comments; [JsonProperty(@"comments")] public List Comments { get => comments; set { comments = value; comments.ForEach(child => { if (child.ParentId != null) { comments.ForEach(parent => { if (parent.Id == child.ParentId) { parent.ChildComments.Add(child); child.ParentComment = parent; } }); } }); } } [JsonProperty(@"has_more")] public bool HasMore { get; set; } [JsonProperty(@"has_more_id")] public long? HasMoreId { get; set; } [JsonProperty(@"user_follow")] public bool UserFollow { get; set; } [JsonProperty(@"included_comments")] public List IncludedComments { get; set; } private List userVotes; [JsonProperty(@"user_votes")] public List UserVotes { get => userVotes; set { userVotes = value; Comments.ForEach(c => c.IsVoted = value.Contains(c.Id)); } } private List users; [JsonProperty(@"users")] public List Users { get => users; set { users = value; value.ForEach(u => { Comments.ForEach(c => { if (c.UserId == u.Id) c.User = u; if (c.EditedById == u.Id) c.EditedUser = u; }); }); } } [JsonProperty(@"total")] public int Total { get; set; } [JsonProperty(@"top_level_count")] public int TopLevelCount { get; set; } } }