From 7d316dcfdc4334d6693bfacfa2b581dae9d14dd8 Mon Sep 17 00:00:00 2001 From: Eugen Ciur <eugen@papermerge.com> Date: Sat, 26 Feb 2022 07:54:59 +0100 Subject: [PATCH] service to trigger inbox refresh --- app/controllers/authenticated.js | 12 ++++++++++++ app/services/ws_inbox_refresh.js | 33 ++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 app/services/ws_inbox_refresh.js diff --git a/app/controllers/authenticated.js b/app/controllers/authenticated.js index 4c174d1..f7c6959 100644 --- a/app/controllers/authenticated.js +++ b/app/controllers/authenticated.js @@ -1,12 +1,24 @@ import { action } from '@ember/object'; import Controller from '@ember/controller'; import { tracked } from '@glimmer/tracking'; +import { service } from '@ember/service'; export default class AuthenticatedController extends Controller { // sidebar expanded ? @tracked expanded = true; + @service ws_inbox_refresh; + @service router; + + constructor() { + super(...arguments); + this.ws_inbox_refresh.addHandler(this.wsInboxRefreshHandler, this); + } + + wsInboxRefreshHandler() { + this.router.refresh(); + } @action onSidebarToggle() { diff --git a/app/services/ws_inbox_refresh.js b/app/services/ws_inbox_refresh.js new file mode 100644 index 0000000..707bf5c --- /dev/null +++ b/app/services/ws_inbox_refresh.js @@ -0,0 +1,33 @@ +import { ws_base_url } from 'papermerge/utils/host'; +import Service from '@ember/service'; + + +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}); + } +} \ No newline at end of file -- GitLab