public async UniTask SignUp() { if (signUpIdInput.text.IsNullOrEmptyTrimmed()) { Toast.Next(Toast.Status.Failure, "TOAST_ENTER_ID".Get()); return; } if (signUpPasswordInput.text.IsNullOrEmptyTrimmed()) { Toast.Next(Toast.Status.Failure, "TOAST_ENTER_PASSWORD".Get()); return; } if (signUpEmailInput.text.IsNullOrEmptyTrimmed()) { Toast.Next(Toast.Status.Failure, "TOAST_ENTER_EMAIL_ADDRESS".Get()); return; } var id = signUpIdInput.text = signUpIdInput.text.ToLower(CultureInfo.InvariantCulture).Trim(); var password = signUpPasswordInput.text; var email = signUpEmailInput.text; if (!Regex.IsMatch(id, "^[a-z0-9-_]{3,16}$")) { Toast.Next(Toast.Status.Failure, "TOAST_INCORRECT_ID_FORMAT".Get()); return; } if (password.Length < 9) { Toast.Next(Toast.Status.Failure, "TOAST_INCORRECT_PASSWORD_FORMAT".Get()); return; } if (!IsValidEmail(email)) { Toast.Next(Toast.Status.Failure, "TOAST_INVALID_EMAIL_ADDRESS".Get()); return; } if (!await TermsOverlay.Show("TERMS_OF_SERVICE".Get())) { return; } var registered = false; var failed = false; RestClient.Put(new RequestHelper { Uri = Context.ApiUrl + $"/session?captcha={SecuredOperations.GetCaptcha()}", Headers = Context.OnlinePlayer.GetRequestHeaders(), EnableDebug = true, Body = new SignUpBody { uid = id, password = password, email = email } }) .Then(_ => { registered = true; }) .CatchRequestError(error => { failed = true; Debug.LogWarning("Sign up failed."); Debug.LogWarning(error); var errorResponse = JsonConvert.DeserializeObject <SignUpErrorResponse>(error.Response); Toast.Next(Toast.Status.Failure, errorResponse.message); }); closeButton.Leave(); signInButtonParent.Leave(); await UniTask.WaitUntil(() => registered || failed); if (failed) { closeButton.Enter(); signInButtonParent.Enter(); return; } var completed = false; Authenticate(id, password, true).Finally(() => { completed = true; signUpIdInput.text = ""; signUpPasswordInput.text = ""; signUpEmailInput.text = ""; signInIdInput.text = id; if (!lastAuthenticateSucceeded) { signInPasswordInput.text = password; SwitchToSignIn(); } }); await UniTask.WaitUntil(() => completed); if (State != ScreenState.Active) { return; } closeButton.Enter(); signInButtonParent.Enter(); }
public async void TermsCopyrightPolicy() { TermsOverlay.Show("COPYRIGHT_POLICY".Get()); }
protected override async void LoadPayload(ScreenLoadPromise promise) { if (Context.Player.ShouldOneShot("Agree Copyright Policy")) { Context.Player.ClearOneShot("Agree Copyright Policy"); if (!await TermsOverlay.Show("COPYRIGHT_POLICY".Get())) { promise.Reject(); Context.ScreenManager.ChangeScreen(Context.ScreenManager.PopAndPeekHistory(), ScreenTransition.Out, addTargetScreenToHistory: false); return; } Context.Player.ShouldOneShot("Agree Copyright Policy"); } SpinnerOverlay.Show(); var promises = new List <IPromise>(); foreach (var section in IntentPayload.Layout.Sections) { switch (section) { case Layout.LevelSection levelSection: promises.Add(RestClient.GetArray <OnlineLevel>(new RequestHelper { Uri = levelSection.Query.BuildUri(levelSection.PreviewSize), Headers = Context.OnlinePlayer.GetRequestHeaders(), EnableDebug = true }).Then(data => { levelSection.Levels = data.ToList(); })); break; case Layout.CollectionSection collectionSection: { var collectionPromises = new List <RSG.IPromise <CollectionMeta> >(); foreach (var collectionId in collectionSection.CollectionIds) { collectionPromises.Add(RestClient.Get <CollectionMeta>(new RequestHelper { Uri = $"{Context.ApiUrl}/collections/{collectionId}", Headers = Context.OnlinePlayer.GetRequestHeaders(), EnableDebug = true })); } promises.Add(Promise <CollectionMeta> .All(collectionPromises).Then(data => { collectionSection.Collections = data.ToList() .Zip(collectionSection.CollectionIds, (meta, id) => meta.Also(it => it.id = id)) .Zip(collectionSection.CollectionTitleKeys, (meta, title) => meta.Also(it => it.title = title.Get())) .Zip(collectionSection.CollectionSloganKeys, (meta, slogan) => meta.Also(it => it.slogan = slogan.Get())) .ToList(); })); break; } } } Promise.All(promises) .Then(() => { promise.Resolve(IntentPayload); }) .Catch(error => { Dialog.PromptGoBack("DIALOG_COULD_NOT_CONNECT_TO_SERVER".Get()); Debug.LogError(error); promise.Reject(); }) .Finally(() => SpinnerOverlay.Hide()); }
public async void TermsToS() { TermsOverlay.Show("TERMS_OF_SERVICE".Get()); }