using System.Collections.Generic; using Unity.PlasticSCM.Editor.UI.UIElements; using UnityEngine.UIElements; using PlasticGui; using PlasticGui.Configuration.CloudEdition.Welcome; using PlasticGui.Configuration.CloudEdition; using PlasticGui.WebApi; namespace Unity.PlasticSCM.Editor.Configuration.CloudEdition.Welcome { internal class SignInWithEmailPanel : VisualElement, Login.INotify { internal SignInWithEmailPanel( CloudEditionWelcomeWindow parentWindow, IWelcomeWindowNotify notify, IPlasticWebRestApi restApi) { mParentWindow = parentWindow; mNotify = notify; mRestApi = restApi; InitializeLayoutAndStyles(); BuildComponents(); } internal void Dispose() { mSignInButton.clicked -= SignInButton_Clicked; mBackButton.clicked -= BackButton_Clicked; } void SignInButton_Clicked() { CleanNotificationLabels(); Login.Run( mRestApi, new SaveCloudEditionCreds(), mEmailField.text, mPasswordField.text, string.Empty, Login.Mode.Configure, mProgressControls, this); } void BackButton_Clicked() { mNotify.Back(); } void Login.INotify.SuccessForConfigure( List organizations, bool canCreateAnOrganization) { mNotify.SuccessForConfigure( organizations, canCreateAnOrganization); } void Login.INotify.SuccessForSSO( string organization) { mNotify.SuccessForSSO(organization); } void Login.INotify.SuccessForProfile( string userName) { mNotify.SuccessForProfile(userName); } void Login.INotify.SuccessForCredentials(string userName, string password) { mNotify.SuccessForCredentials(userName, password); } void Login.INotify.ValidationFailed( Login.ValidationResult validationResult) { if (validationResult.UserError != null) { mEmailNotificationLabel.text = validationResult.UserError; } if (validationResult.PasswordError != null) { mPasswordNotificationLabel.text = validationResult.PasswordError; } } void Login.INotify.SignUpNeeded( Login.Data loginData) { mNotify.SignUpNeeded(loginData.User, loginData.ClearPassword); } void Login.INotify.Error( string message) { mProgressControls.ShowError(message); } void CleanNotificationLabels() { mEmailNotificationLabel.text = string.Empty; mPasswordNotificationLabel.text = string.Empty; } void BuildComponents() { mEmailField = this.Q("email"); mPasswordField = this.Q("password"); mEmailNotificationLabel = this.Q