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