diff --git a/Core/Controllers/DialogueController.cs b/Core/Controllers/DialogueController.cs index aff29f75..b19095f3 100644 --- a/Core/Controllers/DialogueController.cs +++ b/Core/Controllers/DialogueController.cs @@ -1,11 +1,11 @@ using Core.Annotations; using Core.Helpers; +using Core.Helpers.Dialogue; using Core.Models.Eft.Dialog; using Core.Models.Eft.HttpResponse; using Core.Models.Eft.Profile; using Core.Models.Enums; using Core.Servers; -using static System.Runtime.InteropServices.JavaScript.JSType; namespace Core.Controllers; @@ -13,13 +13,17 @@ namespace Core.Controllers; public class DialogueController { private readonly DialogueHelper _dialogueHelper; + private readonly ProfileHelper _profileHelper; private readonly SaveServer _saveServer; + private readonly List _dialogueChatBots; public DialogueController( DialogueHelper dialogueHelper, + ProfileHelper profileHelper, SaveServer saveServer) { _dialogueHelper = dialogueHelper; + _profileHelper = profileHelper; _saveServer = saveServer; } @@ -49,7 +53,33 @@ public class DialogueController /// GetFriendListDataResponse public GetFriendListDataResponse GetFriendList(string sessionId) { - throw new NotImplementedException(); + // Add all chatbots to the friends list + var friends = _dialogueChatBots.Select((bot) => bot.GetChatBot()).ToList(); + + // Add any friends the user has after the chatbots + var profile = _profileHelper.GetFullProfile(sessionId); + if (profile?.FriendProfileIds is not null) + { + foreach (var friendId in profile.FriendProfileIds) { + var friendProfile = _profileHelper.GetChatRoomMemberFromSessionId(friendId); + if (friendProfile is not null) + { + friends.Add(new UserDialogInfo + { + Id = friendProfile.Id, + Aid = friendProfile.Aid, + Info = friendProfile.Info, + } ); + } + } + } + + return new GetFriendListDataResponse + { + Friends = friends, + Ignore = [], + InIgnoreList = [] + }; } /// diff --git a/Core/Models/Eft/Profile/SearchFriendResponse.cs b/Core/Models/Eft/Profile/SearchFriendResponse.cs index dcf9c1f9..5de6d376 100644 --- a/Core/Models/Eft/Profile/SearchFriendResponse.cs +++ b/Core/Models/Eft/Profile/SearchFriendResponse.cs @@ -1,35 +1,18 @@ using System.Text.Json.Serialization; -using Core.Models.Enums; namespace Core.Models.Eft.Profile; +/// +/// Identical to `UserDialogInfo` +/// public class SearchFriendResponse { [JsonPropertyName("_id")] public string? Id { get; set; } [JsonPropertyName("aid")] - public double? Aid { get; set; } + public int? Aid { get; set; } [JsonPropertyName("Info")] - public FriendInfo? Info { get; set; } -} - -// NOTE: Renamed from `Info` because of a name collision. -public class FriendInfo -{ - [JsonPropertyName("Nickname")] - public string? Nickname { get; set; } - - [JsonPropertyName("Side")] - public string? Side { get; set; } - - [JsonPropertyName("Level")] - public double? Level { get; set; } - - [JsonPropertyName("MemberCategory")] - public MemberCategory? MemberCategory { get; set; } - - [JsonPropertyName("SelectedMemberCategory")] - public MemberCategory? SelectedMemberCategory { get; set; } + public UserDialogDetails? Info { get; set; } }