Skip to content

Commit fe2482c

Browse files
committed
Fix generator stop button not appearing
1 parent b00cf0b commit fe2482c

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

src/views/stress/message.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export enum WebviewMessageType {
55
STDIO = 1,
66
CLEAR = 2,
77
SHOW = 3,
8+
RUNNING = 4,
89
}
910
export interface IStatusMessage {
1011
type: WebviewMessageType.STATUS;
@@ -23,11 +24,16 @@ export interface IShowMessage {
2324
type: WebviewMessageType.SHOW;
2425
visible: boolean;
2526
}
27+
export interface IRunningMessage {
28+
type: WebviewMessageType.RUNNING;
29+
value: boolean;
30+
}
2631
export type WebviewMessage =
2732
| IStatusMessage
2833
| IStdioMessage
2934
| IClearMessage
30-
| IShowMessage;
35+
| IShowMessage
36+
| IRunningMessage;
3137

3238
export enum ProviderMessageType {
3339
LOADED = 0,

src/views/stress/provider/StressViewProvider.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ export default class extends BaseViewProvider<ProviderMessage, WebviewMessage> {
189189
}
190190
}
191191

192+
super._postMessage({ type: WebviewMessageType.RUNNING, value: true });
192193
for (let id = 0; id < 3; id++) {
193194
super._postMessage({
194195
type: WebviewMessageType.STATUS,
@@ -325,6 +326,7 @@ export default class extends BaseViewProvider<ProviderMessage, WebviewMessage> {
325326
setTimeout(() => resolve(), delayBetweenTestcases),
326327
);
327328
}
329+
super._postMessage({ type: WebviewMessageType.RUNNING, value: false });
328330

329331
if (!anyFailed && this._state[1].data.data !== this._state[2].data.data) {
330332
this._state[1].status = Status.WA;

src/views/stress/webview/App.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { Status } from '~common/common';
55
import { BLUE_COLOR, RED_COLOR } from '~common/webview';
66
import { type PreactObservable, observable } from '~external/observable';
77
import {
8+
type IRunningMessage,
89
type IShowMessage,
910
type IStatusMessage,
1011
type IStdioMessage,
@@ -26,6 +27,7 @@ const state: PreactObservable<IState[]> = observable([
2627
{ data: '', status: Status.NA },
2728
]);
2829
const showView = signal(true);
30+
const running = signal(false);
2931

3032
const expand = (id: number) =>
3133
postProviderMessage({ type: ProviderMessageType.VIEW, id });
@@ -47,6 +49,9 @@ window.addEventListener('message', (event: MessageEvent<WebviewMessage>) => {
4749
case WebviewMessageType.SHOW:
4850
handleShow(event.data);
4951
break;
52+
case WebviewMessageType.RUNNING:
53+
handleRunning(event.data);
54+
break;
5055
}
5156
});
5257

@@ -71,14 +76,18 @@ function handleShow({ visible }: IShowMessage) {
7176
showView.value = visible;
7277
}
7378

79+
function handleRunning({ value }: IRunningMessage) {
80+
running.value = value;
81+
}
82+
7483
export default function App() {
7584
useEffect(
7685
() => postProviderMessage({ type: ProviderMessageType.LOADED }),
7786
[],
7887
);
7988

8089
const button = useComputed(() => {
81-
if (state[1].status === Status.RUNNING)
90+
if (running.value)
8291
return (
8392
<button
8493
type="button"

0 commit comments

Comments
 (0)