56 lines
2.0 KiB
C#
56 lines
2.0 KiB
C#
using Microsoft.AspNetCore.SignalR;
|
|
using QuestShare.Server.Managers;
|
|
|
|
namespace QuestShare.Server.Hubs
|
|
{
|
|
public partial class ShareHub : Hub
|
|
{
|
|
[HubMethodName(nameof(GetShareInfo))]
|
|
public async Task Server_GetShareInfo(GetShareInfo.Request request)
|
|
{
|
|
if (BanManager.IsBanned(Context))
|
|
{
|
|
Context.Abort();
|
|
return;
|
|
}
|
|
var error = Error.None;
|
|
if (request.ShareCode == "") error = Error.InvalidShareCode;
|
|
if (request.Version != Common.Constants.Version) error = Error.InvalidVersion;
|
|
var client = ClientManager.GetClient(Context.ConnectionId, request.Token);
|
|
var share = ShareManager.GetShare(request.ShareCode);
|
|
if (client == null) error = Error.Unauthorized;
|
|
if (share == null) error = Error.ShareNotFound;
|
|
if (error != Error.None)
|
|
{
|
|
await Clients.Caller.SendAsync(nameof(GetShareInfo), new GetShareInfo.Response
|
|
{
|
|
Success = false,
|
|
Error = error,
|
|
Members = [],
|
|
});
|
|
return;
|
|
}
|
|
if (share == null)
|
|
{
|
|
await Clients.Caller.SendAsync(nameof(GetShareInfo), new GetShareInfo.Response
|
|
{
|
|
Success = false,
|
|
Error = Error.ShareNotFound,
|
|
SharedQuestId = share!.SharedQuestId,
|
|
SharedQuestStep = share.SharedQuestStep,
|
|
Members = [],
|
|
});
|
|
return;
|
|
}
|
|
var members = await ShareManager.GetShareMembers(share);
|
|
await Clients.Caller.SendAsync(nameof(GetShareInfo), new GetShareInfo.Response
|
|
{
|
|
Success = true,
|
|
SharedQuestId = share.SharedQuestId,
|
|
SharedQuestStep = share.SharedQuestStep,
|
|
Members = members.Select(m => m.CharacterId).ToList(),
|
|
});
|
|
}
|
|
}
|
|
}
|