You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
934 B
TypeScript
35 lines
934 B
TypeScript
import { STATUS_TEXTS } from '@hydrooj/utils/lib/status';
|
|
|
|
export default function reducer(state = {
|
|
input: '',
|
|
output: '',
|
|
rid: null,
|
|
}, action: any = {}) {
|
|
if (action.type === 'SCRATCHPAD_PRETEST_DATA_CHANGE') {
|
|
const { type, value } = action.payload;
|
|
return {
|
|
...state,
|
|
[type]: value,
|
|
};
|
|
}
|
|
if (action.type === 'SCRATCHPAD_RECORDS_PUSH') {
|
|
const { rdoc } = action.payload;
|
|
if (rdoc._id === state.rid) {
|
|
const output = [`${STATUS_TEXTS[rdoc.status]} ${rdoc.time}ms ${rdoc.memory}KiB`];
|
|
if (rdoc.compilerTexts.length) output.push(rdoc.compilerTexts.join('\n'));
|
|
if (rdoc.testCases.length) output.push(rdoc.testCases[0].message || '');
|
|
return {
|
|
...state,
|
|
output: output.join('\n'),
|
|
};
|
|
}
|
|
}
|
|
if (action.type === 'SCRATCHPAD_POST_PRETEST_FULFILLED') {
|
|
return {
|
|
...state,
|
|
rid: action.payload.rid,
|
|
};
|
|
}
|
|
return state;
|
|
}
|