56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import { createMemo } from "solid-js"
|
|
import { useSync } from "@tui/context/sync"
|
|
import { DialogSelect } from "@tui/ui/dialog-select"
|
|
import { useSDK } from "@tui/context/sdk"
|
|
import { useRoute } from "@tui/context/route"
|
|
|
|
export function DialogMessage(props: { messageID: string; sessionID: string }) {
|
|
const sync = useSync()
|
|
const sdk = useSDK()
|
|
const message = createMemo(() => sync.data.message[props.sessionID]?.find((x) => x.id === props.messageID))
|
|
const route = useRoute()
|
|
|
|
return (
|
|
<DialogSelect
|
|
title="Message Actions"
|
|
options={[
|
|
{
|
|
title: "Revert",
|
|
value: "session.revert",
|
|
description: "undo messages and file changes",
|
|
onSelect: (dialog) => {
|
|
sdk.client.session.revert({
|
|
path: {
|
|
id: props.sessionID,
|
|
},
|
|
body: {
|
|
messageID: message()!.id,
|
|
},
|
|
})
|
|
dialog.clear()
|
|
},
|
|
},
|
|
{
|
|
title: "Fork",
|
|
value: "session.fork",
|
|
description: "create a new session",
|
|
onSelect: async (dialog) => {
|
|
const result = await sdk.client.session.fork({
|
|
path: {
|
|
id: props.sessionID,
|
|
},
|
|
body: {
|
|
messageID: props.messageID,
|
|
},
|
|
})
|
|
route.navigate({
|
|
sessionID: result.data!.id,
|
|
type: "session",
|
|
})
|
|
dialog.clear()
|
|
},
|
|
},
|
|
]}
|
|
/>
|
|
)
|
|
}
|