using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; using Codice.Client.Common; using Codice.Client.Common.Authentication; using Codice.Client.Common.WebApi; using Codice.Client.Common.WebApi.Responses; using Codice.CM.Common; using PlasticGui; using PlasticGui.Configuration.CloudEdition.Welcome; using PlasticGui.Configuration.CloudEdition; using Unity.PlasticSCM.Editor.UI.UIElements; namespace Unity.PlasticSCM.Editor.Configuration.CloudEdition.Welcome { internal class SignInWithEmailPanel : VisualElement, GetCloudOrganizations.INotify { internal SignInWithEmailPanel( IWelcomeWindowNotify notify, IPlasticWebRestApi restApi) { mNotify = notify; mRestApi = restApi; InitializeLayoutAndStyles(); BuildComponents(); } internal void Dispose() { mSignInButton.clicked -= SignInButton_Clicked; mBackButton.clicked -= BackButton_Clicked; mSignUpButton.clicked -= SignUpButton_Clicked; } void ShowSignUpNeeded() { mSignUpNeededNotificationContainer.Show(); } void HideSignUpNeeded() { mSignUpNeededNotificationContainer.Collapse(); } void GetCloudOrganizations.INotify.CloudOrganizationsRetrieved( List cloudServers) { mNotify.ProcessLoginResponseWithOrganizations(mCredentials, cloudServers); } void GetCloudOrganizations.INotify.Error( ErrorResponse.ErrorFields error) { if (error.ErrorCode == ErrorCodes.UserNotFound) { ShowSignUpNeeded(); return; } HideSignUpNeeded(); ((IProgressControls)mProgressControls).ShowError(error.Message); } void CleanNotificationLabels() { mEmailNotificationLabel.text = string.Empty; mPasswordNotificationLabel.text = string.Empty; HideSignUpNeeded(); } void SignInButton_Clicked() { CleanNotificationLabels(); ValidateEmailAndPassword.ValidationResult validationResult; if (!ValidateEmailAndPassword.IsValid(mEmailField.text, mPasswordField.text, out validationResult)) { ShowValidationResult(validationResult); return; } mCredentials = new Credentials( new SEID(mEmailField.text, false, mPasswordField.text), SEIDWorkingMode.LDAPWorkingMode); GetCloudOrganizations.GetOrganizationsInThreadWaiter( mCredentials.User.Data, mCredentials.User.Password, mProgressControls, this, mRestApi, CmConnection.Get()); } void ShowValidationResult( ValidateEmailAndPassword.ValidationResult validationResult) { if (validationResult.UserError != null) { mEmailNotificationLabel.text = validationResult.UserError; } if (validationResult.PasswordError != null) { mPasswordNotificationLabel.text = validationResult.PasswordError; } } void BackButton_Clicked() { mNotify.Back(); } void InitializeLayoutAndStyles() { this.LoadLayout(typeof(SignInWithEmailPanel).Name); this.LoadStyle(typeof(SignInWithEmailPanel).Name); } void SignUpButton_Clicked() { Application.OpenURL(UnityUrl.DevOps.GetSignUp()); } void BuildComponents() { mEmailField = this.Q("email"); mPasswordField = this.Q("password"); mEmailNotificationLabel = this.Q