From fa1491bbfbb1261757943759edf44883d31e5477 Mon Sep 17 00:00:00 2001
From: JoramWilander <jwawilander@gmail.com>
Date: Wed, 12 Aug 2015 12:45:15 -0400
Subject: finalize implenetation of predictive client posts so that users get
 immediate feedback after posting

---
 web/react/stores/socket_store.jsx | 128 ++++++++++++++++++++------------------
 1 file changed, 68 insertions(+), 60 deletions(-)

(limited to 'web/react/stores/socket_store.jsx')

diff --git a/web/react/stores/socket_store.jsx b/web/react/stores/socket_store.jsx
index 8ebb854c9..c3c331828 100644
--- a/web/react/stores/socket_store.jsx
+++ b/web/react/stores/socket_store.jsx
@@ -15,72 +15,80 @@ var CHANGE_EVENT = 'change';
 var conn;
 
 var SocketStore = assign({}, EventEmitter.prototype, {
-  initialize: function(self) {
-    if (!UserStore.getCurrentId()) return;
-
-    if (!self) self = this;
-    self.setMaxListeners(0);
-
-    if (window["WebSocket"] && !conn) {
-      var protocol = window.location.protocol == "https:" ? "wss://" : "ws://";
-      var port = window.location.protocol == "https:" ? ":8443" : "";
-      var conn_url = protocol + location.host + port + "/api/v1/websocket";
-      console.log("connecting to " + conn_url);
-      conn = new WebSocket(conn_url);
-
-      conn.onclose = function(evt) {
-        console.log("websocket closed");
-        console.log(evt);
-        conn = null;
-        setTimeout(function(){self.initialize(self)}, 3000);
-      };
-
-      conn.onerror = function(evt) {
-        console.log("websocket error");
-        console.log(evt);
-      };
-
-      conn.onmessage = function(evt) {
-        AppDispatcher.handleServerAction({
-          type: ActionTypes.RECIEVED_MSG,
-          msg: JSON.parse(evt.data)
-        });
-      };
-    }
-  },
-  emitChange: function(msg) {
-    this.emit(CHANGE_EVENT, msg);
-  },
-  addChangeListener: function(callback) {
-    this.on(CHANGE_EVENT, callback);
-  },
-  removeChangeListener: function(callback) {
-    this.removeListener(CHANGE_EVENT, callback);
-  },
-  sendMessage: function (msg) {
-    if (conn && conn.readyState === WebSocket.OPEN) {
-      conn.send(JSON.stringify(msg));
-    } else if (!conn || conn.readyState === WebSocket.Closed) {
-      conn = null;
-      this.initialize();
+    initialize: function() {
+        if (!UserStore.getCurrentId()) {
+            return;
+        }
+
+        var self = this;
+        self.setMaxListeners(0);
+
+        if (window.WebSocket && !conn) {
+            var protocol = 'ws://';
+            var port = '';
+            if (window.location.protocol === 'https:') {
+                protocol = 'wss://';
+                port = ':8443';
+            }
+            var connUrl = protocol + location.host + port + '/api/v1/websocket';
+            console.log('connecting to ' + connUrl);
+            conn = new WebSocket(connUrl);
+
+            conn.onclose = function closeConn(evt) {
+                console.log('websocket closed');
+                console.log(evt);
+                conn = null;
+                setTimeout(
+                    function reconnect() {
+                        self.initialize();
+                    },
+                    3000
+                );
+            };
+
+            conn.onerror = function connError(evt) {
+                console.log('websocket error');
+                console.log(evt);
+            };
+
+            conn.onmessage = function connMessage(evt) {
+                AppDispatcher.handleServerAction({
+                    type: ActionTypes.RECIEVED_MSG,
+                    msg: JSON.parse(evt.data)
+                });
+            };
+        }
+    },
+    emitChange: function(msg) {
+        this.emit(CHANGE_EVENT, msg);
+    },
+    addChangeListener: function(callback) {
+        this.on(CHANGE_EVENT, callback);
+    },
+    removeChangeListener: function(callback) {
+        this.removeListener(CHANGE_EVENT, callback);
+    },
+    sendMessage: function(msg) {
+        if (conn && conn.readyState === WebSocket.OPEN) {
+            conn.send(JSON.stringify(msg));
+        } else if (!conn || conn.readyState === WebSocket.Closed) {
+            conn = null;
+            this.initialize();
+        }
     }
-  }
 });
 
 SocketStore.dispatchToken = AppDispatcher.register(function(payload) {
-  var action = payload.action;
+    var action = payload.action;
 
-  switch(action.type) {
-    case ActionTypes.RECIEVED_MSG:
-      SocketStore.emitChange(action.msg);
-      break;
-    default:
-  }
+    switch (action.type) {
+        case ActionTypes.RECIEVED_MSG:
+        SocketStore.emitChange(action.msg);
+        break;
+
+        default:
+    }
 });
 
 SocketStore.initialize();
 module.exports = SocketStore;
-
-
-
-
-- 
cgit v1.2.3-1-g7c22

