Quellcode durchsuchen

Make the router global and clear login/register fragments

upon login or after registering.
JC Brand vor 7 Jahren
Ursprung
Commit
46ca6c7de2
3 geänderte Dateien mit 22 neuen und 16 gelöschten Zeilen
  1. 4 0
      src/converse-controlbox.js
  2. 3 0
      src/converse-core.js
  3. 15 16
      src/converse-register.js

+ 4 - 0
src/converse-controlbox.js

@@ -550,6 +550,10 @@
                             jid = Strophe.getBareJidFromJid(jid).toLowerCase()+'/'+resource;
                         }
                     }
+                    if (_.includes(["converse/login", "converse/register"],
+                            Backbone.history.getFragment())) {
+                        _converse.router.navigate('', {'replace': true});
+                    }
                     _converse.connection.reset();
                     _converse.connection.connect(jid, password, _converse.onConnectStatusChanged);
                 }

+ 3 - 0
src/converse-core.js

@@ -230,6 +230,9 @@
         }
     };
 
+    _converse.router = new Backbone.Router();
+
+
     _converse.initialize = function (settings, callback) {
         "use strict";
         settings = !_.isUndefined(settings) ? settings : {};

+ 15 - 16
src/converse-register.js

@@ -59,7 +59,7 @@
             // relevant objects or classes.
             //
             // New functions which don't exist yet can also be added.
-        
+
             LoginPanel: {
 
                 render: function (cfg) {
@@ -145,19 +145,15 @@
                 providers_link: 'https://xmpp.net/directory.php', // Link to XMPP providers shown on registration page
             });
 
-            const RegistrationRouter = Backbone.Router.extend({
-                initialize () {
-                    this.route('converse/login', _.partial(this.setActiveForm, 'login'));
-                    this.route('converse/register', _.partial(this.setActiveForm, 'register'));
-                },
-                setActiveForm (value) {
-                    _converse.api.waitUntil('controlboxInitialized').then(() => {
-                        const controlbox = _converse.chatboxes.get('controlbox')
-                        controlbox.set({'active-form': value});
-                    }).catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL));
-                }
-            });
-            const router = new RegistrationRouter();
+
+            function setActiveForm (value) {
+                _converse.api.waitUntil('controlboxInitialized').then(() => {
+                    const controlbox = _converse.chatboxes.get('controlbox')
+                    controlbox.set({'active-form': value});
+                }).catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL));
+            }
+            _converse.router.route('converse/login', _.partial(setActiveForm, 'login'));
+            _converse.router.route('converse/register', _.partial(setActiveForm, 'register'));
 
 
             _converse.RegisterPanel = Backbone.View.extend({
@@ -419,11 +415,14 @@
                         );
                         this.abortRegistration();
                     } else if (status_code === Strophe.Status.REGISTERED) {
-                        router.navigate(); // Strip the URL fragment
                         _converse.log("Registered successfully.");
                         _converse.connection.reset();
                         this.showSpinner();
 
+                        if (_.includes(["converse/login", "converse/register"], Backbone.History.getFragment())) {
+                            _converse.router.navigate('', {'replace': true});
+                        }
+
                         if (this.fields.password && this.fields.username) {
                             // automatically log the user in
                             _converse.connection.connect(
@@ -458,7 +457,7 @@
                             form.insertAdjacentHTML(
                                 'beforeend',
                                 tpl_form_input({
-                                    'label': key, 
+                                    'label': key,
                                     'name': key,
                                     'placeholder': key,
                                     'required': true,