From d1e6bd669857c296bbe22fd295abefde92389196 Mon Sep 17 00:00:00 2001
From: Lorenz H-S <lorenz-dev@lgh-alumni.de>
Date: Fri, 20 Dec 2013 13:09:23 +0000
Subject: [PATCH] Add UI support for compression

---
 index.html       | 6 ++++++
 js/websockets.js | 7 ++++---
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/index.html b/index.html
index fb80453..15c6621 100644
--- a/index.html
+++ b/index.html
@@ -72,6 +72,12 @@
                         Encryption. Read instructions for help
                       </label>
                     </div>
+                    <div class="checkbox">
+                      <label class="control-label " for="compression">
+                        <input type="checkbox" class="" id="compression" ng-model="compression">
+                        Compress communication with relay
+                      </label>
+                    </div>
                   </div>
                   <div class="form-group">
                     <label class="control-label" for="port">Lines</label>
diff --git a/js/websockets.js b/js/websockets.js
index b519a6c..1dea75b 100644
--- a/js/websockets.js
+++ b/js/websockets.js
@@ -276,7 +276,7 @@ weechat.factory('connection', ['$q', '$rootScope', '$log', '$store', 'handlers',
     };
 
     // Takes care of the connection and websocket hooks
-    var connect = function (host, port, passwd, ssl) {
+    var connect = function (host, port, passwd, ssl, compression) {
         var proto = ssl ? 'wss':'ws';
         websocket = new WebSocket(proto+"://" + host + ':' + port + "/weechat");
         websocket.binaryType = "arraybuffer";
@@ -291,7 +291,7 @@ weechat.factory('connection', ['$q', '$rootScope', '$log', '$store', 'handlers',
             sendAll([
                 weeChat.Protocol.formatInit({
                     password: passwd,
-                    compression: 'off'
+                    compression: compression ? 'zlib' : 'off'
                 }),
 
                 weeChat.Protocol.formatInfo({
@@ -532,6 +532,7 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout',
     $store.bind($scope, "port", "9001");
     $store.bind($scope, "proto", "weechat");
     $store.bind($scope, "ssl", false);
+    $store.bind($scope, "compression", false);
     $store.bind($scope, "lines", "40");
     $store.bind($scope, "savepassword", false);
     if($scope.savepassword) {
@@ -600,7 +601,7 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout',
 
 
     $scope.connect = function() {
-        connection.connect($scope.host, $scope.port, $scope.password, $scope.ssl);
+        connection.connect($scope.host, $scope.port, $scope.password, $scope.ssl, $scope.compression);
     };
     $scope.disconnect = function() {
         connection.disconnect();