implement core SDK architecture, TextChannel services (orulj geci)

This commit is contained in:
2026-04-30 21:12:52 +02:00
parent 3145cca326
commit 750295eccf
2 changed files with 113 additions and 0 deletions

View File

@@ -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<List<ChannelMessage>> Get(GetMessagesReq req);
Task<GetMessagePosResp> GetMessagePos(GetMessagePosReq req);
Task<List<ChannelMessage>> 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<List<ChannelMessage>> Get(GetMessagesReq req) =>
await _apiClient.PostAsync<GetMessagesReq, List<ChannelMessage>>("network/channel/messages", req);
public async Task<GetMessagePosResp> GetMessagePos(GetMessagePosReq req) =>
await _apiClient.PostAsync<GetMessagePosReq, GetMessagePosResp>("network/channel/getMessagePosition", req);
public async Task<List<ChannelMessage>> GetPinnedMessages(GetPinnedMessagesReq req) =>
await _apiClient.PostAsync<GetPinnedMessagesReq, List<ChannelMessage>>("network/channel/pinnedMessages", req);
public async Task EditMessage(EditMessageReq req) =>
await _apiClient.PostAsync<EditMessageReq, object>("network/channel/editMessage", req);
public async Task DeleteMessage(DeleteMessageReq req) =>
await _apiClient.PostAsync<DeleteMessageReq, object>("chat/dm/deleteMessage", req);
public async Task FinishMessage(DeleteMessageReq req) =>
await _apiClient.PostAsync<DeleteMessageReq, object>("network/channel/finishMessage", req);
public async Task ReadMessages(ReadMessagesReq req) =>
await _apiClient.PostAsync<ReadMessagesReq, object>("network/channel/readMessages", req);
public async Task PinMessage(ChannelPinMessageReq req) =>
await _apiClient.PostAsync<ChannelPinMessageReq, object>("network/channel/pinMessage", req);
public async Task UnpinMessage(ChannelPinMessageReq req) =>
await _apiClient.PostAsync<ChannelPinMessageReq, object>("network/channel/unpinMessage", req);
public async Task DeleteMessages(DeleteMessagesReq req) =>
await _apiClient.PostAsync<DeleteMessagesReq, object>("network/channel/deleteMessages", req);
public async Task JoinWebsocketRoom(ChannelJoinWsRoomReq req) =>
await _apiClient.PostAsync<ChannelJoinWsRoomReq, object>("v2/network/channel/joinWebSocketRoom", req);
}
}