Finish user signup
[blerg.git] / www / jssrc / blerg / SignupDialog.js
index c62108b..3a1660f 100644 (file)
@@ -1,28 +1,59 @@
 enyo.kind({
-       name: "blerg.SignupDialog",
-       kind: "onyx.Popup",
-       classes: "blerg-dialog",
-       autoDismiss: true,
-       centered: true,
-       floating: true,
-       modal: true,
-       components: [
-               {tag: "h2", content: "Sign Up"},
-               {kind: "onyx.Groupbox", components: [
-                       {kind: "onyx.InputDecorator", components: [
-                               {name: "username", kind: "onyx.Input", placeholder: "Username"}
-                       ]},
-                       {kind: "onyx.InputDecorator", components: [
-                               {name: "password", kind: "onyx.Input", placeholder: "Password", type: "password"}
-                       ]}
-               ]},
-               {kind: "onyx.Button", content: "Signup", onclick: "signupClick", classes: "onyx-affirmative"},
-               {kind: "onyx.Button", content: "Cancel", onclick: "cancelClick", classes: "onyx-negative"}
-       ],
-       signupClick: function() {
-               // Do stuff
-       },
-       cancelClick: function() {
-               this.hide();
-       }
+    name: "blerg.SignupDialog",
+    kind: "onyx.Popup",
+    classes: "blerg-dialog",
+    autoDismiss: true,
+    centered: true,
+    floating: true,
+    modal: true,
+    components: [
+        {tag: "h2", content: "Sign Up"},
+        {name: "spinner", kind: "OldSchoolSpinner", showing: false, style: "position: absolute; top: 8px; right: 8px"},
+        {kind: "onyx.Groupbox", components: [
+            {kind: "onyx.InputDecorator", components: [
+                {name: "username", kind: "onyx.Input", placeholder: "Username"}
+            ]},
+            {kind: "onyx.InputDecorator", components: [
+                {name: "password", kind: "onyx.Input", placeholder: "Password", type: "password"}
+            ]}
+        ]},
+        {name: "message", tag: "p", content: "No, really, that's all I need. I don't want to send you email. It's too much work to program in email updates. :-P"},
+        {name: "signupError", tag: "p", showing: false, classes: "blerg-error", content: "I couldn't sign you up. That username is already in use, or something went wrong on the backend. *shrug*"},
+        {name: "signupButton", kind: "onyx.Button", content: "Signup", onclick: "signupClick", classes: "onyx-affirmative"},
+        {kind: "onyx.Button", content: "Cancel", onclick: "cancelClick", classes: "onyx-negative"},
+        {name: "api", kind: "blerg.API",
+         onSignupSuccess: "signupSuccess",
+         onSignupFailure: "signupFailure"}
+    ],
+    signupClick: function() {
+        this.$.signupButton.setDisabled(true);
+        this.$.spinner.show();
+        this.$.spinner.start();
+        this.$.api.signup(this.$.username.getValue(), this.$.password.getValue());
+    },
+    cancelClick: function() {
+        this.$.signupError.hide();
+        this.$.message.show();
+        this.$.username.setValue('');
+        this.$.password.setValue('');
+        this.hide();
+    },
+    signupSuccess: function(inSender, inEvent) {
+        this.$.signupButton.setDisabled(false);
+        this.$.spinner.hide();
+        this.$.spinner.stop();
+        this.bubble('onTryLogin', {
+            username: this.$.username.getValue(),
+            password: this.$.password.getValue()
+        });
+        window.location.href = '/#' + inEvent.username;
+        this.cancelClick();
+    },
+    signupFailure: function(inSender, inEvent) {
+        this.$.signupButton.setDisabled(false);
+        this.$.spinner.hide();
+        this.$.spinner.stop();
+        this.$.message.hide();
+        this.$.signupError.show();
+    }
 });