A game about forced loneliness, made by TACStudios
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 146 lines 5.4 kB view raw
1using System; 2using UnityEditor; 3using UnityEngine; 4 5using Codice.Client.Common.Threading; 6using Codice.CM.Common; 7using Codice.LogWrapper; 8using PlasticGui; 9using Unity.PlasticSCM.Editor.UI; 10using Unity.PlasticSCM.Editor.WebApi; 11 12namespace Unity.PlasticSCM.Editor.Configuration.CloudEdition.Welcome 13{ 14 internal class AutoLogin 15 { 16 internal enum State : byte 17 { 18 Off = 0, 19 Started = 1, 20 Running = 2, 21 ResponseInit = 3, 22 ResponseEnd = 4, 23 ResponseSuccess = 5, 24 ErrorNoToken = 20, 25 ErrorTokenException = 21, 26 ErrorResponseNull = 22, 27 ErrorResponseError = 23, 28 ErrorTokenEmpty = 24, 29 } 30 31 internal void Run() 32 { 33 mPlasticWindow = GetPlasticWindow(); 34 35 if (!string.IsNullOrEmpty(CloudProjectSettings.accessToken)) 36 { 37 mLog.Debug("Run"); 38 ExchangeTokensAndJoinOrganizationInThreadWaiter(CloudProjectSettings.accessToken); 39 return; 40 } 41 42 mPlasticWindow.GetWelcomeView().autoLoginState = AutoLogin.State.ErrorNoToken; 43 } 44 45 void ExchangeTokensAndJoinOrganizationInThreadWaiter(string unityAccessToken) 46 { 47 int ini = Environment.TickCount; 48 49 TokenExchangeResponse tokenExchangeResponse = null; 50 51 IThreadWaiter waiter = ThreadWaiter.GetWaiter(10); 52 waiter.Execute( 53 /*threadOperationDelegate*/ delegate 54 { 55 mPlasticWindow.GetWelcomeView().autoLoginState = AutoLogin.State.ResponseInit; 56 tokenExchangeResponse = WebRestApiClient.PlasticScm.TokenExchange(unityAccessToken); 57 }, 58 /*afterOperationDelegate*/ delegate 59 { 60 mLog.DebugFormat( 61 "TokenExchange time {0} ms", 62 Environment.TickCount - ini); 63 64 if (waiter.Exception != null) 65 { 66 mPlasticWindow.GetWelcomeView().autoLoginState = AutoLogin.State.ErrorTokenException; 67 ExceptionsHandler.LogException( 68 "TokenExchangeSetting", 69 waiter.Exception); 70 Debug.LogWarning(waiter.Exception.Message); 71 return; 72 } 73 74 if (tokenExchangeResponse == null) 75 { 76 mPlasticWindow.GetWelcomeView().autoLoginState = AutoLogin.State.ErrorResponseNull; 77 var warning = PlasticLocalization.GetString(PlasticLocalization.Name.TokenExchangeResponseNull); 78 mLog.Warn(warning); 79 Debug.LogWarning(warning); 80 return; 81 } 82 83 if (tokenExchangeResponse.Error != null) 84 { 85 mPlasticWindow.GetWelcomeView().autoLoginState = AutoLogin.State.ErrorResponseError; 86 var warning = string.Format( 87 PlasticLocalization.GetString(PlasticLocalization.Name.TokenExchangeResponseError), 88 tokenExchangeResponse.Error.Message, tokenExchangeResponse.Error.ErrorCode); 89 mLog.ErrorFormat(warning); 90 Debug.LogWarning(warning); 91 return; 92 } 93 94 if (string.IsNullOrEmpty(tokenExchangeResponse.AccessToken)) 95 { 96 mPlasticWindow.GetWelcomeView().autoLoginState = AutoLogin.State.ErrorTokenEmpty; 97 var warning = string.Format( 98 PlasticLocalization.GetString(PlasticLocalization.Name.TokenExchangeAccessEmpty), 99 tokenExchangeResponse.User); 100 mLog.InfoFormat(warning); 101 Debug.LogWarning(warning); 102 return; 103 } 104 105 mPlasticWindow.GetWelcomeView().autoLoginState = AutoLogin.State.ResponseEnd; 106 107 Credentials credentials = new Credentials( 108 new SEID(tokenExchangeResponse.User, false, tokenExchangeResponse.AccessToken), 109 SEIDWorkingMode.SSOWorkingMode); 110 111 ShowOrganizationsPanel(credentials); 112 }); 113 } 114 115 void ShowOrganizationsPanel(Credentials credentials) 116 { 117 mPlasticWindow = GetPlasticWindow(); 118 mPlasticWindow.GetWelcomeView().autoLoginState = AutoLogin.State.ResponseSuccess; 119 120 CloudEditionWelcomeWindow.ShowWindow( 121 PlasticGui.Plastic.WebRestAPI, null, true); 122 123 mCloudEditionWelcomeWindow = CloudEditionWelcomeWindow.GetWelcomeWindow(); 124 125 mCloudEditionWelcomeWindow.GetOrganizations(credentials); 126 127 mCloudEditionWelcomeWindow.Focus(); 128 } 129 130 static PlasticWindow GetPlasticWindow() 131 { 132 var windows = Resources.FindObjectsOfTypeAll<PlasticWindow>(); 133 PlasticWindow plasticWindow = windows.Length > 0 ? windows[0] : null; 134 135 if (plasticWindow == null) 136 plasticWindow = ShowWindow.Plastic(); 137 138 return plasticWindow; 139 } 140 141 PlasticWindow mPlasticWindow; 142 CloudEditionWelcomeWindow mCloudEditionWelcomeWindow; 143 144 static readonly ILog mLog = PlasticApp.GetLogger("AutoLogin"); 145 } 146}