2025-03-01 20:38:45 -05:00

51 lines
1.9 KiB
C#

namespace QuestShare.Services.API
{
internal class Authorize_Client
{
public static void HandleDispatch()
{
if (ClientState.LocalContentId == 0)
{
_ = ((ApiService)Plugin.GetService<ApiService>()).Disconnect();
return;
}
var knownCodes = ShareService.ShareCodes.Select(s => s).ToList();
if (HostService.ActiveSession != null)
{
knownCodes.Add(new Objects.ShareCode { CharacterId = HostService.ActiveSession.OwnerCharacterId, Code = HostService.ActiveSession.ShareCode });
}
var request = new Authorize.Request()
{
Token = ApiService.Token,
Version = Constants.Version,
ShareCodes = knownCodes,
};
((ApiService)Plugin.GetService<ApiService>()).Invoke(nameof(Authorize), request).ConfigureAwait(false);
}
public static Task HandleResponse(Authorize.Response response)
{
var share = (ShareService)Plugin.GetService<ShareService>();
if (response.Success)
{
ConfigurationManager.Instance.Token = response.Token;
foreach(var session in response.Sessions)
{
share.AddSession(session);
}
if (response.OwnedSession != null)
{
ConfigurationManager.Instance.OwnedSession = response.OwnedSession;
}
ConfigurationManager.Save();
}
else
{
Log.Error("Failed to authorize: {Error}", response.Error);
UiService.LastErrorMessage = $"Failed to authorize: {response.Error}";
_ = ((ApiService)Plugin.GetService<ApiService>()).Disconnect();
}
return Task.CompletedTask;
}
}
}