From 7be39dc4d4ccfa6938b46c104f2cb2a0dc4d8de2 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Thu, 27 Oct 2016 21:20:05 +1300 Subject: [PATCH] Basic pusher call --- src/js/helpers.js | 7 +++++++ src/js/services/pusher/middleware.js | 15 ++++++++++++++- src/js/services/pusher/reducer.js | 16 +++++++++++----- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/js/helpers.js b/src/js/helpers.js index d996f338..3910d919 100755 --- a/src/js/helpers.js +++ b/src/js/helpers.js @@ -29,4 +29,11 @@ export let SizedImages = function( images ){ } return sizes; +} + +export let generateGuid = function(){ + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); + return v.toString(16); + }); } \ No newline at end of file diff --git a/src/js/services/pusher/middleware.js b/src/js/services/pusher/middleware.js index e7842058..4b117815 100755 --- a/src/js/services/pusher/middleware.js +++ b/src/js/services/pusher/middleware.js @@ -1,5 +1,6 @@ var actions = require('./actions.js') +var helpers = require('../../helpers.js') const PusherMiddleware = (function(){ @@ -10,10 +11,18 @@ const PusherMiddleware = (function(){ const handleMessage = (ws, store, message) => { switch( message.action ){ default: - store.dispatch({ type: 'PUSHER_'+message.action.toUpperCase(), data: message.data }) + var name = message.action.toUpperCase(); + name = name.replace('GET_',''); + store.dispatch({ type: 'PUSHER_'+name, data: message.data }) } } + const makeRequest = (data) => { + data.type = 'query'; + data.message_id = helpers.generateGuid(); + socket.send( JSON.stringify(data) ); + } + /** * Middleware * @@ -47,6 +56,10 @@ const PusherMiddleware = (function(){ break; + case 'PUSHER_CONNECTED': + makeRequest({ action: 'get_version' }); + break; + // This action is irrelevant to us, pass it on to the next middleware default: return next(action); diff --git a/src/js/services/pusher/reducer.js b/src/js/services/pusher/reducer.js index ce385195..01cacbcb 100755 --- a/src/js/services/pusher/reducer.js +++ b/src/js/services/pusher/reducer.js @@ -8,11 +8,17 @@ export default function reducer(pusher = {}, action){ case 'PUSHER_DISCONNECTED': return Object.assign({}, pusher, { connected: false, connecting: false }); - case 'PUSHER_SET_CONFIG': - return Object.assign({}, pusher, { - host: action.host, - port: action.port - }); + case 'PUSHER_SET_PORT': + return Object.assign({}, pusher, { port: action.port }); + + case 'PUSHER_CLIENT_CONNECTED': + return Object.assign({}, pusher, { connections: action.data }); + + case 'PUSHER_CONNECTIONS_LOADED': + return Object.assign({}, pusher, { connections: action.data }); + + case 'PUSHER_VERSION': + return Object.assign({}, pusher, { version: action.data }); default: return pusher