Start cleaning up the mess of useServer; make startup page update in real time

This commit is contained in:
Dane Everitt 2020-08-25 21:25:31 -07:00
parent 179885b546
commit c4418640eb
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
16 changed files with 175 additions and 61 deletions

View file

@ -6,6 +6,7 @@ import subusers, { ServerSubuserStore } from '@/state/server/subusers';
import { composeWithDevTools } from 'redux-devtools-extension';
import schedules, { ServerScheduleStore } from '@/state/server/schedules';
import databases, { ServerDatabaseStore } from '@/state/server/databases';
import isEqual from 'react-fast-compare';
export type ServerStatus = 'offline' | 'starting' | 'stopping' | 'running';
@ -15,6 +16,7 @@ interface ServerDataStore {
getServer: Thunk<ServerDataStore, string, Record<string, unknown>, ServerStore, Promise<void>>;
setServer: Action<ServerDataStore, Server>;
setServerFromState: Action<ServerDataStore, (s: Server) => Server>;
setPermissions: Action<ServerDataStore, string[]>;
}
@ -29,11 +31,22 @@ const server: ServerDataStore = {
}),
setServer: action((state, payload) => {
state.data = payload;
if (!isEqual(payload, state.data)) {
state.data = payload;
}
}),
setServerFromState: action((state, payload) => {
const output = payload(state.data!);
if (!isEqual(output, state.data)) {
state.data = output;
}
}),
setPermissions: action((state, payload) => {
state.permissions = payload;
if (!isEqual(payload, state.permissions)) {
state.permissions = payload;
}
}),
};