Pusher username management; Spotify vs mopidy middleware glitching
This commit is contained in:
@ -10,6 +10,14 @@ export function setConfig( config ){
|
||||
}
|
||||
}
|
||||
|
||||
export function setUsername( username ){
|
||||
return {
|
||||
type: 'PUSHER_INSTRUCT',
|
||||
action: 'set_username',
|
||||
data: { username: username }
|
||||
}
|
||||
}
|
||||
|
||||
export function connect(){
|
||||
return {
|
||||
type: 'PUSHER_CONNECT'
|
||||
@ -22,10 +30,17 @@ export function disconnect(){
|
||||
}
|
||||
}
|
||||
|
||||
export function instruct( call, value ){
|
||||
export function getConnectionList(){
|
||||
return {
|
||||
type: 'PUSHER_INSTRUCT',
|
||||
call: call,
|
||||
value: value
|
||||
action: 'get_connections'
|
||||
}
|
||||
}
|
||||
|
||||
export function instruct( action, data = null ){
|
||||
return {
|
||||
type: 'PUSHER_INSTRUCT',
|
||||
action: action,
|
||||
data: data
|
||||
}
|
||||
}
|
||||
@ -40,16 +40,23 @@ const PusherMiddleware = (function(){
|
||||
store.dispatch({ type: 'PUSHER_CONNECTING' });
|
||||
|
||||
var state = store.getState();
|
||||
var connection = {
|
||||
clientid: Math.random().toString(36).substr(2, 9),
|
||||
connectionid: helpers.generateGuid(),
|
||||
username: Math.random().toString(36).substr(2, 9)
|
||||
}
|
||||
//if( state.pusher.username ) connection.username = state.pusher.username;
|
||||
|
||||
socket = new WebSocket(
|
||||
'ws://'+state.mopidy.host+':'+state.pusher.port+'/pusher'
|
||||
'ws://'+state.mopidy.host+':'+state.pusher.port+'/pusher',
|
||||
[ connection.clientid, connection.connectionid, connection.username ]
|
||||
);
|
||||
|
||||
socket.onopen = function(){
|
||||
store.dispatch({ type: 'PUSHER_CONNECTED' });
|
||||
socket.onopen = () => {
|
||||
store.dispatch({ type: 'PUSHER_CONNECTED', connection: connection });
|
||||
};
|
||||
|
||||
socket.onmessage = function(message){
|
||||
socket.onmessage = (message) => {
|
||||
var message = JSON.parse(message.data);
|
||||
handleMessage( socket, store, message )
|
||||
};
|
||||
@ -58,6 +65,11 @@ const PusherMiddleware = (function(){
|
||||
|
||||
case 'PUSHER_CONNECTED':
|
||||
makeRequest({ action: 'get_version' });
|
||||
return next(action);
|
||||
break;
|
||||
|
||||
case 'PUSHER_INSTRUCT':
|
||||
makeRequest({ action: action.action, data: action.data });
|
||||
break;
|
||||
|
||||
// This action is irrelevant to us, pass it on to the next middleware
|
||||
|
||||
@ -3,19 +3,22 @@ export default function reducer(pusher = {}, action){
|
||||
switch (action.type) {
|
||||
|
||||
case 'PUSHER_CONNECTED':
|
||||
return Object.assign({}, pusher, { connected: true, connecting: false });
|
||||
return Object.assign({}, pusher, { connected: true, connecting: false, connectionid: action.connection.connectionid });
|
||||
|
||||
case 'PUSHER_DISCONNECTED':
|
||||
return Object.assign({}, pusher, { connected: false, connecting: false });
|
||||
|
||||
case 'PUSHER_SET_PORT':
|
||||
return Object.assign({}, pusher, { port: action.port });
|
||||
case 'PUSHER_SET_CONFIG':
|
||||
return Object.assign({}, pusher, {
|
||||
username: action.username,
|
||||
port: action.port
|
||||
});
|
||||
|
||||
case 'PUSHER_CLIENT_CONNECTED':
|
||||
return Object.assign({}, pusher, { connections: action.data });
|
||||
return Object.assign({}, pusher, { connection: action.data });
|
||||
|
||||
case 'PUSHER_CONNECTIONS_LOADED':
|
||||
return Object.assign({}, pusher, { connections: action.data });
|
||||
case 'PUSHER_CONNECTIONS':
|
||||
return Object.assign({}, pusher, { connections: action.data.connections });
|
||||
|
||||
case 'PUSHER_VERSION':
|
||||
return Object.assign({}, pusher, { version: action.data });
|
||||
|
||||
Reference in New Issue
Block a user