104 lines
3.0 KiB
C#
104 lines
3.0 KiB
C#
using System;
|
|
|
|
using UnityEditor;
|
|
|
|
using Codice.Client.Common.Threading;
|
|
using Codice.Client.Common.WebApi;
|
|
using Codice.LogWrapper;
|
|
using Unity.PlasticSCM.Editor.WebApi;
|
|
|
|
namespace Unity.PlasticSCM.Editor.Beta
|
|
{
|
|
[InitializeOnLoad]
|
|
internal static class CalculateUserBetaProgramSetting
|
|
{
|
|
static CalculateUserBetaProgramSetting()
|
|
{
|
|
EditorApplication.update += RunOnceWhenAccessTokenIsInitialized;
|
|
}
|
|
|
|
static void RunOnceWhenAccessTokenIsInitialized()
|
|
{
|
|
if (string.IsNullOrEmpty(CloudProjectSettings.accessToken))
|
|
return;
|
|
|
|
EditorApplication.update -= RunOnceWhenAccessTokenIsInitialized;
|
|
|
|
if (CollabPlugin.IsEnabled())
|
|
return;
|
|
|
|
Execute(CloudProjectSettings.accessToken);
|
|
}
|
|
|
|
static void Execute(string unityAccessToken)
|
|
{
|
|
if (SessionState.GetBool(
|
|
IS_USER_BETA_PROGRAM_ALREADY_CALCULATED_KEY, false))
|
|
{
|
|
return;
|
|
}
|
|
|
|
SessionState.SetBool(
|
|
IS_USER_BETA_PROGRAM_ALREADY_CALCULATED_KEY, true);
|
|
|
|
PlasticApp.InitializeIfNeeded();
|
|
|
|
EnableUserBetaProgramIfNeeded(unityAccessToken);
|
|
}
|
|
|
|
static void EnableUserBetaProgramIfNeeded(string unityAccessToken)
|
|
{
|
|
int ini = Environment.TickCount;
|
|
|
|
UnityPackageBetaEnrollResponse response = null;
|
|
|
|
IThreadWaiter waiter = ThreadWaiter.GetWaiter(10);
|
|
waiter.Execute(
|
|
/*threadOperationDelegate*/ delegate
|
|
{
|
|
response = PlasticScmRestApiClient.IsBetaEnabled(unityAccessToken);
|
|
},
|
|
/*afterOperationDelegate*/ delegate
|
|
{
|
|
mLog.DebugFormat(
|
|
"IsBetaEnabled time {0} ms",
|
|
Environment.TickCount - ini);
|
|
|
|
if (waiter.Exception != null)
|
|
{
|
|
ExceptionsHandler.LogException(
|
|
"CalculateUserBetaProgramSetting",
|
|
waiter.Exception);
|
|
return;
|
|
}
|
|
|
|
if (response == null)
|
|
return;
|
|
|
|
if (response.Error != null)
|
|
{
|
|
mLog.ErrorFormat(
|
|
"Unable to retrieve is beta enabled: {0} [code {1}]",
|
|
response.Error.Message, response.Error.ErrorCode);
|
|
return;
|
|
}
|
|
|
|
if (!response.IsBetaEnabled)
|
|
{
|
|
mLog.InfoFormat(
|
|
"Beta is disabled for accessToken: {0}",
|
|
unityAccessToken);
|
|
return;
|
|
}
|
|
|
|
PlasticMenuItem.Add();
|
|
});
|
|
}
|
|
|
|
const string IS_USER_BETA_PROGRAM_ALREADY_CALCULATED_KEY =
|
|
"PlasticSCM.UserBetaProgram.IsAlreadyCalculated";
|
|
|
|
static readonly ILog mLog = LogManager.GetLogger("CalculateUserBetaProgramSetting");
|
|
}
|
|
}
|