using System; using UnityEngine; using UnityEngine.UIElements; using Codice.Client.Common; using Codice.Client.Common.OAuth; using Codice.CM.Common; using PlasticGui; using PlasticGui.WebApi; using Unity.PlasticSCM.Editor.UI; using Unity.PlasticSCM.Editor.UI.UIElements; using PlasticGui.Configuration.CloudEdition.Welcome; using PlasticGui.Configuration.OAuth; namespace Unity.PlasticSCM.Editor.Configuration.CloudEdition.Welcome { internal class SignInPanel : VisualElement { internal SignInPanel( CloudEditionWelcomeWindow parentWindow, IPlasticWebRestApi restApi, CmConnection cmConnection) { mParentWindow = parentWindow; mRestApi = restApi; mCmConnection = cmConnection; InitializeLayoutAndStyles(); BuildComponents(); } internal void Dispose() { mSignInWithUnityIdButton.clicked -= SignInWithUnityIdButton_Clicked; mSignInWithEmailButton.clicked -= SignInWithEmailButton_Clicked; mPrivacyPolicyStatementButton.clicked -= PrivacyPolicyStatementButton_Clicked; mSignUpButton.clicked -= SignUpButton_Clicked; if (mSignInWithEmailPanel != null) mSignInWithEmailPanel.Dispose(); if (mWaitingSignInPanel != null) mWaitingSignInPanel.Dispose(); } void SignInWithEmailButton_Clicked() { mSignInWithEmailPanel = new SignInWithEmailPanel(mParentWindow, mRestApi); mParentWindow.ReplaceRootPanel(mSignInWithEmailPanel); } void SignUpButton_Clicked() { Application.OpenURL(UnityUrl.DevOps.GetSignUp()); } internal void SignInWithUnityIdButton_Clicked() { mWaitingSignInPanel = new WaitingSignInPanel( mParentWindow, mParentWindow, mRestApi, mCmConnection); mParentWindow.ReplaceRootPanel(mWaitingSignInPanel); Guid state = Guid.NewGuid(); GetOauthProviders.AuthInfo provider = GetCloudSsoProviders.BuildAuthInfoForUnityId(string.Empty, state); mWaitingSignInPanel.OAuthSignIn( state, provider.SignInUrl, provider.ProviderName, new GetCloudSsoToken(mRestApi)); } internal void SignInWithUnityIdButtonAutoLogin() { mWaitingSignInPanel = new WaitingSignInPanel( mParentWindow, mParentWindow, mRestApi, mCmConnection); mWaitingSignInPanel.OnAutoLogin(); mParentWindow.ReplaceRootPanel(mWaitingSignInPanel); } void PrivacyPolicyStatementButton_Clicked() { Application.OpenURL(SignUp.PRIVACY_POLICY_URL); } void BuildComponents() { BuildSignUpArea(); BuildSignInUnityIdArea(); BuildSignInEmailArea(); BuildPrivatePolicyArea(); } void BuildPrivatePolicyArea() { this.SetControlText