dialog-message.tsx 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { createMemo } from "solid-js"
  2. import { useSync } from "@tui/context/sync"
  3. import { DialogSelect } from "@tui/ui/dialog-select"
  4. import { useSDK } from "@tui/context/sdk"
  5. import { useRoute } from "@tui/context/route"
  6. export function DialogMessage(props: { messageID: string; sessionID: string }) {
  7. const sync = useSync()
  8. const sdk = useSDK()
  9. const message = createMemo(() => sync.data.message[props.sessionID]?.find((x) => x.id === props.messageID))
  10. const route = useRoute()
  11. return (
  12. <DialogSelect
  13. title="Message Actions"
  14. options={[
  15. {
  16. title: "Revert",
  17. value: "session.revert",
  18. description: "undo messages and file changes",
  19. onSelect: (dialog) => {
  20. sdk.client.session.revert({
  21. path: {
  22. id: props.sessionID,
  23. },
  24. body: {
  25. messageID: message()!.id,
  26. },
  27. })
  28. dialog.clear()
  29. },
  30. },
  31. {
  32. title: "Fork",
  33. value: "session.fork",
  34. description: "create a new session",
  35. onSelect: async (dialog) => {
  36. const result = await sdk.client.session.fork({
  37. path: {
  38. id: props.sessionID,
  39. },
  40. body: {
  41. messageID: props.messageID,
  42. },
  43. })
  44. route.navigate({
  45. sessionID: result.data!.id,
  46. type: "session",
  47. })
  48. dialog.clear()
  49. },
  50. },
  51. ]}
  52. />
  53. )
  54. }