A game about forced loneliness, made by TACStudios
1using System;
2
3using UnityEngine;
4using UnityEngine.UIElements;
5
6using Codice.Client.Common;
7using Codice.Client.Common.Authentication;
8using Codice.Client.Common.WebApi;
9using Codice.CM.Common;
10using PlasticGui;
11using Unity.PlasticSCM.Editor.UI;
12using Unity.PlasticSCM.Editor.UI.UIElements;
13using PlasticGui.Configuration.CloudEdition.Welcome;
14
15namespace Unity.PlasticSCM.Editor.Configuration.CloudEdition.Welcome
16{
17 internal class SignInPanel : VisualElement
18 {
19 internal SignInPanel(
20 CloudEditionWelcomeWindow parentWindow, IPlasticWebRestApi restApi)
21 {
22 mParentWindow = parentWindow;
23 mRestApi = restApi;
24
25 InitializeLayoutAndStyles();
26
27 BuildComponents();
28 }
29
30 internal void Dispose()
31 {
32 mSignInWithUnityIdButton.clicked -= SignInWithUnityIdButton_Clicked;
33 mSignInWithEmailButton.clicked -= SignInWithEmailButton_Clicked;
34 mPrivacyPolicyStatementButton.clicked -= PrivacyPolicyStatementButton_Clicked;
35 mSignUpButton.clicked -= SignUpButton_Clicked;
36
37 if (mSignInWithEmailPanel != null)
38 mSignInWithEmailPanel.Dispose();
39
40 if (mWaitingSignInPanel != null)
41 mWaitingSignInPanel.Dispose();
42 }
43
44 void SignInWithEmailButton_Clicked()
45 {
46 mSignInWithEmailPanel = new SignInWithEmailPanel(mParentWindow, mRestApi);
47
48 mParentWindow.ReplaceRootPanel(mSignInWithEmailPanel);
49 }
50
51 void SignUpButton_Clicked()
52 {
53 Application.OpenURL(UnityUrl.DevOps.GetSignUp());
54 }
55
56 internal void SignInWithUnityIdButton_Clicked()
57 {
58 mWaitingSignInPanel = new WaitingSignInPanel(
59 mParentWindow, mParentWindow, mRestApi);
60
61 mParentWindow.ReplaceRootPanel(mWaitingSignInPanel);
62
63 Guid state = Guid.NewGuid();
64
65 mWaitingSignInPanel.OAuthSignIn(
66 GetAuthProviders.GetUnityIdAuthProvider(string.Empty, state),
67 GetCredentialsFromState.Build(
68 string.Empty, state, SEIDWorkingMode.SSOWorkingMode, mRestApi));
69 }
70
71 internal void SignInWithUnityIdButtonAutoLogin()
72 {
73 mWaitingSignInPanel = new WaitingSignInPanel(
74 mParentWindow, mParentWindow, mRestApi);
75
76 mWaitingSignInPanel.OnAutoLogin();
77
78 mParentWindow.ReplaceRootPanel(mWaitingSignInPanel);
79 }
80
81 void PrivacyPolicyStatementButton_Clicked()
82 {
83 Application.OpenURL(UnityUrl.DevOps.GetPrivacyPolicy());
84 }
85
86 void BuildComponents()
87 {
88 BuildSignUpArea();
89 BuildSignInUnityIdArea();
90 BuildSignInEmailArea();
91 BuildPrivatePolicyArea();
92 }
93
94 void BuildPrivatePolicyArea()
95 {
96 this.SetControlText<Label>(
97 "privacyStatementText",
98 PlasticLocalization.Name.PrivacyStatementText,
99 PlasticLocalization.GetString(PlasticLocalization.Name.PrivacyStatement));
100
101 mPrivacyPolicyStatementButton = this.Query<Button>("privacyStatement");
102 mPrivacyPolicyStatementButton.text = PlasticLocalization.Name.PrivacyStatement.GetString();
103 mPrivacyPolicyStatementButton.clicked += PrivacyPolicyStatementButton_Clicked;
104 }
105
106 void BuildSignInEmailArea()
107 {
108 this.SetControlImage(
109 "iconEmail",
110 Images.Name.ButtonSsoSignInEmail);
111
112 mSignInWithEmailButton = this.Query<Button>("emailButton");
113 mSignInWithEmailButton.text = PlasticLocalization.Name.SignInWithEmail.GetString();
114 mSignInWithEmailButton.clicked += SignInWithEmailButton_Clicked;
115 }
116
117 void BuildSignInUnityIdArea()
118 {
119 this.SetControlImage(
120 "iconUnity",
121 Images.Name.ButtonSsoSignInUnity);
122
123 mSignInWithUnityIdButton = this.Query<Button>("unityIDButton");
124 mSignInWithUnityIdButton.text = PlasticLocalization.Name.SignInWithUnityID.GetString();
125 mSignInWithUnityIdButton.clicked += SignInWithUnityIdButton_Clicked;
126 }
127
128 void BuildSignUpArea()
129 {
130 Label signUpLabel = this.Query<Label>("signUpLabel");
131 signUpLabel.text = PlasticLocalization.Name.LoginOrSignUp.GetString();
132
133 mSignUpButton = this.Query<Button>("signUpButton");
134 mSignUpButton.text = PlasticLocalization.Name.SignUpButton.GetString();
135 mSignUpButton.clicked += SignUpButton_Clicked;
136 }
137
138 void InitializeLayoutAndStyles()
139 {
140 AddToClassList("grow");
141
142 this.LoadLayout(typeof(SignInPanel).Name);
143 this.LoadStyle(typeof(SignInPanel).Name);
144 }
145
146 SignInWithEmailPanel mSignInWithEmailPanel;
147 WaitingSignInPanel mWaitingSignInPanel;
148 Button mSignInWithUnityIdButton;
149 Button mSignInWithEmailButton;
150 Button mPrivacyPolicyStatementButton;
151 Button mSignUpButton;
152
153 readonly CloudEditionWelcomeWindow mParentWindow;
154 readonly IPlasticWebRestApi mRestApi;
155 }
156}