Basic syncshell chat impl with game hooks

This commit is contained in:
Loporrit
2024-11-24 22:21:41 +00:00
parent 7075c43a49
commit c2723fd005
25 changed files with 610 additions and 13 deletions

View File

@@ -33,6 +33,12 @@ public partial class ApiController
await _mareHub!.SendAsync(nameof(UserAddPair), user).ConfigureAwait(false);
}
public async Task UserChatSendMsg(UserDto user, ChatMessage message)
{
CheckConnection();
await _mareHub!.SendAsync(nameof(UserChatSendMsg), user, message).ConfigureAwait(false);
}
public async Task UserDelete()
{
CheckConnection();

View File

@@ -1,6 +1,7 @@
using Dalamud.Interface.ImGuiNotification;
using MareSynchronos.API.Data.Enum;
using MareSynchronos.API.Dto;
using MareSynchronos.API.Dto.Chat;
using MareSynchronos.API.Dto.Group;
using MareSynchronos.API.Dto.User;
using MareSynchronos.Services.Mediator;
@@ -25,6 +26,13 @@ public partial class ApiController
return Task.CompletedTask;
}
public Task Client_GroupChatMsg(GroupChatMsgDto groupChatMsgDto)
{
Logger.LogDebug("Client_GroupChatMsg: {msg}", groupChatMsgDto.Message);
Mediator.Publish(new GroupChatMsgMessage(groupChatMsgDto.Group, groupChatMsgDto.Message));
return Task.CompletedTask;
}
public Task Client_GroupPairChangePermissions(GroupPairUserPermissionDto dto)
{
Logger.LogTrace("Client_GroupPairChangePermissions: {dto}", dto);
@@ -120,6 +128,13 @@ public partial class ApiController
return Task.CompletedTask;
}
public Task Client_UserChatMsg(UserChatMsgDto chatMsgDto)
{
Logger.LogDebug("Client_UserChatMsg: {msg}", chatMsgDto.Message);
Mediator.Publish(new UserChatMsgMessage(chatMsgDto.Message));
return Task.CompletedTask;
}
public Task Client_UserReceiveCharacterData(OnlineUserCharaDataDto dataDto)
{
Logger.LogTrace("Client_UserReceiveCharacterData: {user}", dataDto.User);
@@ -188,6 +203,12 @@ public partial class ApiController
_mareHub!.On(nameof(Client_GroupChangePermissions), act);
}
public void OnGroupChatMsg(Action<GroupChatMsgDto> act)
{
if (_initialized) return;
_mareHub!.On(nameof(Client_GroupChatMsg), act);
}
public void OnGroupPairChangePermissions(Action<GroupPairUserPermissionDto> act)
{
if (_initialized) return;
@@ -248,6 +269,12 @@ public partial class ApiController
_mareHub!.On(nameof(Client_UserAddClientPair), act);
}
public void OnUserChatMsg(Action<UserChatMsgDto> act)
{
if (_initialized) return;
_mareHub!.On(nameof(Client_UserChatMsg), act);
}
public void OnUserReceiveCharacterData(Action<OnlineUserCharaDataDto> act)
{
if (_initialized) return;

View File

@@ -1,4 +1,5 @@
using MareSynchronos.API.Dto.Group;
using MareSynchronos.API.Data;
using MareSynchronos.API.Dto.Group;
using MareSynchronos.WebAPI.SignalR.Utils;
using Microsoft.AspNetCore.SignalR.Client;
@@ -36,6 +37,12 @@ public partial class ApiController
return await _mareHub!.InvokeAsync<bool>(nameof(GroupChangePassword), groupPassword).ConfigureAwait(false);
}
public async Task GroupChatSendMsg(GroupDto group, ChatMessage message)
{
CheckConnection();
await _mareHub!.SendAsync(nameof(GroupChatSendMsg), group, message).ConfigureAwait(false);
}
public async Task GroupClear(GroupDto group)
{
CheckConnection();

View File

@@ -323,6 +323,9 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IM
OnGroupSendInfo((dto) => _ = Client_GroupSendInfo(dto));
OnGroupPairChangePermissions((dto) => _ = Client_GroupPairChangePermissions(dto));
OnUserChatMsg((dto) => _ = Client_UserChatMsg(dto));
OnGroupChatMsg((dto) => _ = Client_GroupChatMsg(dto));
_healthCheckTokenSource?.Cancel();
_healthCheckTokenSource?.Dispose();
_healthCheckTokenSource = new CancellationTokenSource();