- commit
- eb10a08b33f3b4fc4f9ab0f80dd5c7b3ce9f2ce3
- parent
- fc4ac1a7137b4dcdce486a76250b80955bfb5279
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2020-10-18 06:56
replace socket.io by via
Diffstat
| M | package.json | 3 | +-- |
| M | static/src/voterunner.js | 83 | +++++++++++++++++++++++++++++++++++++------------------------ |
| M | static/test/test.js | 5 | ++--- |
3 files changed, 54 insertions, 37 deletions
diff --git a/package.json b/package.json
@@ -3,8 +3,7 @@ 3 3 "version": "0.0.1", 4 4 "devDependencies": { 5 5 "mfbs": "^3.1.1",6 -1 "preact": "^8.2.6",7 -1 "socket.io-client": "^1.7.4"-1 6 "preact": "^8.2.6" 8 7 }, 9 8 "author": "Tobias Bengfort", 10 9 "license": "AGPL-3+"
diff --git a/static/src/voterunner.js b/static/src/voterunner.js
@@ -1,4 +1,3 @@1 -1 var io = require('socket.io-client');2 1 var template = require('./template'); 3 2 var utils = require('./utils'); 4 3 @@ -9,9 +8,7 @@ document.addEventListener('DOMContentLoaded', function() { 9 8 if (!ID) ID = utils.randomString(); 10 9 utils.setCookie('id', ID, 100); 11 1012 -1 var socket = io.connect('/');13 -1 window.socket = socket; // make available for tests14 -1 socket.emit('register', TOPIC, ID);-1 11 var url = 'https://via.ce9e.org/hmsg/voterunner/' + TOPIC; 15 12 16 13 var state = { 17 14 nodes: [], @@ -76,12 +73,18 @@ document.addEventListener('DOMContentLoaded', function() { 76 73 utils.on(document, 'click', '.node__delegate', function() { 77 74 var nodeElement = this.parentElement.parentElement.parentElement; 78 75 var id = nodeElement.id.substr(5);79 -1 socket.emit('setDelegate', id);-1 76 fetch(url, { -1 77 method: 'POST', -1 78 body: JSON.stringify(['setDelegate', state.id, id]), -1 79 }); 80 80 }); 81 81 82 82 utils.on(document, 'click', '.user__rm', function() { 83 83 if (confirm('Do you really want to delete this opinion?')) {84 -1 socket.emit('rmNode');-1 84 fetch(url, { -1 85 method: 'POST', -1 86 body: JSON.stringify(['rmNode', state.id]), -1 87 }); 85 88 document.querySelector('.user__comment textarea').value = ''; 86 89 } 87 90 }); @@ -92,7 +95,10 @@ document.addEventListener('DOMContentLoaded', function() { 92 95 }); 93 96 94 97 utils.on(document, 'click', '.user__undelegate', function() {95 -1 socket.emit('rmDelegate');-1 98 fetch(url, { -1 99 method: 'POST', -1 100 body: JSON.stringify(['rmDelegate', state.id]), -1 101 }); 96 102 }); 97 103 98 104 utils.on(document, 'input', '.user__comment textarea', utils.throttle(function() { @@ -101,33 +107,46 @@ document.addEventListener('DOMContentLoaded', function() { 101 107 // Do not create a new node if the comment is empty. 102 108 // This can happen e.g. on a keydown event from the ctrl or shift keys. 103 109 if (node || comment) {104 -1 socket.emit('setNodeComment', comment);-1 110 fetch(url, { -1 111 method: 'POST', -1 112 body: JSON.stringify(['setNodeComment', state.id, comment]), -1 113 }); 105 114 } 106 115 }, 1000)); 107 116108 -1 socket.on('rmNode', function(id) {109 -1 state.nodes = state.nodes.filter(function(node) {110 -1 if (node.delegate === id) {111 -1 node.delegate = null;112 -1 }113 -1 return node.id !== id;114 -1 });115 -1 invalidateVotes();116 -1 update(state);117 -1 });118 -1 socket.on('setNodeComment', function(id, comment) {119 -1 getNode(id).comment = comment;120 -1 update(state);121 -1 });122 -1 socket.on('setDelegate', function(id, delegate) {123 -1 getNode(id).delegate = delegate;124 -1 invalidateVotes();125 -1 ensureVisible(user);126 -1 update(state);127 -1 });128 -1 socket.on('rmDelegate', function(id) {129 -1 getNode(id).delegate = null;130 -1 invalidateVotes();-1 117 var evtSource = new EventSource(url); -1 118 evtSource.onmessage = function(event) { -1 119 var data = JSON.parse(event.data); -1 120 var name = data[0]; -1 121 var id = data[1]; -1 122 -1 123 if (!id) { -1 124 return; -1 125 } else if (name === 'rmNode') { -1 126 state.nodes = state.nodes.filter(function(node) { -1 127 if (node.delegate === id) { -1 128 node.delegate = null; -1 129 } -1 130 return node.id !== id; -1 131 }); -1 132 invalidateVotes(); -1 133 } else if (name === 'setNodeComment') { -1 134 getNode(id).comment = data[2]; -1 135 } else if (name === 'setDelegate') { -1 136 getNode(id).delegate = data[2]; -1 137 invalidateVotes(); -1 138 ensureVisible(state.nodes.find(n => n.id === state.id)); -1 139 } else if (name === 'rmDelegate') { -1 140 getNode(id).delegate = null; -1 141 invalidateVotes(); -1 142 } 131 143 update(state);132 -1 });-1 144 }; -1 145 -1 146 window.testClear = function(done) { -1 147 fetch(url, { -1 148 method: 'PUT', -1 149 body: JSON.stringify(['setNodes', null, []]), -1 150 }).then(done); -1 151 }; 133 152 });
diff --git a/static/test/test.js b/static/test/test.js
@@ -24,9 +24,8 @@ var setUp = function(url, fn) {
24 24 };
25 25
26 26 iframe.tearDown = function(done) {
27 -1 var self = this;
28 -1 self.contentWindow.socket.emit('testClear', function() {
29 -1 self.parentNode.removeChild(self);
-1 27 this.contentWindow.testClear(() => {
-1 28 this.parentNode.removeChild(this);
30 29 done();
31 30 });
32 31 };