diff --git a/Models/TextChannelServiceModels.cs b/Models/TextChannelServiceModels.cs index 984f6cd..39cc83b 100644 --- a/Models/TextChannelServiceModels.cs +++ b/Models/TextChannelServiceModels.cs @@ -13,6 +13,17 @@ namespace Chtn.CSharp.SDK.Models.Chat.TextChannel [JsonProperty("files")] public List Files { get; set; } } + public class GetPinnedMessagesReq + { + [JsonProperty("channelId")] public string ChannelId { get; set; } + } + + public class DeleteMessagesReq + { + [JsonProperty("channelId")] public string ChannelId { get; set; } + [JsonProperty("messageIds")] public List MessageIds { get; set; } + } + public class ChannelPinMessageReq { [JsonProperty("channelId")] public string ChannelId { get; set; } @@ -24,4 +35,40 @@ namespace Chtn.CSharp.SDK.Models.Chat.TextChannel [JsonProperty("connId")] public string ConnId { get; set; } [JsonProperty("channelId")] public string ChannelId { get; set; } } + + public class GetMessagesReq + { + [JsonProperty("channelId")] public string ChannelId { get; set; } + [JsonProperty("limit")] public string Limit { get; set; } + } + + public class GetMessagePosReq + { + [JsonProperty("channelId")] public string ChannelId { get; set; } + [JsonProperty("messageId")] public string MessageId { get; set; } + } + + public class GetMessagePosResp + { + [JsonProperty("position")] public string Position { get; set; } + } + + public class EditMessageReq + { + [JsonProperty("channelId")] public string ChannelId { get; set; } + [JsonProperty("messageId")] public string MessageId { get; set; } + [JsonProperty("newContent")] public string NewContent { get; set; } + } + + public class DeleteMessageReq + { + [JsonProperty("channelId")] public string ChannelId { get; set; } + [JsonProperty("messageId")] public string MessageId { get; set; } + } + + public class ReadMessagesReq + { + [JsonProperty("channelId")] public string ChannelId { get; set; } + [JsonProperty("lastMessageId")] public string LastMessageId { get; set; } + } } \ No newline at end of file diff --git a/Services/TextChannelServiceMethods.cs b/Services/TextChannelServiceMethods.cs new file mode 100644 index 0000000..0e74744 --- /dev/null +++ b/Services/TextChannelServiceMethods.cs @@ -0,0 +1,66 @@ +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); + } +}