SignInPanel.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. using UnityEngine;
  2. using UnityEngine.UIElements;
  3. using Codice.Client.Common;
  4. using PlasticGui;
  5. using PlasticGui.WebApi.Responses;
  6. using PlasticGui.WebApi;
  7. using Unity.PlasticSCM.Editor.UI;
  8. using Unity.PlasticSCM.Editor.UI.UIElements;
  9. using PlasticGui.Configuration.CloudEdition.Welcome;
  10. namespace Unity.PlasticSCM.Editor.Configuration.CloudEdition.Welcome
  11. {
  12. internal class SignInPanel : VisualElement
  13. {
  14. internal SignInPanel(
  15. CloudEditionWelcomeWindow parentWindow,
  16. IPlasticWebRestApi restApi,
  17. CmConnection cmConnection)
  18. {
  19. mParentWindow = parentWindow;
  20. mRestApi = restApi;
  21. mCmConnection = cmConnection;
  22. InitializeLayoutAndStyles();
  23. BuildComponents();
  24. }
  25. internal void Dispose()
  26. {
  27. mSignInWithUnityIdButton.clicked -= SignInWithUnityIdButton_Clicked;
  28. mSignInWithEmailButton.clicked -= SignInWithEmailButton_Clicked;
  29. mPrivacyPolicyStatementButton.clicked -= PrivacyPolicyStatementButton_Clicked;
  30. if (mSignInWithEmailPanel != null)
  31. mSignInWithEmailPanel.Dispose();
  32. if (mWaitingSignInPanel != null)
  33. mWaitingSignInPanel.Dispose();
  34. }
  35. void SignInWithEmailButton_Clicked()
  36. {
  37. mSignInWithEmailPanel = new SignInWithEmailPanel(
  38. mParentWindow,
  39. mParentWindow,
  40. mRestApi);
  41. mParentWindow.ReplaceRootPanel(mSignInWithEmailPanel);
  42. }
  43. internal void SignInWithUnityIdButton_Clicked()
  44. {
  45. mWaitingSignInPanel = new WaitingSignInPanel(
  46. mParentWindow,
  47. mParentWindow,
  48. mRestApi,
  49. mCmConnection);
  50. mParentWindow.ReplaceRootPanel(mWaitingSignInPanel);
  51. mWaitingSignInPanel.OAuthSignInForConfigure(SsoProvider.UNITY_URL_ACTION);
  52. }
  53. internal void SignInWithUnityIdButtonAutoLogin()
  54. {
  55. mWaitingSignInPanel = new WaitingSignInPanel(
  56. mParentWindow,
  57. mParentWindow,
  58. mRestApi,
  59. mCmConnection);
  60. mParentWindow.ReplaceRootPanel(mWaitingSignInPanel);
  61. }
  62. void PrivacyPolicyStatementButton_Clicked()
  63. {
  64. // TODO: update when dll is avaiable PlasticGui.Configuration.CloudEdition.Welcome
  65. // SignUp.PRIVACY_POLICY_URL
  66. Application.OpenURL(SignUp.PRIVACY_POLICY_URL);
  67. }
  68. void BuildComponents()
  69. {
  70. this.SetControlImage("iconUnity",
  71. Images.Name.ButtonSsoSignInUnity);
  72. mSignInWithUnityIdButton = this.Query<Button>("unityIDButton").First();
  73. mSignInWithUnityIdButton.text = PlasticLocalization.GetString(
  74. PlasticLocalization.Name.SignInWithUnityID);
  75. mSignInWithUnityIdButton.clicked += SignInWithUnityIdButton_Clicked;
  76. this.SetControlImage("iconEmail",
  77. Images.Name.ButtonSsoSignInEmail);
  78. mSignInWithEmailButton = this.Query<Button>("emailButton").First();
  79. mSignInWithEmailButton.text = PlasticLocalization.GetString(
  80. PlasticLocalization.Name.SignInWithEmail);
  81. mSignInWithEmailButton.clicked += SignInWithEmailButton_Clicked;
  82. this.SetControlText<Label>("privacyStatementText",
  83. PlasticLocalization.Name.PrivacyStatementText,
  84. PlasticLocalization.GetString(PlasticLocalization.Name.PrivacyStatement));
  85. mPrivacyPolicyStatementButton = this.Query<Button>("privacyStatement").First();
  86. mPrivacyPolicyStatementButton.text = PlasticLocalization.GetString(
  87. PlasticLocalization.Name.PrivacyStatement);
  88. mPrivacyPolicyStatementButton.clicked += PrivacyPolicyStatementButton_Clicked;
  89. }
  90. void InitializeLayoutAndStyles()
  91. {
  92. AddToClassList("grow");
  93. this.LoadLayout(typeof(SignInPanel).Name);
  94. this.LoadStyle("SignInSignUp");
  95. this.LoadStyle(typeof(SignInPanel).Name);
  96. }
  97. SignInWithEmailPanel mSignInWithEmailPanel;
  98. WaitingSignInPanel mWaitingSignInPanel;
  99. Button mSignInWithUnityIdButton;
  100. Button mSignInWithEmailButton;
  101. Button mPrivacyPolicyStatementButton;
  102. readonly CloudEditionWelcomeWindow mParentWindow;
  103. readonly IPlasticWebRestApi mRestApi;
  104. readonly CmConnection mCmConnection;
  105. }
  106. }