using SPTarkov.Server.Core.Controllers; using SPTarkov.Server.Core.DI; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Models.Eft.Common.Request; using SPTarkov.Server.Core.Models.Eft.Common.Tables; using SPTarkov.Server.Core.Models.Eft.Dialog; using SPTarkov.Server.Core.Utils; using SPTarkov.Common.Annotations; namespace SPTarkov.Server.Core.Callbacks; [Injectable(InjectableTypeOverride = typeof(IOnUpdate), TypePriority = OnUpdateOrder.DialogueCallbacks)] [Injectable(InjectableTypeOverride = typeof(DialogueCallbacks))] public class DialogueCallbacks( HashUtil _hashUtil, TimeUtil _timeUtil, HttpResponseUtil _httpResponseUtil, DialogueController _dialogueController ) : IOnUpdate { public bool OnUpdate(long timeSinceLastRun) { _dialogueController.Update(); return true; } public string GetRoute() { return "spt-dialogue"; } /// /// Handle client/friend/list /// /// public virtual string GetFriendList(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.GetBody(_dialogueController.GetFriendList(sessionID)); } /// /// Handle client/chatServer/list /// /// public virtual string GetChatServerList(string url, GetChatServerListRequestData request, string sessionID) { var chatServer = new List { new() { Id = _hashUtil.Generate(), RegistrationId = 20, DateTime = _timeUtil.GetTimeStamp(), IsDeveloper = true, Regions = ["EUR"], VersionId = "bgkidft87ddd", Ip = "", Port = 0, Chats = [ new Chat { Id = "0", Members = 0 } ] } }; return _httpResponseUtil.GetBody(chatServer); } /// /// Handle client/mail/dialog/list /// TODO: request properties are not handled /// /// public virtual string GetMailDialogList(string url, GetMailDialogListRequestData request, string sessionID) { return _httpResponseUtil.GetBody(_dialogueController.GenerateDialogueList(sessionID), 0, null, false); } /// /// Handle client/mail/dialog/view /// /// /// /// Session/player id /// public virtual string GetMailDialogView(string url, GetMailDialogViewRequestData request, string sessionID) { return _httpResponseUtil.GetBody(_dialogueController.GenerateDialogueView(request, sessionID), 0, null, false); } /// /// Handle client/mail/dialog/info /// /// public virtual string GetMailDialogInfo(string url, GetMailDialogInfoRequestData request, string sessionID) { return _httpResponseUtil.GetBody(_dialogueController.GetDialogueInfo(request.DialogId, sessionID)); } /// /// Handle client/mail/dialog/remove /// /// public virtual string RemoveDialog(string url, RemoveDialogRequestData request, string sessionID) { _dialogueController.RemoveDialogue(request.DialogId, sessionID); return _httpResponseUtil.EmptyArrayResponse(); } /// /// Handle client/mail/dialog/pin /// /// public virtual string PinDialog(string url, PinDialogRequestData request, string sessionID) { _dialogueController.SetDialoguePin(request.DialogId, true, sessionID); return _httpResponseUtil.EmptyArrayResponse(); } /// /// Handle client/mail/dialog/unpin /// /// public virtual string UnpinDialog(string url, PinDialogRequestData request, string sessionID) { _dialogueController.SetDialoguePin(request.DialogId, false, sessionID); return _httpResponseUtil.EmptyArrayResponse(); } /// /// Handle client/mail/dialog/read /// /// public virtual string SetRead(string url, SetDialogReadRequestData request, string sessionID) { _dialogueController.SetRead(request.Dialogs, sessionID); return _httpResponseUtil.EmptyArrayResponse(); } /// /// Handle client/mail/dialog/getAllAttachments /// /// public virtual string GetAllAttachments(string url, GetAllAttachmentsRequestData request, string sessionID) { return _httpResponseUtil.GetBody(_dialogueController.GetAllAttachments(request.DialogId, sessionID)); } /// /// Handle client/mail/msg/send /// /// public virtual string SendMessage(string url, SendMessageRequest request, string sessionID) { return _httpResponseUtil.GetBody(_dialogueController.SendMessage(sessionID, request)); } /// /// Handle client/friend/request/list/outbox /// /// public virtual string ListOutbox(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.EmptyArrayResponse(); } /// /// Handle client/friend/request/list/inbox /// /// public virtual string ListInbox(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.EmptyArrayResponse(); } /// /// Handle client/friend/request/send /// /// public virtual string SendFriendRequest(string url, FriendRequestData request, string sessionID) { return _httpResponseUtil.GetBody(_dialogueController.SendFriendRequest(sessionID, request)); } /// /// Handle client/friend/request/accept-all /// /// public virtual string AcceptAllFriendRequests(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.NullResponse(); } /// /// Handle client/friend/request/accept /// /// public virtual string AcceptFriendRequest(string url, AcceptFriendRequestData request, string sessionID) { return _httpResponseUtil.GetBody(true); } /// /// Handle client/friend/request/decline /// /// public virtual string DeclineFriendRequest(string url, DeclineFriendRequestData request, string sessionID) { return _httpResponseUtil.GetBody(true); } /// /// Handle client/friend/request/cancel /// /// public virtual string CancelFriendRequest(string url, CancelFriendRequestData request, string sessionID) { return _httpResponseUtil.GetBody(true); } /// /// Handle client/friend/delete /// /// public virtual string DeleteFriend(string url, DeleteFriendRequest request, string sessionID) { _dialogueController.DeleteFriend(sessionID, request); return _httpResponseUtil.NullResponse(); } /// /// Handle client/friend/ignore/set /// /// public virtual string IgnoreFriend(string url, UIDRequestData request, string sessionID) { return _httpResponseUtil.NullResponse(); } /// /// Handle client/friend/ignore/remove /// /// public virtual string UnIgnoreFriend(string url, UIDRequestData request, string sessionID) { return _httpResponseUtil.NullResponse(); } public virtual string ClearMail(string url, ClearMailMessageRequest request, string sessionID) { return _httpResponseUtil.EmptyArrayResponse(); } public virtual string CreateGroupMail(string url, CreateGroupMailRequest request, string sessionID) { return _httpResponseUtil.EmptyArrayResponse(); } public virtual string ChangeMailGroupOwner(string url, ChangeGroupMailOwnerRequest request, string sessionID) { return "Not Implemented!"; // Not implemented in Node } public virtual string AddUserToMail(string url, AddUserGroupMailRequest request, string sessionID) { return "Not Implemented!"; // Not implemented in Node } public virtual string RemoveUserFromMail(string url, RemoveUserGroupMailRequest request, string sessionID) { return "Not Implemented!"; // Not implemented in Node } }