Implemented GetFriendList()

This commit is contained in:
Chomp
2025-01-12 20:19:48 +00:00
parent 85050f69c2
commit 85482b34d7
2 changed files with 37 additions and 24 deletions
+32 -2
View File
@@ -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<IDialogueChatBot> _dialogueChatBots;
public DialogueController(
DialogueHelper dialogueHelper,
ProfileHelper profileHelper,
SaveServer saveServer)
{
_dialogueHelper = dialogueHelper;
_profileHelper = profileHelper;
_saveServer = saveServer;
}
@@ -49,7 +53,33 @@ public class DialogueController
/// <returns>GetFriendListDataResponse</returns>
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 = []
};
}
/// <summary>
@@ -1,35 +1,18 @@
using System.Text.Json.Serialization;
using Core.Models.Enums;
namespace Core.Models.Eft.Profile;
/// <summary>
/// Identical to `UserDialogInfo`
/// </summary>
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; }
}