Skip to content

Commit a73bdf6

Browse files
committed
fix: fix coderabbit issues
1 parent b1bf987 commit a73bdf6

7 files changed

Lines changed: 208 additions & 94 deletions

File tree

‎webview-ui/src/components/chat/ChatView.tsx‎

Lines changed: 70 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,11 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
180180
// (it could be a say that followed).
181181
const [clineAsk, setClineAsk] = useState<ClineAsk | undefined>(undefined)
182182
const [enableButtons, setEnableButtons] = useState<boolean>(false)
183-
const [primaryButtonText, setPrimaryButtonText] = useState<string | undefined>(undefined)
184-
const [secondaryButtonText, setSecondaryButtonText] = useState<string | undefined>(undefined)
183+
// Translation keys rather than labels, so an open prompt follows a UI language change.
184+
const [primaryButtonKey, setPrimaryButtonKey] = useState<string | undefined>(undefined)
185+
const [secondaryButtonKey, setSecondaryButtonKey] = useState<string | undefined>(undefined)
186+
const primaryButtonText = primaryButtonKey ? t(primaryButtonKey) : undefined
187+
const secondaryButtonText = secondaryButtonKey ? t(secondaryButtonKey) : undefined
185188
const [_didClickCancel, setDidClickCancel] = useState(false)
186189
const virtuosoRef = useRef<VirtuosoHandle>(null)
187190
const [expandedRows, setExpandedRows] = useState<Record<number, boolean>>({})
@@ -314,16 +317,16 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
314317
setSendingDisabled(true)
315318
setClineAsk("api_req_failed")
316319
setEnableButtons(true)
317-
setPrimaryButtonText(t("chat:retry.title"))
318-
setSecondaryButtonText(t("chat:startNewTask.title"))
320+
setPrimaryButtonKey("chat:retry.title")
321+
setSecondaryButtonKey("chat:startNewTask.title")
319322
break
320323
case "mistake_limit_reached":
321324
playSound("progress_loop")
322325
setSendingDisabled(false)
323326
setClineAsk("mistake_limit_reached")
324327
setEnableButtons(true)
325-
setPrimaryButtonText(t("chat:proceedAnyways.title"))
326-
setSecondaryButtonText(t("chat:startNewTask.title"))
328+
setPrimaryButtonKey("chat:proceedAnyways.title")
329+
setSecondaryButtonKey("chat:startNewTask.title")
327330
break
328331
case "followup":
329332
setSendingDisabled(isPartial)
@@ -333,8 +336,8 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
333336
// We have no buttons for this tool, so no problem having them "enabled"
334337
// to workaround this issue. See #1358.
335338
setEnableButtons(true)
336-
setPrimaryButtonText(undefined)
337-
setSecondaryButtonText(undefined)
339+
setPrimaryButtonKey(undefined)
340+
setSecondaryButtonKey(undefined)
338341
break
339342
case "tool":
340343
setSendingDisabled(isPartial)
@@ -346,66 +349,66 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
346349
case "appliedDiff":
347350
case "newFileCreated":
348351
if (tool.batchDiffs && Array.isArray(tool.batchDiffs)) {
349-
setPrimaryButtonText(t("chat:edit-batch.approve.title"))
350-
setSecondaryButtonText(t("chat:edit-batch.deny.title"))
352+
setPrimaryButtonKey("chat:edit-batch.approve.title")
353+
setSecondaryButtonKey("chat:edit-batch.deny.title")
351354
} else {
352-
setPrimaryButtonText(t("chat:save.title"))
353-
setSecondaryButtonText(t("chat:reject.title"))
355+
setPrimaryButtonKey("chat:save.title")
356+
setSecondaryButtonKey("chat:reject.title")
354357
}
355358
break
356359
case "generateImage":
357-
setPrimaryButtonText(t("chat:save.title"))
358-
setSecondaryButtonText(t("chat:reject.title"))
360+
setPrimaryButtonKey("chat:save.title")
361+
setSecondaryButtonKey("chat:reject.title")
359362
break
360363
case "finishTask":
361-
setPrimaryButtonText(t("chat:completeSubtaskAndReturn"))
362-
setSecondaryButtonText(undefined)
364+
setPrimaryButtonKey("chat:completeSubtaskAndReturn")
365+
setSecondaryButtonKey(undefined)
363366
break
364367
case "readFile":
365368
if (tool.batchFiles && Array.isArray(tool.batchFiles)) {
366-
setPrimaryButtonText(t("chat:read-batch.approve.title"))
367-
setSecondaryButtonText(t("chat:read-batch.deny.title"))
369+
setPrimaryButtonKey("chat:read-batch.approve.title")
370+
setSecondaryButtonKey("chat:read-batch.deny.title")
368371
} else {
369-
setPrimaryButtonText(t("chat:approve.title"))
370-
setSecondaryButtonText(t("chat:reject.title"))
372+
setPrimaryButtonKey("chat:approve.title")
373+
setSecondaryButtonKey("chat:reject.title")
371374
}
372375
break
373376
case "listFilesTopLevel":
374377
case "listFilesRecursive":
375378
if (tool.batchDirs && Array.isArray(tool.batchDirs)) {
376-
setPrimaryButtonText(t("chat:list-batch.approve.title"))
377-
setSecondaryButtonText(t("chat:list-batch.deny.title"))
379+
setPrimaryButtonKey("chat:list-batch.approve.title")
380+
setSecondaryButtonKey("chat:list-batch.deny.title")
378381
} else {
379-
setPrimaryButtonText(t("chat:approve.title"))
380-
setSecondaryButtonText(t("chat:reject.title"))
382+
setPrimaryButtonKey("chat:approve.title")
383+
setSecondaryButtonKey("chat:reject.title")
381384
}
382385
break
383386
default:
384-
setPrimaryButtonText(t("chat:approve.title"))
385-
setSecondaryButtonText(t("chat:reject.title"))
387+
setPrimaryButtonKey("chat:approve.title")
388+
setSecondaryButtonKey("chat:reject.title")
386389
break
387390
}
388391
break
389392
case "command":
390393
setSendingDisabled(isPartial)
391394
setClineAsk("command")
392395
setEnableButtons(!isPartial)
393-
setPrimaryButtonText(t("chat:runCommand.title"))
394-
setSecondaryButtonText(t("chat:reject.title"))
396+
setPrimaryButtonKey("chat:runCommand.title")
397+
setSecondaryButtonKey("chat:reject.title")
395398
break
396399
case "command_output":
397400
setSendingDisabled(false)
398401
setClineAsk("command_output")
399402
setEnableButtons(true)
400-
setPrimaryButtonText(t("chat:proceedWhileRunning.title"))
401-
setSecondaryButtonText(t("chat:killCommand.title"))
403+
setPrimaryButtonKey("chat:proceedWhileRunning.title")
404+
setSecondaryButtonKey("chat:killCommand.title")
402405
break
403406
case "use_mcp_server":
404407
setSendingDisabled(isPartial)
405408
setClineAsk("use_mcp_server")
406409
setEnableButtons(!isPartial)
407-
setPrimaryButtonText(t("chat:approve.title"))
408-
setSecondaryButtonText(t("chat:reject.title"))
410+
setPrimaryButtonKey("chat:approve.title")
411+
setSecondaryButtonKey("chat:reject.title")
409412
break
410413
case "completion_result":
411414
// Extension waiting for feedback, but we can just present a new task button.
@@ -417,8 +420,8 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
417420
setSendingDisabled(isPartial)
418421
setClineAsk("completion_result")
419422
setEnableButtons(!isPartial)
420-
setPrimaryButtonText(t("chat:startNewTask.title"))
421-
setSecondaryButtonText(undefined)
423+
setPrimaryButtonKey("chat:startNewTask.title")
424+
setSecondaryButtonKey(undefined)
422425
break
423426
case "resume_task":
424427
setSendingDisabled(false)
@@ -434,20 +437,20 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
434437
(msg) => msg.ask === "completion_result" || msg.say === "completion_result",
435438
)
436439
if (isCompletedSubtask) {
437-
setPrimaryButtonText(t("chat:startNewTask.title"))
438-
setSecondaryButtonText(undefined)
440+
setPrimaryButtonKey("chat:startNewTask.title")
441+
setSecondaryButtonKey(undefined)
439442
} else {
440-
setPrimaryButtonText(t("chat:resumeTask.title"))
441-
setSecondaryButtonText(t("chat:terminate.title"))
443+
setPrimaryButtonKey("chat:resumeTask.title")
444+
setSecondaryButtonKey("chat:terminate.title")
442445
}
443446
setDidClickCancel(false) // special case where we reset the cancel button state
444447
break
445448
case "resume_completed_task":
446449
setSendingDisabled(false)
447450
setClineAsk("resume_completed_task")
448451
setEnableButtons(true)
449-
setPrimaryButtonText(t("chat:startNewTask.title"))
450-
setSecondaryButtonText(undefined)
452+
setPrimaryButtonKey("chat:startNewTask.title")
453+
setSecondaryButtonKey(undefined)
451454
setDidClickCancel(false)
452455
break
453456
}
@@ -471,8 +474,8 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
471474
// handlers (handleSendMessage, handlePrimaryButtonClick, etc.).
472475
setClineAsk(undefined)
473476
setEnableButtons(false)
474-
setPrimaryButtonText(undefined)
475-
setSecondaryButtonText(undefined)
477+
setPrimaryButtonKey(undefined)
478+
setSecondaryButtonKey(undefined)
476479
break
477480
case "api_req_finished":
478481
case "error":
@@ -485,8 +488,8 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
485488
if (lastMessage.partial !== true && clineAskRef.current === "command_output") {
486489
setClineAsk(undefined)
487490
setEnableButtons(false)
488-
setPrimaryButtonText(undefined)
489-
setSecondaryButtonText(undefined)
491+
setPrimaryButtonKey(undefined)
492+
setSecondaryButtonKey(undefined)
490493
}
491494
break
492495
case "mcp_server_request_started":
@@ -506,19 +509,19 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
506509
(msg) => msg.ask === "completion_result" || msg.say === "completion_result",
507510
)
508511
if (hasCompletionResult) {
509-
setPrimaryButtonText(t("chat:startNewTask.title"))
510-
setSecondaryButtonText(undefined)
512+
setPrimaryButtonKey("chat:startNewTask.title")
513+
setSecondaryButtonKey(undefined)
511514
}
512515
}
513-
}, [clineAsk, currentTaskItem?.parentTaskId, messages, t])
516+
}, [clineAsk, currentTaskItem?.parentTaskId, messages])
514517

515518
useEffect(() => {
516519
if (messages.length === 0) {
517520
setSendingDisabled(false)
518521
setClineAsk(undefined)
519522
setEnableButtons(false)
520-
setPrimaryButtonText(undefined)
521-
setSecondaryButtonText(undefined)
523+
setPrimaryButtonKey(undefined)
524+
setSecondaryButtonKey(undefined)
522525
}
523526
}, [messages.length])
524527

@@ -630,8 +633,8 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
630633
setClineAsk(undefined)
631634
setEnableButtons(false)
632635
// Do not reset mode here as it should persist.
633-
// setPrimaryButtonText(undefined)
634-
// setSecondaryButtonText(undefined)
636+
// setPrimaryButtonKey(undefined)
637+
// setSecondaryButtonKey(undefined)
635638
}, [])
636639

637640
/**
@@ -773,8 +776,8 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
773776
setSendingDisabled(true)
774777
setClineAsk(undefined)
775778
setEnableButtons(false)
776-
setPrimaryButtonText(undefined)
777-
setSecondaryButtonText(undefined)
779+
setPrimaryButtonKey(undefined)
780+
setSecondaryButtonKey(undefined)
778781
}, [])
779782

780783
// This logic depends on the useEffect[messages] above to set clineAsk,
@@ -1781,23 +1784,23 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
17811784
{primaryButtonText && (
17821785
<StandardTooltip
17831786
content={
1784-
primaryButtonText === t("chat:retry.title")
1787+
primaryButtonKey === "chat:retry.title"
17851788
? t("chat:retry.tooltip")
1786-
: primaryButtonText === t("chat:save.title")
1789+
: primaryButtonKey === "chat:save.title"
17871790
? t("chat:save.tooltip")
1788-
: primaryButtonText === t("chat:approve.title")
1791+
: primaryButtonKey === "chat:approve.title"
17891792
? t("chat:approve.tooltip")
1790-
: primaryButtonText === t("chat:runCommand.title")
1793+
: primaryButtonKey === "chat:runCommand.title"
17911794
? t("chat:runCommand.tooltip")
1792-
: primaryButtonText === t("chat:startNewTask.title")
1795+
: primaryButtonKey === "chat:startNewTask.title"
17931796
? t("chat:startNewTask.tooltip")
1794-
: primaryButtonText === t("chat:resumeTask.title")
1797+
: primaryButtonKey === "chat:resumeTask.title"
17951798
? t("chat:resumeTask.tooltip")
1796-
: primaryButtonText ===
1797-
t("chat:proceedAnyways.title")
1799+
: primaryButtonKey ===
1800+
"chat:proceedAnyways.title"
17981801
? t("chat:proceedAnyways.tooltip")
1799-
: primaryButtonText ===
1800-
t("chat:proceedWhileRunning.title")
1802+
: primaryButtonKey ===
1803+
"chat:proceedWhileRunning.title"
18011804
? t("chat:proceedWhileRunning.tooltip")
18021805
: primaryButtonText
18031806
}>
@@ -1817,13 +1820,13 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
18171820
{secondaryButtonText && (
18181821
<StandardTooltip
18191822
content={
1820-
secondaryButtonText === t("chat:startNewTask.title")
1823+
secondaryButtonKey === "chat:startNewTask.title"
18211824
? t("chat:startNewTask.tooltip")
1822-
: secondaryButtonText === t("chat:reject.title")
1825+
: secondaryButtonKey === "chat:reject.title"
18231826
? t("chat:reject.tooltip")
1824-
: secondaryButtonText === t("chat:terminate.title")
1827+
: secondaryButtonKey === "chat:terminate.title"
18251828
? t("chat:terminate.tooltip")
1826-
: secondaryButtonText === t("chat:killCommand.title")
1829+
: secondaryButtonKey === "chat:killCommand.title"
18271830
? t("chat:killCommand.tooltip")
18281831
: secondaryButtonText
18291832
}>

0 commit comments

Comments
 (0)