Skip to content

Commit dbbc2d2

Browse files
committed
feat(share): add message query param for deep linking to specific messages
1 parent e709808 commit dbbc2d2

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

packages/enterprise/src/routes/share/[shareID].tsx

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { DataProvider } from "@opencode-ai/ui/context"
55
import { DiffComponentProvider } from "@opencode-ai/ui/context/diff"
66
import { CodeComponentProvider } from "@opencode-ai/ui/context/code"
77
import { WorkerPoolProvider } from "@opencode-ai/ui/context/worker-pool"
8-
import { createAsync, query, useParams } from "@solidjs/router"
8+
import { createAsync, query, useParams, useSearchParams } from "@solidjs/router"
99
import { createEffect, createMemo, ErrorBoundary, For, Match, Show, Switch } from "solid-js"
1010
import { Share } from "~/core/share"
1111
import { Logo, Mark } from "@opencode-ai/ui/logo"
@@ -222,8 +222,11 @@ export default function () {
222222
<CodeComponentProvider component={ClientOnlyCode}>
223223
<DataProvider data={data()} directory={info().directory}>
224224
{iife(() => {
225+
const [searchParams, setSearchParams] = useSearchParams()
226+
const getMessageId = createMemo(() =>
227+
Array.isArray(searchParams.message) ? searchParams.message[0] : searchParams.message
228+
)
225229
const [store, setStore] = createStore({
226-
messageId: undefined as string | undefined,
227230
expandedSteps: {} as Record<string, boolean>,
228231
})
229232
const messages = createMemo(() =>
@@ -235,13 +238,13 @@ export default function () {
235238
)
236239
const firstUserMessage = createMemo(() => messages().at(0))
237240
const activeMessage = createMemo(
238-
() => messages().find((m) => m.id === store.messageId) ?? firstUserMessage(),
241+
() => messages().find((m) => m.id === getMessageId()) ?? firstUserMessage(),
239242
)
240243
function setActiveMessage(message: UserMessage | undefined) {
241244
if (message) {
242-
setStore("messageId", message.id)
245+
setSearchParams({ message: message.id }, { replace: true })
243246
} else {
244-
setStore("messageId", undefined)
247+
setSearchParams({ message: undefined }, { replace: true })
245248
}
246249
}
247250
const provider = createMemo(() => activeMessage()?.model?.providerID)
@@ -374,12 +377,12 @@ export default function () {
374377
</Show>
375378
<SessionTurn
376379
sessionID={data().sessionID}
377-
messageID={store.messageId ?? firstUserMessage()!.id!}
380+
messageID={getMessageId() ?? firstUserMessage()!.id!}
378381
stepsExpanded={
379-
store.expandedSteps[store.messageId ?? firstUserMessage()!.id!] ?? false
382+
store.expandedSteps[getMessageId() ?? firstUserMessage()!.id!] ?? false
380383
}
381384
onStepsExpandedToggle={() => {
382-
const id = store.messageId ?? firstUserMessage()!.id!
385+
const id = getMessageId() ?? firstUserMessage()!.id!
383386
setStore("expandedSteps", id, (v) => !v)
384387
}}
385388
classes={{

0 commit comments

Comments
 (0)