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.
Hydro/packages/ui-default/components/scratchpad/reducers/pretest.ts

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) {
3 years ago
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;
}