data.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import type { Message, Session, Part, FileDiff, SessionStatus, ProviderListResponse } from "@opencode-ai/sdk/v2"
  2. import { createSimpleContext } from "./helper"
  3. import { PreloadMultiFileDiffResult } from "@pierre/diffs/ssr"
  4. type Data = {
  5. provider?: ProviderListResponse
  6. session: Session[]
  7. session_status: {
  8. [sessionID: string]: SessionStatus
  9. }
  10. session_diff: {
  11. [sessionID: string]: FileDiff[]
  12. }
  13. session_diff_preload?: {
  14. [sessionID: string]: PreloadMultiFileDiffResult<any>[]
  15. }
  16. message: {
  17. [sessionID: string]: Message[]
  18. }
  19. part: {
  20. [messageID: string]: Part[]
  21. }
  22. }
  23. export type NavigateToSessionFn = (sessionID: string) => void
  24. export type SessionHrefFn = (sessionID: string) => string
  25. export const { use: useData, provider: DataProvider } = createSimpleContext({
  26. name: "Data",
  27. init: (props: {
  28. data: Data
  29. directory: string
  30. onNavigateToSession?: NavigateToSessionFn
  31. onSessionHref?: SessionHrefFn
  32. }) => {
  33. return {
  34. get store() {
  35. return props.data
  36. },
  37. get directory() {
  38. return props.directory
  39. },
  40. navigateToSession: props.onNavigateToSession,
  41. sessionHref: props.onSessionHref,
  42. }
  43. },
  44. })