Skip to content

Commit ad08154

Browse files
committed
Add delay_visibility property to ProgressModal to delay its appearance by one second, preventing brief flashes during fast operations like checkpoint restoration
1 parent 2fc069b commit ad08154

6 files changed

Lines changed: 21 additions & 9 deletions

File tree

‎packages/ui/src/components/editor/panel/modals/ProgressModal/ProgressModal.tsx‎

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ type Props = {
2626
tokens_per_second?: number
2727
files?: FileProgress[]
2828
show_elapsed_time?: boolean
29+
delay_visibility?: boolean
2930
}
3031

3132
const format_tokens_per_second = (tps: number): string => {
@@ -52,14 +53,19 @@ const get_status_text = (status: FileProgressStatus): string => {
5253
}
5354

5455
export const ProgressModal: React.FC<Props> = (props) => {
55-
const [is_visible, set_is_visible] = useState(false)
56+
const [is_visible, set_is_visible] = useState(!props.delay_visibility)
5657
const [elapsed_time, set_elapsed_time] = useState(0)
5758

5859
useEffect(() => {
59-
set_is_visible(false)
60-
const visibility_timer = setTimeout(() => {
60+
let visibility_timer: NodeJS.Timeout | undefined
61+
if (props.delay_visibility) {
62+
set_is_visible(false)
63+
visibility_timer = setTimeout(() => {
64+
set_is_visible(true)
65+
}, 1000)
66+
} else {
6167
set_is_visible(true)
62-
}, 1000)
68+
}
6369

6470
let elapsed_time_timer: NodeJS.Timeout | undefined
6571
if (props.show_elapsed_time !== false) {
@@ -74,7 +80,7 @@ export const ProgressModal: React.FC<Props> = (props) => {
7480
clearTimeout(visibility_timer)
7581
clearInterval(elapsed_time_timer)
7682
}
77-
}, [props.title, props.show_elapsed_time])
83+
}, [props.show_elapsed_time, props.delay_visibility])
7884

7985
return is_visible ? (
8086
<Modal

‎packages/vscode/src/commands/checkpoints-command/actions/restore-checkpoint.ts‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,8 @@ export const restore_checkpoint = async (params: {
318318
title,
319319
progress: current_progress,
320320
cancellable: false,
321-
show_elapsed_time: false
321+
show_elapsed_time: false,
322+
delay_visibility: true
322323
})
323324
const progress: vscode.Progress<{
324325
message?: string
@@ -332,7 +333,8 @@ export const restore_checkpoint = async (params: {
332333
title,
333334
progress: Math.min(current_progress, 100),
334335
cancellable: false,
335-
show_elapsed_time: false
336+
show_elapsed_time: false,
337+
delay_visibility: true
336338
})
337339
}
338340
}

‎packages/vscode/src/views/panel/backend/panel-provider.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ export class PanelProvider implements vscode.WebviewViewProvider {
427427
panel_provider: this,
428428
websites_provider: this.websites_provider,
429429
options: {
430-
show_auto_closing_modal_on_success: true
430+
show_auto_closing_modal_on_success: true,
431431
}
432432
})
433433
}

‎packages/vscode/src/views/panel/frontend/Panel.tsx‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@ export const Panel = () => {
448448
tokens_per_second={progress_state.tokens_per_second}
449449
files={progress_state.files}
450450
show_elapsed_time={progress_state.show_elapsed_time}
451+
delay_visibility={progress_state.delay_visibility}
451452
on_cancel={
452453
progress_state.cancellable
453454
? () => {

‎packages/vscode/src/views/panel/frontend/hooks/use-panel.ts‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export const use_panel = (vscode: any) => {
2727
files?: FileProgress[]
2828
cancellable?: boolean
2929
show_elapsed_time?: boolean
30+
delay_visibility?: boolean
3031
}>()
3132
const [auto_closing_modal_title, set_auto_closing_modal_title] = useState<
3233
string | undefined
@@ -197,7 +198,8 @@ export const use_panel = (vscode: any) => {
197198
tokens_per_second: message.tokens_per_second,
198199
files: message.files,
199200
cancellable: message.cancellable ?? true,
200-
show_elapsed_time: message.show_elapsed_time
201+
show_elapsed_time: message.show_elapsed_time,
202+
delay_visibility: message.delay_visibility
201203
})
202204
} else if (message.command == 'HIDE_PROGRESS') {
203205
set_progress_state(undefined)

‎packages/vscode/src/views/panel/types/messages.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,7 @@ export interface ShowProgressMessage extends BaseMessage {
606606
files?: FileProgress[]
607607
cancellable?: boolean
608608
show_elapsed_time?: boolean
609+
delay_visibility?: boolean
609610
}
610611

611612
export interface HideProgressMessage extends BaseMessage {

0 commit comments

Comments
 (0)