fix(tui): pass prompt setter to revert dialog
This commit is contained in:
parent
88cc5cb1bc
commit
71be35f7a0
2 changed files with 15 additions and 5 deletions
|
|
@ -6,15 +6,18 @@ import { useToast } from "../../ui/toast"
|
||||||
import { useSDK } from "../../context/sdk"
|
import { useSDK } from "../../context/sdk"
|
||||||
import { errorMessage } from "../../util/error"
|
import { errorMessage } from "../../util/error"
|
||||||
import { DialogFork } from "./dialog-fork"
|
import { DialogFork } from "./dialog-fork"
|
||||||
import { usePromptRef } from "../../context/prompt"
|
|
||||||
import { revertedPrompt } from "../../util/revert-prompt"
|
import { revertedPrompt } from "../../util/revert-prompt"
|
||||||
|
import type { PromptInfo } from "../../prompt/history"
|
||||||
|
|
||||||
export function DialogMessage(props: { messageID: string; sessionID: string }) {
|
export function DialogMessage(props: {
|
||||||
|
messageID: string
|
||||||
|
sessionID: string
|
||||||
|
setPrompt?: (prompt: PromptInfo) => void
|
||||||
|
}) {
|
||||||
const data = useData()
|
const data = useData()
|
||||||
const clipboard = useClipboard()
|
const clipboard = useClipboard()
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
const sdk = useSDK()
|
const sdk = useSDK()
|
||||||
const promptRef = usePromptRef()
|
|
||||||
const message = createMemo(() => data.session.message.get(props.sessionID, props.messageID))
|
const message = createMemo(() => data.session.message.get(props.sessionID, props.messageID))
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -27,7 +30,7 @@ export function DialogMessage(props: { messageID: string; sessionID: string }) {
|
||||||
description: "undo messages and file changes",
|
description: "undo messages and file changes",
|
||||||
onSelect: (dialog) => {
|
onSelect: (dialog) => {
|
||||||
const value = message()
|
const value = message()
|
||||||
if (value?.type === "user") promptRef.current?.set(revertedPrompt(value))
|
if (value?.type === "user") props.setPrompt?.(revertedPrompt(value))
|
||||||
void sdk.api.session.revert
|
void sdk.api.session.revert
|
||||||
.stage({ sessionID: props.sessionID, messageID: props.messageID })
|
.stage({ sessionID: props.sessionID, messageID: props.messageID })
|
||||||
.catch((error) => toast.show({ message: errorMessage(error), variant: "error", duration: 5000 }))
|
.catch((error) => toast.show({ message: errorMessage(error), variant: "error", duration: 5000 }))
|
||||||
|
|
|
||||||
|
|
@ -1465,6 +1465,7 @@ function UserMessage(props: { message: SessionMessageUser }) {
|
||||||
)
|
)
|
||||||
const dialog = useDialog()
|
const dialog = useDialog()
|
||||||
const renderer = useRenderer()
|
const renderer = useRenderer()
|
||||||
|
const promptRef = usePromptRef()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Show when={props.message.text.trim() || files().length}>
|
<Show when={props.message.text.trim() || files().length}>
|
||||||
|
|
@ -1483,7 +1484,13 @@ function UserMessage(props: { message: SessionMessageUser }) {
|
||||||
}}
|
}}
|
||||||
onMouseUp={() => {
|
onMouseUp={() => {
|
||||||
if (renderer.getSelection()?.getSelectedText()) return
|
if (renderer.getSelection()?.getSelectedText()) return
|
||||||
dialog.replace(() => <DialogMessage messageID={props.message.id} sessionID={ctx.sessionID} />)
|
dialog.replace(() => (
|
||||||
|
<DialogMessage
|
||||||
|
messageID={props.message.id}
|
||||||
|
sessionID={ctx.sessionID}
|
||||||
|
setPrompt={(value) => promptRef.current?.set(value)}
|
||||||
|
/>
|
||||||
|
))
|
||||||
}}
|
}}
|
||||||
paddingTop={1}
|
paddingTop={1}
|
||||||
paddingBottom={1}
|
paddingBottom={1}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue