From bd49d59008d64db13e3f37277ec873a3a464ef9e Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Wed, 31 Jul 2019 17:08:29 +0200 Subject: MVP for service <-> todos integration --- src/features/todos/preload.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/features/todos/preload.js (limited to 'src/features/todos/preload.js') diff --git a/src/features/todos/preload.js b/src/features/todos/preload.js new file mode 100644 index 000000000..533c9aea3 --- /dev/null +++ b/src/features/todos/preload.js @@ -0,0 +1,21 @@ +import { ipcRenderer } from 'electron'; + +const debug = require('debug')('Franz:feature:todos:preload'); + +debug('Preloading Todos Webview'); + +let hostMessageListener = () => {}; + +window.franz = { + onInitialize(ipcHostMessageListener) { + hostMessageListener = ipcHostMessageListener; + }, + sendToHost(message) { + ipcRenderer.sendToHost('clientMessage', message); + }, +}; + +ipcRenderer.on('hostMessage', (event, message) => { + debug('Received host message', event, message); + hostMessageListener(message); +}); -- cgit v1.2.3-70-g09d2 From 81d368040d84a923941732ff0a696065764f12a6 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Thu, 8 Aug 2019 01:00:02 +0200 Subject: send franz config to todos webview on init --- package-lock.json | 2 +- src/features/todos/constants.js | 4 ++++ src/features/todos/preload.js | 6 ++++-- src/features/todos/store.js | 36 ++++++++++++++++++++++++++++-------- 4 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 src/features/todos/constants.js (limited to 'src/features/todos/preload.js') diff --git a/package-lock.json b/package-lock.json index 17513869a..607ebc31a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "franz", - "version": "5.2.0", + "version": "5.2.1-beta.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/features/todos/constants.js b/src/features/todos/constants.js new file mode 100644 index 000000000..2e8a431cc --- /dev/null +++ b/src/features/todos/constants.js @@ -0,0 +1,4 @@ +export const IPC = { + TODOS_HOST_CHANNEL: 'TODOS_HOST_CHANNEL', + TODOS_CLIENT_CHANNEL: 'TODOS_CLIENT_CHANNEL', +}; diff --git a/src/features/todos/preload.js b/src/features/todos/preload.js index 533c9aea3..6e38a2ef3 100644 --- a/src/features/todos/preload.js +++ b/src/features/todos/preload.js @@ -1,4 +1,5 @@ import { ipcRenderer } from 'electron'; +import { IPC } from './constants'; const debug = require('debug')('Franz:feature:todos:preload'); @@ -9,13 +10,14 @@ let hostMessageListener = () => {}; window.franz = { onInitialize(ipcHostMessageListener) { hostMessageListener = ipcHostMessageListener; + ipcRenderer.sendToHost(IPC.TODOS_CLIENT_CHANNEL, { action: 'todos:initialized' }); }, sendToHost(message) { - ipcRenderer.sendToHost('clientMessage', message); + ipcRenderer.sendToHost(IPC.TODOS_CLIENT_CHANNEL, message); }, }; -ipcRenderer.on('hostMessage', (event, message) => { +ipcRenderer.on(IPC.TODOS_HOST_CHANNEL, (event, message) => { debug('Received host message', event, message); hostMessageListener(message); }); diff --git a/src/features/todos/store.js b/src/features/todos/store.js index 79c218b65..acf95df0d 100644 --- a/src/features/todos/store.js +++ b/src/features/todos/store.js @@ -1,3 +1,4 @@ +import { ThemeType } from '@meetfranz/theme'; import { computed, action, @@ -10,6 +11,7 @@ import { FeatureStore } from '../utils/FeatureStore'; import { createReactions } from '../../stores/lib/Reaction'; import { createActionBindings } from '../utils/ActionBinding'; import { DEFAULT_TODOS_WIDTH, TODOS_MIN_WIDTH, DEFAULT_TODOS_VISIBLE } from '.'; +import { IPC } from './constants'; const debug = require('debug')('Franz:feature:todos:store'); @@ -101,22 +103,40 @@ export default class TodoStore extends FeatureStore { @action _handleHostMessage = (message) => { debug('_handleHostMessage', message); - if (message.action === 'create:todo') { - this.webview.send('hostMessage', message); + if (message.action === 'todos:create') { + this.webview.send(IPC.TODOS_HOST_CHANNEL, message); } }; @action _handleClientMessage = (message) => { debug('_handleClientMessage', message); - if (message.action === 'goToService') { - const { url, serviceId } = message.data; - if (url) { - this.stores.services.one(serviceId).webview.loadURL(url); - } - this.actions.service.setActive({ serviceId }); + switch (message.action) { + case 'todos:initialized': this._onTodosClientInitialized(); break; + case 'todos:goToService': this._goToService(message.data); break; + default: + debug('Unknown client message reiceived', message); } }; + // Todos client message handlers + + _onTodosClientInitialized = () => { + this.webview.send(IPC.TODOS_HOST_CHANNEL, { + action: 'todos:configure', + data: { + authToken: this.stores.user.authToken, + theme: this.stores.ui.isDarkThemeActive ? ThemeType.dark : ThemeType.default, + }, + }); + }; + + _goToService = ({ url, serviceId }) => { + if (url) { + this.stores.services.one(serviceId).webview.loadURL(url); + } + this.actions.service.setActive({ serviceId }); + }; + // Reactions _setFeatureEnabledReaction = () => { -- cgit v1.2.3-70-g09d2