Adding and updating Servers, fixes #524

This commit is contained in:
James Barnsley
2020-04-28 21:24:17 +12:00
parent 92292b18d7
commit 0caa780e38
17 changed files with 454 additions and 258 deletions

View File

@ -63,6 +63,15 @@ const localstorageMiddleware = (function () {
);
break;
case 'MOPIDY_UPDATE_SERVERS':
storage.set(
'mopidy',
{
servers: action.servers,
},
);
break;
case 'SPOTIFY_AUTHORIZATION_GRANTED':
if (action.authorization !== undefined) {
var { authorization } = action;

View File

@ -1,5 +1,6 @@
import { createRange } from '../../util/arrays';
import { generateGuid } from '../../util/helpers';
export function set(data) {
return {
@ -15,6 +16,39 @@ export function updateServer(server) {
};
}
export function updateServers(servers) {
return {
type: 'MOPIDY_UPDATE_SERVERS',
servers,
};
}
export function addServer() {
return {
type: 'MOPIDY_UPDATE_SERVER',
server: {
id: generateGuid(),
name: 'New server',
host: window.location.hostname,
port: (window.location.port ? window.location.port : (window.location.protocol === 'https:' ? '443' : '80')),
}
};
}
export function setCurrentServer(server) {
return {
type: 'MOPIDY_SET_CURRENT_SERVER',
server,
};
}
export function removeServer(id) {
return {
type: 'MOPIDY_REMOVE_SERVER',
id,
};
}
export function setConnection(data) {
return {
type: 'MOPIDY_SET_CONNECTION',

View File

@ -284,10 +284,20 @@ const MopidyMiddleware = (function () {
});
break;
case 'MOPIDY_SET_CONNECTION':
store.dispatch(mopidyActions.set(action.data));
case 'MOPIDY_UPDATE_SERVER':
let servers = store.getState().mopidy.servers;
servers[action.server.id] = { ...servers[action.server.id], ...action.server };
store.dispatch(mopidyActions.updateServers(servers));
break;
// Wait 250 ms and then retry connection
case 'MOPIDY_SET_CURRENT_SERVER':
store.dispatch(mopidyActions.set({
current_server: action.server.id,
host: action.server.host,
port: action.server.port
}));
// Wait a moment for store to update, then attempt connection
setTimeout(
() => {
store.dispatch(mopidyActions.connect());
@ -297,6 +307,12 @@ const MopidyMiddleware = (function () {
);
break;
case 'MOPIDY_REMOVE_SERVER':
let remaining_servers = store.getState().mopidy.servers;
delete remaining_servers[action.id];
store.dispatch(mopidyActions.updateServers(remaining_servers));
break;
case 'SET_WINDOW_FOCUS':
// Focus has just been regained

View File

@ -6,17 +6,15 @@ export default function reducer(mopidy = {}, action) {
case 'MOPIDY_SET':
return { ...mopidy, ...action.data };
case 'MOPIDY_UPDATE_SERVER':
const updated = {};
updated[action.server.id] = { ...mopidy.servers[action.server.id], ...action.server };
return { ...mopidy, servers: { ...mopidy.servers, ...updated } };
case 'MOPIDY_UPDATE_SERVERS':
return { ...mopidy, servers: action.servers };
case 'MOPIDY_CONNECT':
case 'MOPIDY_CONNECTING':
return {
...mopidy,
connected: false,
connecting: true,
connecting: true,
};
case 'MOPIDY_CONNECTED':