XMPP invitation landing page, without javascript
Wrap the JS in a IIFE
Alex Jordan 2017-01-16
parent 32e79da · commit 4848929
-rw-r--r--scripts/main.js150
1 files changed, 76 insertions, 74 deletions
diff --git a/scripts/main.js b/scripts/main.js
index e59c47e..c6b831f 100644
--- a/scripts/main.js
+++ b/scripts/main.js
@@ -1,85 +1,87 @@
-// load i18n and perform translation
-var i18n = new I18nText({path: 'lang'});
-i18n.once(I18nText.EVT_LOCALE_CHANGE, function (data) {
- translate_ui();
-});
-i18n.setLocale('en');
+(function() {
+ // load i18n and perform translation
+ var i18n = new I18nText({path: 'lang'});
+ i18n.once(I18nText.EVT_LOCALE_CHANGE, function (data) {
+ translate_ui();
+ });
+ i18n.setLocale('en');
-// i18n key prefix for MUC ("muc.") or 1:1 chat ("chat.")
-var key_prefix;
-var display_data = null;
+ // i18n key prefix for MUC ("muc.") or 1:1 chat ("chat.")
+ var key_prefix;
+ var display_data = null;
-function show_clients(client_array) {
- var list = document.getElementById('client_list');
- for (var id = 0; id < client_array.length; id++) {
- var item = document.createElement('li');
- item.innerHTML = client_array[id];
- list.appendChild(item);
+ function show_clients(client_array) {
+ var list = document.getElementById('client_list');
+ for (var id = 0; id < client_array.length; id++) {
+ var item = document.createElement('li');
+ item.innerHTML = client_array[id];
+ list.appendChild(item);
+ }
}
-}
-function load_clients() {
- url = "clients.json";
- var request = new XMLHttpRequest();
- request.open('GET', url);
- request.onreadystatechange = function () {
- if (request.readyState === 4) {
- if (request.status == 200 || (isLocalFileRequest(url) && request.responseText.length > 0)) {
- show_clients(JSON.parse(request.responseText));
+ function load_clients() {
+ var url = "clients.json";
+ var request = new XMLHttpRequest();
+ request.open('GET', url);
+ request.onreadystatechange = function () {
+ if (request.readyState === 4) {
+ if (request.status == 200 || (isLocalFileRequest(url) && request.responseText.length > 0)) {
+ show_clients(JSON.parse(request.responseText));
+ }
}
- }
- };
- request.send(null);
-}
-
-function load_hash() {
- var muc = false;
- key_prefix = "chat.";
- var jid = window.location.search || window.location.hash;
- jid = decodeURIComponent(jid.substring(jid.indexOf('#') + 1, jid.length));
- try {
- base_decoded = window.atob(jid);
- if (base_decoded.search('@') >= 0)
- jid = base_decoded;
- } catch (err) {
- // ignore error, JID wasn't base64 encoded
- }
- if (jid.search("\\?join") >= 0) {
- muc = true;
- key_prefix = "muc.";
+ };
+ request.send(null);
}
- // TODO: proper error checking / display / Creation of invitations
- if (jid.search("@") <= 0) return {jid:"", name: "Somebody"};
+ function load_hash() {
+ var muc = false;
+ key_prefix = "chat.";
+ var jid = window.location.search || window.location.hash;
+ jid = decodeURIComponent(jid.substring(jid.indexOf('#') + 1, jid.length));
+ try {
+ base_decoded = window.atob(jid);
+ if (base_decoded.search('@') >= 0)
+ jid = base_decoded;
+ } catch (err) {
+ // ignore error, JID wasn't base64 encoded
+ }
+ if (jid.search("\\?join") >= 0) {
+ muc = true;
+ key_prefix = "muc.";
+ }
+
+ // TODO: proper error checking / display / Creation of invitations
+ if (jid.search("@") <= 0) return {jid:"", name: "Somebody"};
- var name = jid.split("@")[0];
- name = name.charAt(0).toUpperCase() + name.slice(1);
- return {jid: jid, name: name};
-}
+ var name = jid.split("@")[0];
+ name = name.charAt(0).toUpperCase() + name.slice(1);
+ return {jid: jid, name: name};
+ }
-function translate_ui() {
- // translation
- document.title = i18n.text(key_prefix + 'title', display_data);
- // MUC/chat specific
- ['heading', 'intro', 'button'].forEach(function(id) {
- document.getElementById(id).innerHTML = i18n.text(key_prefix + id, display_data);
- });
- // and agnostic
- ['clients', 'recommend', 'checkfulllist', 'xmppis'].forEach(function(id) {
- document.getElementById(id).innerHTML = i18n.text(id, display_data);
- });
-}
+ function translate_ui() {
+ // translation
+ document.title = i18n.text(key_prefix + 'title', display_data);
+ // MUC/chat specific
+ ['heading', 'intro', 'button'].forEach(function(id) {
+ document.getElementById(id).innerHTML = i18n.text(key_prefix + id, display_data);
+ });
+ // and agnostic
+ ['clients', 'recommend', 'checkfulllist', 'xmppis'].forEach(function(id) {
+ document.getElementById(id).innerHTML = i18n.text(id, display_data);
+ });
+ }
-function rehash() {
- display_data = load_hash();
- document.getElementById('button').href = "xmpp:" + display_data.jid;
- document.getElementById('url_in').value = "xmpp:" + display_data.jid;
- translate_ui();
-}
+ function rehash() {
+ display_data = load_hash();
+ document.getElementById('button').href = "xmpp:" + display_data.jid;
+ document.getElementById('url_in').value = "xmpp:" + display_data.jid;
+ translate_ui();
+ }
-function load_done() {
- // functionality
- load_clients();
- rehash();
- window.addEventListener("hashchange", rehash, false);
-}
+ function load_done() {
+ // functionality
+ load_clients();
+ rehash();
+ window.addEventListener("hashchange", rehash, false);
+ }
+})();