@@ -5,12 +5,11 @@ import { DataProvider } from "@opencode-ai/ui/context"
55import { FileComponentProvider } from "@opencode-ai/ui/context/file"
66import { WorkerPoolProvider } from "@opencode-ai/ui/context/worker-pool"
77import { createAsync , query , useParams } from "@solidjs/router"
8- import { createEffect , createMemo , ErrorBoundary , For , Match , Show , Switch } from "solid-js"
8+ import { createMemo , createSignal , ErrorBoundary , For , Match , Show , Switch } from "solid-js"
99import { Share } from "~/core/share"
1010import { Logo , Mark } from "@opencode-ai/ui/logo"
1111import { IconButton } from "@opencode-ai/ui/icon-button"
1212import { ProviderIcon } from "@opencode-ai/ui/provider-icon"
13- import { createDefaultOptions } from "@opencode-ai/ui/pierre"
1413import { iife } from "@opencode-ai/util/iife"
1514import { Binary } from "@opencode-ai/util/binary"
1615import { NamedError } from "@opencode-ai/util/error"
@@ -20,11 +19,11 @@ import z from "zod"
2019import NotFound from "../[...404]"
2120import { Tabs } from "@opencode-ai/ui/tabs"
2221import { MessageNav } from "@opencode-ai/ui/message-nav"
23- import { preloadMultiFileDiff , PreloadMultiFileDiffResult } from "@pierre/diffs/ssr"
2422import { FileSSR } from "@opencode-ai/ui/file-ssr"
2523import { clientOnly } from "@solidjs/start"
2624import { Meta , Title } from "@solidjs/meta"
2725import { Base64 } from "js-base64"
26+ import { getRequestEvent } from "solid-js/web"
2827
2928const ClientOnlyWorkerPoolProvider = clientOnly ( ( ) =>
3029 import ( "@opencode-ai/ui/pierre/worker" ) . then ( ( m ) => ( {
@@ -54,12 +53,6 @@ const getData = query(async (shareID) => {
5453 session_diff : {
5554 [ sessionID : string ] : FileDiff [ ]
5655 }
57- session_diff_preload : {
58- [ sessionID : string ] : PreloadMultiFileDiffResult < any > [ ]
59- }
60- session_diff_preload_split : {
61- [ sessionID : string ] : PreloadMultiFileDiffResult < any > [ ]
62- }
6356 session_status : {
6457 [ sessionID : string ] : SessionStatus
6558 }
@@ -79,12 +72,6 @@ const getData = query(async (shareID) => {
7972 session_diff : {
8073 [ share . sessionID ] : [ ] ,
8174 } ,
82- session_diff_preload : {
83- [ share . sessionID ] : [ ] ,
84- } ,
85- session_diff_preload_split : {
86- [ share . sessionID ] : [ ] ,
87- } ,
8875 session_status : {
8976 [ share . sessionID ] : {
9077 type : "idle" ,
@@ -101,28 +88,6 @@ const getData = query(async (shareID) => {
10188 break
10289 case "session_diff" :
10390 result . session_diff [ share . sessionID ] = item . data
104- await Promise . all ( [
105- Promise . all (
106- item . data . map ( async ( diff ) =>
107- preloadMultiFileDiff < any > ( {
108- oldFile : { name : diff . file , contents : diff . before } ,
109- newFile : { name : diff . file , contents : diff . after } ,
110- options : createDefaultOptions ( "unified" ) ,
111- // annotations,
112- } ) ,
113- ) ,
114- ) . then ( ( r ) => ( result . session_diff_preload [ share . sessionID ] = r ) ) ,
115- Promise . all (
116- item . data . map ( async ( diff ) =>
117- preloadMultiFileDiff < any > ( {
118- oldFile : { name : diff . file , contents : diff . before } ,
119- newFile : { name : diff . file , contents : diff . after } ,
120- options : createDefaultOptions ( "split" ) ,
121- // annotations,
122- } ) ,
123- ) ,
124- ) . then ( ( r ) => ( result . session_diff_preload_split [ share . sessionID ] = r ) ) ,
125- ] )
12691 break
12792 case "message" :
12893 result . message [ item . data . sessionID ] = result . message [ item . data . sessionID ] ?? [ ]
@@ -143,17 +108,15 @@ const getData = query(async (shareID) => {
143108} , "getShareData" )
144109
145110export default function ( ) {
111+ getRequestEvent ( ) ?. response . headers . set (
112+ "Cache-Control" ,
113+ "public, max-age=30, s-maxage=300, stale-while-revalidate=86400" ,
114+ )
115+
146116 const params = useParams ( )
147117 const data = createAsync ( async ( ) => {
148118 if ( ! params . shareID ) throw new Error ( "Missing shareID" )
149- const now = Date . now ( )
150- const data = getData ( params . shareID )
151- console . log ( "getData" , Date . now ( ) - now )
152- return data
153- } )
154-
155- createEffect ( ( ) => {
156- console . log ( data ( ) )
119+ return getData ( params . shareID )
157120 } )
158121
159122 return (
@@ -241,22 +204,8 @@ export default function () {
241204 const provider = createMemo ( ( ) => activeMessage ( ) ?. model ?. providerID )
242205 const modelID = createMemo ( ( ) => activeMessage ( ) ?. model ?. modelID )
243206 const model = createMemo ( ( ) => data ( ) . model [ data ( ) . sessionID ] ?. find ( ( m ) => m . id === modelID ( ) ) )
244- const diffs = createMemo ( ( ) => {
245- const diffs = data ( ) . session_diff [ data ( ) . sessionID ] ?? [ ]
246- const preloaded = data ( ) . session_diff_preload [ data ( ) . sessionID ] ?? [ ]
247- return diffs . map ( ( diff ) => ( {
248- ...diff ,
249- preloaded : preloaded . find ( ( d ) => d . newFile . name === diff . file ) ,
250- } ) )
251- } )
252- const splitDiffs = createMemo ( ( ) => {
253- const diffs = data ( ) . session_diff [ data ( ) . sessionID ] ?? [ ]
254- const preloaded = data ( ) . session_diff_preload_split [ data ( ) . sessionID ] ?? [ ]
255- return diffs . map ( ( diff ) => ( {
256- ...diff ,
257- preloaded : preloaded . find ( ( d ) => d . newFile . name === diff . file ) ,
258- } ) )
259- } )
207+ const diffs = createMemo ( ( ) => data ( ) . session_diff [ data ( ) . sessionID ] ?? [ ] )
208+ const [ diffStyle , setDiffStyle ] = createSignal < "unified" | "split" > ( "unified" )
260209
261210 const title = ( ) => (
262211 < div class = "flex flex-col gap-4" >
@@ -380,18 +329,9 @@ export default function () {
380329 < Show when = { diffs ( ) . length > 0 } >
381330 < div class = "@container relative grow pt-14 flex-1 min-h-0 border-l border-border-weak-base" >
382331 < SessionReview
383- class = "@4xl:hidden"
384332 diffs = { diffs ( ) }
385- classes = { {
386- root : "pb-20" ,
387- header : "px-6" ,
388- container : "px-6" ,
389- } }
390- />
391- < SessionReview
392- split
393- class = "hidden @4xl:flex"
394- diffs = { splitDiffs ( ) }
333+ diffStyle = { diffStyle ( ) }
334+ onDiffStyleChange = { setDiffStyle }
395335 classes = { {
396336 root : "pb-20" ,
397337 header : "px-6" ,
@@ -419,11 +359,7 @@ export default function () {
419359 < Tabs . Content value = "session" class = "!overflow-hidden" >
420360 { turns ( ) }
421361 </ Tabs . Content >
422- < Tabs . Content
423- forceMount
424- value = "review"
425- class = "!overflow-hidden hidden data-[selected]:block"
426- >
362+ < Tabs . Content value = "review" class = "!overflow-hidden hidden data-[selected]:block" >
427363 < div class = "relative h-full pt-8 overflow-y-auto no-scrollbar" >
428364 < SessionReview
429365 diffs = { diffs ( ) }
0 commit comments