From 40b83037b3f2715096436f38bc7da5dba63414fa Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Sun, 19 Feb 2017 21:27:43 +1300 Subject: [PATCH] Renaming of pusher events --- mopidy_iris/core.py | 21 ++++++++++--- src/js/bootstrap.js | 2 +- src/js/components/PusherConnectionList.js | 12 ++++++-- src/js/services/localstorage/middleware.js | 7 ++--- src/js/services/pusher/actions.js | 2 +- src/js/services/pusher/middleware.js | 28 +++++------------ src/js/services/pusher/reducer.js | 36 +++++++++++++--------- src/js/services/ui/middleware.js | 2 +- src/js/views/Settings.js | 2 +- 9 files changed, 61 insertions(+), 51 deletions(-) diff --git a/mopidy_iris/core.py b/mopidy_iris/core.py index 75b0a8b4..14e27eaf 100755 --- a/mopidy_iris/core.py +++ b/mopidy_iris/core.py @@ -108,9 +108,17 @@ class IrisCore(object): } self.connections[connection_id] = new_connection + self.send_message( + connection_id, { + 'type': 'connected', + 'connection_id': connection_id, + 'username': client['username'] + } + ) + self.broadcast({ - 'type': 'client_connected', - 'client': client + 'type': 'connection_added', + 'connection': client }) def remove_connection(self, connection_id): @@ -119,8 +127,8 @@ class IrisCore(object): client = self.connections[connection_id]['client'] del self.connections[connection_id] self.broadcast({ - 'type': 'client_disconnected', - 'client': client + 'type': 'connection_removed', + 'connection': client }) except: logger.error('Failed to close connection to '+ connection_id) @@ -133,7 +141,10 @@ class IrisCore(object): 'type': 'connection_updated', 'connection': self.connections[connection_id]['client'] }) - return {} + return { + 'type': 'username_changed', + 'username': data['username'] + } else: error = 'Connection "'+data['connection_id']+'" not found' diff --git a/src/js/bootstrap.js b/src/js/bootstrap.js index b174b7df..365064c6 100755 --- a/src/js/bootstrap.js +++ b/src/js/bootstrap.js @@ -37,7 +37,7 @@ var initialState = { connected: false, port: 6681, username: 'Anonymous', - connections: [], + connections: {}, version: { current: '0.0.0' } diff --git a/src/js/components/PusherConnectionList.js b/src/js/components/PusherConnectionList.js index 1957ef56..2477a920 100755 --- a/src/js/components/PusherConnectionList.js +++ b/src/js/components/PusherConnectionList.js @@ -28,12 +28,20 @@ class PusherConnectionList extends React.Component{ render(){ if( !this.props.connected ) return
Not connected
- if( typeof(this.props.connections) == 'undefined' || this.props.connections.length <= 0 ) return
No connections
; + + var connections = [] + for (var connection_id in this.props.connections){ + if (this.props.connections.hasOwnProperty(connection_id)) { + connections.push(this.props.connections[connection_id]) + } + } + + if (connections.length <= 0) return
No connections
; return (
{ - this.props.connections.map( (connection, index) => { + connections.map( (connection, index) => { var is_me = false; if( connection.connection_id == this.props.connection_id ) is_me = true; return ( diff --git a/src/js/services/localstorage/middleware.js b/src/js/services/localstorage/middleware.js index 1b7b6925..e7b12904 100755 --- a/src/js/services/localstorage/middleware.js +++ b/src/js/services/localstorage/middleware.js @@ -23,8 +23,7 @@ const localstorageMiddleware = (function(){ if( !pusher ) pusher = {}; Object.assign( pusher,{ - username: action.connection.username, - connectionid: action.connection.connectionid + connection_id: action.connection_id } ); localStorage.setItem('pusher', JSON.stringify(pusher)); @@ -37,9 +36,9 @@ const localstorageMiddleware = (function(){ localStorage.setItem('pusher', JSON.stringify(pusher)); break; - case 'PUSHER_USERNAME': + case 'PUSHER_USERNAME_CHANGED': var stored_pusher = JSON.parse( localStorage.getItem('pusher') ) - var pusher = Object.assign({}, stored_pusher, { username: action.data.username }) + var pusher = Object.assign({}, stored_pusher, { username: action.username }) localStorage.setItem('pusher', JSON.stringify(pusher)) break; diff --git a/src/js/services/pusher/actions.js b/src/js/services/pusher/actions.js index 8c4440e1..fa1a6a66 100755 --- a/src/js/services/pusher/actions.js +++ b/src/js/services/pusher/actions.js @@ -37,7 +37,7 @@ export function startUpgrade(){ export function getConnections(){ return { - type: 'GET_CONNECTIONS' + type: 'PUSHER_GET_CONNECTIONS' } } diff --git a/src/js/services/pusher/middleware.js b/src/js/services/pusher/middleware.js index 5043376a..961b15d4 100755 --- a/src/js/services/pusher/middleware.js +++ b/src/js/services/pusher/middleware.js @@ -22,7 +22,7 @@ const PusherMiddleware = (function(){ // handle all manner of socket messages const handleMessage = (ws, store, message) => { - console.log(message) + // response to a request [we] made if (typeof(message.request_id) !== 'undefined' && message.request_id){ if (typeof( deferredRequests[ message.request_id ]) !== 'undefined' ){ @@ -34,7 +34,7 @@ const PusherMiddleware = (function(){ // general message // this can be client-client, server-client or a broadcast to many clients } else { - message.type = message.type.toUpperCase() + message.type = 'PUSHER_'+message.type.toUpperCase() store.dispatch(message) } } @@ -88,11 +88,6 @@ const PusherMiddleware = (function(){ [ connection.clientid, connection.connection_id, connection.username ] ); - socket.onopen = () => { - store.dispatch({ type: 'PUSHER_CONNECTED', connection_id: connection.connection_id }); - store.dispatch({ type: 'PUSHER_SET_USERNAME', username: connection.username }); - }; - socket.onmessage = (message) => { var message = JSON.parse(message.data); handleMessage( socket, store, message ) @@ -149,10 +144,6 @@ const PusherMiddleware = (function(){ return next(action); break; - case 'ERROR': - store.dispatch( uiActions.createNotification(action.source+': '+action.message,'bad') ) - break; - case 'PUSHER_GET_QUEUE_METADATA': request('get_queue_metadata') .then( @@ -171,7 +162,7 @@ const PusherMiddleware = (function(){ }) break; - case 'START_UPGRADE': + case 'PUSHER_START_UPGRADE': request('upgrade') .then( response => { @@ -199,21 +190,18 @@ const PusherMiddleware = (function(){ }) .then( response => { - console.log(response) if (response.error){ console.error(response.error) return false } - - //response.type = 'PUSHER_USERNAME' - //store.dispatch(response) + response.type = 'PUSHER_USERNAME_CHANGED' + store.dispatch(response) } ) return next(action); break; - case 'GET_CONNECTIONS': - case 'NEW_CONNECTION': + case 'PUSHER_GET_CONNECTIONS': request('get_connections') .then( response => { @@ -221,8 +209,7 @@ const PusherMiddleware = (function(){ console.error(response.error) return false } - - response.type = 'CONNECTIONS' + response.type = 'PUSHER_CONNECTIONS' store.dispatch(response) } ) @@ -237,7 +224,6 @@ const PusherMiddleware = (function(){ console.error(response.error) return false } - response.type = 'DEBUG' store.dispatch(response) } diff --git a/src/js/services/pusher/reducer.js b/src/js/services/pusher/reducer.js index 49750fc1..8650691f 100755 --- a/src/js/services/pusher/reducer.js +++ b/src/js/services/pusher/reducer.js @@ -8,7 +8,9 @@ export default function reducer(pusher = {}, action){ case 'PUSHER_CONNECTED': return Object.assign({}, pusher, { - connection_id: action.connection_id + connected: true, + connection_id: action.connection_id, + username: action.username }); case 'PUSHER_DISCONNECTED': @@ -17,30 +19,34 @@ export default function reducer(pusher = {}, action){ case 'PUSHER_SET_PORT': return Object.assign({}, pusher, { port: action.port }); - case 'PUSHER_USERNAME': + case 'PUSHER_USERNAME_CHANGED': return Object.assign({}, pusher, { username: action.username }); - case 'CONNECTIONS': - return Object.assign({}, pusher, { connections: action.connections }); - - case 'CONNECTION_UPDATED': - function byID(connection){ - return connection.connection_id == action.connection.connection_id; + case 'PUSHER_CONNECTIONS': + var connections = {} + for (var i = 0; i < action.connections.length; i++){ + connections[action.connections[i].connection_id] = action.connections[i] } - var connection = pusher.connections.find(byID); - var index = pusher.connections.indexOf(connection); - var connections = Object.assign([], pusher.connections); - connections[index] = action.connection; - return Object.assign({}, pusher, { connections: connections }); - case 'VERSION': + case 'PUSHER_CONNECTION_ADDED': + case 'PUSHER_CONNECTION_UPDATED': + var connections = Object.assign({}, pusher.connections) + connections[action.connection.connection_id] = action.connection + return Object.assign({}, pusher, { connections: connections }); + + case 'PUSHER_CONNECTION_REMOVED': + var connections = Object.assign({}, pusher.connections) + delete connections[action.connection.connection_id] + return Object.assign({}, pusher, { connections: connections }); + + case 'PUSHER_VERSION': return Object.assign({}, pusher, { version: action.version, upgrading: false }); - case 'START_UPGRADE': + case 'PUSHER_START_UPGRADE': return Object.assign({}, pusher, { upgrading: true }); default: diff --git a/src/js/services/ui/middleware.js b/src/js/services/ui/middleware.js index 6f6c9d2a..ac130b1d 100755 --- a/src/js/services/ui/middleware.js +++ b/src/js/services/ui/middleware.js @@ -21,7 +21,7 @@ const UIMiddleware = (function(){ break case 'PUSHER_CONNECTED': - ReactGA.event({ category: 'Pusher', action: 'Connected', label: action.connection.username }) + ReactGA.event({ category: 'Pusher', action: 'Connected', label: action.connection_id+'/'+action.username }) next(action) break diff --git a/src/js/views/Settings.js b/src/js/views/Settings.js index e9425453..d81e804c 100755 --- a/src/js/views/Settings.js +++ b/src/js/views/Settings.js @@ -181,7 +181,7 @@ class Settings extends React.Component{
- +