Fixed: Clearing logs not updating UI once complete

This commit is contained in:
Mark McDowall 2022-02-27 00:17:40 -08:00
parent b24bea415b
commit 56b3acddc9
3 changed files with 37 additions and 11 deletions

View File

@ -17,6 +17,7 @@ export const section = 'commands';
let lastCommand = null;
let lastCommandTimeout = null;
const removeCommandTimeoutIds = {};
const commandFinishedCallbacks = {};
//
// State
@ -119,7 +120,7 @@ function scheduleRemoveCommand(command, dispatch) {
}, 60000 * 5);
}
export function executeCommandHelper( payload, dispatch) {
export function executeCommandHelper(payload, dispatch) {
// TODO: show a message for the user
if (lastCommand && isSameCommand(lastCommand, payload)) {
console.warn('Please wait at least 5 seconds before running this command again');
@ -136,13 +137,22 @@ export function executeCommandHelper( payload, dispatch) {
lastCommand = null;
}, 5000);
const {
commandFinished,
...requestPayload
} = payload;
const promise = createAjaxRequest({
url: '/command',
method: 'POST',
data: JSON.stringify(payload)
data: JSON.stringify(requestPayload)
}).request;
return promise.then((data) => {
if (commandFinished) {
commandFinishedCallbacks[data.id] = commandFinished;
}
dispatch(addCommand(data));
});
}
@ -182,12 +192,20 @@ export const actionHandlers = handleThunks({
}
});
const commandFinished = commandFinishedCallbacks[payload.id];
if (commandFinished) {
commandFinished(payload);
}
delete commandFinishedCallbacks[payload.id];
dispatch(updateItem({ section: 'commands', ...payload }));
scheduleRemoveCommand(payload, dispatch);
showCommandMessage(payload, dispatch);
},
[ADD_COMMAND]: function(getState, payload, dispatch) {
[REMOVE_COMMAND]: function(getState, payload, dispatch) {
dispatch(removeItem({ section: 'commands', ...payload }));
}

View File

@ -96,7 +96,14 @@ class LogsTableConnector extends Component {
}
onClearLogsPress = () => {
this.props.executeCommand({ name: commandNames.CLEAR_LOGS });
this.props.executeCommand({
name: commandNames.CLEAR_LOGS,
commandFinished: this.onCommandFinished
});
}
onCommandFinished = () => {
this.props.gotoLogsFirstPage();
}
//

View File

@ -50,12 +50,6 @@ class LogFilesConnector extends Component {
this.props.fetchLogFiles();
}
componentDidUpdate(prevProps) {
if (prevProps.deleteFilesExecuting && !this.props.deleteFilesExecuting) {
this.props.fetchLogFiles();
}
}
//
// Listeners
@ -64,7 +58,14 @@ class LogFilesConnector extends Component {
}
onDeleteFilesPress = () => {
this.props.executeCommand({ name: commandNames.DELETE_LOG_FILES });
this.props.executeCommand({
name: commandNames.DELETE_LOG_FILES,
commandFinished: this.onCommandFinished
});
}
onCommandFinished = () => {
this.props.fetchLogFiles();
}
//