51 lines
1.9 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|