From ba3e6916723fa206e0d2c161a09f66ebe223fe52 Mon Sep 17 00:00:00 2001
From: Eugen Ciur <eugen@papermerge.com>
Date: Sat, 26 Feb 2022 08:31:00 +0100
Subject: [PATCH] refactor services - DRY

---
 app/services/websockets.js       | 33 ++++---------------------------
 app/services/ws/base.js          | 34 ++++++++++++++++++++++++++++++++
 app/services/ws_inbox_refresh.js | 33 ++++---------------------------
 app/services/ws_nodes_move.js    | 33 ++++---------------------------
 4 files changed, 46 insertions(+), 87 deletions(-)
 create mode 100644 app/services/ws/base.js

diff --git a/app/services/websockets.js b/app/services/websockets.js
index a3ebbbb..b28a099 100644
--- a/app/services/websockets.js
+++ b/app/services/websockets.js
@@ -1,33 +1,8 @@
-import Service from '@ember/service';
-import { ws_base_url } from 'papermerge/utils/host';
+import WSBaseService  from 'papermerge/services/ws/base';
 
 
-export default class Websockets extends Service {
-
-
-  constructor(owner, args) {
-    super(owner, args);
-
-    let that = this;
-
-    this._socket = new WebSocket(`${ws_base_url()}/document/`);
-    this._handlers = [];
-
-    this._socket.onmessage = function(event) {
-      that._handlers.forEach((item) => {
-        let json_data;
-
-        try {
-          json_data = JSON.parse(event.data);
-          item.handler.apply(item.context, [json_data, event]);
-        } catch (err) {
-          console.log(`Error ${err} while parsing incoming data: ${event.data}`);
-        }
-      });
-    }
-  }
-
-  addHandler(handler, context) {
-    this._handlers.push({handler, context});
+export default class Websockets extends WSBaseService {
+  url() {
+    return '/document/';
   }
 }
\ No newline at end of file
diff --git a/app/services/ws/base.js b/app/services/ws/base.js
new file mode 100644
index 0000000..5f45c21
--- /dev/null
+++ b/app/services/ws/base.js
@@ -0,0 +1,34 @@
+import { ws_base_url } from 'papermerge/utils/host';
+import Service from '@ember/service';
+
+
+export default class WSBaseService extends Service {
+
+
+  constructor(owner, args) {
+    super(owner, args);
+
+    let that = this;
+
+    this._socket = new WebSocket(`${ws_base_url()}${this.url()}`);
+    this._handlers = [];
+
+    this._socket.onmessage = function(event) {
+      that._handlers.forEach((item) => {
+        let json_data;
+
+        try {
+          json_data = JSON.parse(event.data);
+          item.handler.apply(item.context, [json_data, event]);
+        } catch (err) {
+          console.log(`Error ${err} while parsing incoming data: ${event.data}`);
+        }
+      });
+    }
+  }
+
+  addHandler(handler, context) {
+    this._handlers.push({handler, context});
+  }
+
+}
diff --git a/app/services/ws_inbox_refresh.js b/app/services/ws_inbox_refresh.js
index 707bf5c..4079927 100644
--- a/app/services/ws_inbox_refresh.js
+++ b/app/services/ws_inbox_refresh.js
@@ -1,33 +1,8 @@
-import { ws_base_url } from 'papermerge/utils/host';
-import Service from '@ember/service';
+import WSBaseService from 'papermerge/services/ws/base';
 
 
-export default class WSInboxRefresh extends Service {
-
-
-  constructor(owner, args) {
-    super(owner, args);
-
-    let that = this;
-
-    this._socket = new WebSocket(`${ws_base_url()}/nodes/inbox-refresh/`);
-    this._handlers = [];
-
-    this._socket.onmessage = function(event) {
-      that._handlers.forEach((item) => {
-        let json_data;
-
-        try {
-          json_data = JSON.parse(event.data);
-          item.handler.apply(item.context, [json_data, event]);
-        } catch (err) {
-          console.log(`Error ${err} while parsing incoming data: ${event.data}`);
-        }
-      });
-    }
-  }
-
-  addHandler(handler, context) {
-    this._handlers.push({handler, context});
+export default class WSInboxRefresh extends WSBaseService {
+  url() {
+    return '/nodes/inbox-refresh/';
   }
 }
\ No newline at end of file
diff --git a/app/services/ws_nodes_move.js b/app/services/ws_nodes_move.js
index 7bb4510..930fec4 100644
--- a/app/services/ws_nodes_move.js
+++ b/app/services/ws_nodes_move.js
@@ -1,33 +1,8 @@
-import { ws_base_url } from 'papermerge/utils/host';
-import Service from '@ember/service';
+import WSBaseService  from 'papermerge/services/ws/base';
 
 
-export default class WSNodesMove extends Service {
-
-
-  constructor(owner, args) {
-    super(owner, args);
-
-    let that = this;
-
-    this._socket = new WebSocket(`${ws_base_url()}/nodes/move`);
-    this._handlers = [];
-
-    this._socket.onmessage = function(event) {
-      that._handlers.forEach((item) => {
-        let json_data;
-
-        try {
-          json_data = JSON.parse(event.data);
-          item.handler.apply(item.context, [json_data, event]);
-        } catch (err) {
-          console.log(`Error ${err} while parsing incoming data: ${event.data}`);
-        }
-      });
-    }
-  }
-
-  addHandler(handler, context) {
-    this._handlers.push({handler, context});
+export default class WSNodesMove extends WSBaseService {
+  url() {
+    return '/nodes/move/';
   }
 }
\ No newline at end of file
-- 
GitLab