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(), }); } } }