using System; using UnityEngine; using UnityEngine.UIElements; using Codice.Client.Common; using Codice.Client.Common.Authentication; using Codice.Client.Common.WebApi; using Codice.CM.Common; using PlasticGui; using Unity.PlasticSCM.Editor.UI; using Unity.PlasticSCM.Editor.UI.UIElements; using PlasticGui.Configuration.CloudEdition.Welcome; namespace Unity.PlasticSCM.Editor.Configuration.CloudEdition.Welcome { internal class SignInPanel : VisualElement { internal SignInPanel( CloudEditionWelcomeWindow parentWindow, IPlasticWebRestApi restApi) { mParentWindow = parentWindow; mRestApi = restApi; 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); mParentWindow.ReplaceRootPanel(mWaitingSignInPanel); Guid state = Guid.NewGuid(); mWaitingSignInPanel.OAuthSignIn( GetAuthProviders.GetUnityIdAuthProvider(string.Empty, state), GetCredentialsFromState.Build( string.Empty, state, SEIDWorkingMode.SSOWorkingMode, mRestApi)); } internal void SignInWithUnityIdButtonAutoLogin() { mWaitingSignInPanel = new WaitingSignInPanel( mParentWindow, mParentWindow, mRestApi); mWaitingSignInPanel.OnAutoLogin(); mParentWindow.ReplaceRootPanel(mWaitingSignInPanel); } void PrivacyPolicyStatementButton_Clicked() { Application.OpenURL(UnityUrl.DevOps.GetPrivacyPolicy()); } void BuildComponents() { BuildSignUpArea(); BuildSignInUnityIdArea(); BuildSignInEmailArea(); BuildPrivatePolicyArea(); } void BuildPrivatePolicyArea() { this.SetControlText