using System; using System.Collections.Generic; using System.Threading.Tasks; using Chtn.CSharp.SDK.Core; using Chtn.CSharp.SDK.Models.Chat.DM; namespace Chtn.CSharp.SDK.Services { public interface IDMService { Task> Get(GetMessagesReq req); Task GetMessagePos(GetMessagePosReq req); Task> GetPinnedMessages(GetPinnedMessagesReq req); Task EditMessage(EditMessageReq req); Task DeleteMessage(DeleteMessageReq req); Task FinishMessage(FinishMessageReq req); Task ReadMessages(ReadMessagesReq req); Task PinMessage(PinMessageReq req); Task UnpinMessage(UnpinMessageReq req); Task DeleteMessages(DeleteMessagesReq req); Task JoinWebsocketRoom(JoinWsRoomReq req); } public class DMServiceProvider : IDMService { private readonly ApiClient _apiClient; public DMServiceProvider(ApiClient apiClient) { _apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient)); } public async Task> Get(GetMessagesReq req) => await _apiClient.PostAsync>("chat/dm/messages", req); public async Task GetMessagePos(GetMessagePosReq req) => await _apiClient.PostAsync("chat/dm/getMessagePosition", req); public async Task> GetPinnedMessages(GetPinnedMessagesReq req) => await _apiClient.PostAsync>("chat/dm/pinnedMessages", req); public async Task EditMessage(EditMessageReq req) => await _apiClient.PostAsync("chat/dm/editMessage", req); public async Task DeleteMessage(DeleteMessageReq req) => await _apiClient.PostAsync("chat/dm/deleteMessage", req); public async Task FinishMessage(FinishMessageReq req) => await _apiClient.PostAsync("chat/dm/finishMessage", req); public async Task ReadMessages(ReadMessagesReq req) => await _apiClient.PostAsync("chat/dm/readMessages", req); public async Task PinMessage(PinMessageReq req) => await _apiClient.PostAsync("chat/dm/pinMessage", req); public async Task UnpinMessage(UnpinMessageReq req) => await _apiClient.PostAsync("chat/dm/unpinMessage", req); public async Task DeleteMessages(DeleteMessagesReq req) => await _apiClient.PostAsync("chat/dm/deleteMessages", req); public async Task JoinWebsocketRoom(JoinWsRoomReq req) => await _apiClient.PostAsync("v2/chat/dm/joinWebSocketRoom", req); } }