Digesting snapcast structure into iris-friendly structure

This commit is contained in:
James Barnsley
2018-03-21 22:08:53 +13:00
parent 40bee2f982
commit ce0c41516a
5 changed files with 183 additions and 14 deletions

View File

@ -516,7 +516,37 @@ const PusherMiddleware = (function(){
request(store, 'snapcast_instruct', action.data)
.then(
response => {
store.dispatch({type: 'PUSHER_SNAPCAST', snapcast: response.server})
var groups = {};
var clients = {};
// Loop all the groups
for (var i = 0; i < response.server.groups.length; i++){
var group = response.server.groups[i];
groups[group.id] = {
id: group.id,
muted: group.muted,
name: group.name,
stream_id: group.stream_id
}
// And now this groups' clients
for (var i = 0; i < group.clients.length; i++){
var client = group.clients[i];
clients[client.id] = Object.assign(
{},
client,
{
group_id: group.id
}
)
}
}
store.dispatch({
type: 'PUSHER_SNAPCAST',
snapcast_clients: clients,
snapcast_groups: groups
})
},
error => {
store.dispatch(coreActions.handleException(
@ -536,7 +566,11 @@ const PusherMiddleware = (function(){
store.dispatch({
type: 'PUSHER_SNAPCAST_CLIENT_UPDATED',
key: response.client.id,
client: response.client
client: {
config: {
volume: response.volume
}
}
})
},
error => {

View File

@ -52,7 +52,12 @@ export default function reducer(pusher = {}, action){
return Object.assign({}, pusher, { upgrading: true });
case 'PUSHER_SNAPCAST':
return Object.assign({}, pusher, { snapcast: action.snapcast });
return Object.assign({}, pusher, { snapcast_clients: action.snapcast_clients, snapcast_groups: action.snapcast_groups });
case 'PUSHER_SNAPCAST_CLIENT_UPDATED':
var snapcast_clients = Object.assign({}, pusher.snapcast_clients);
snapcast_clients[action.key] = Object.assign({}, snapcast_clients[action.key], action.client);
return Object.assign({}, pusher, { snapcast_clients: snapcast_clients });
default:
return pusher