summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src/pages
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-17 03:47:44 -0600
committerAdam <[email protected]>2025-12-17 03:47:49 -0600
commit494e6fff019bb502fff88a07d6c519c063af9a02 (patch)
treecda9a1f68c013c7a542cbc4f82c7b7b63f9fa0a1 /packages/desktop/src/pages
parent0c7a297b1d3d9cdf8a060c4ed75160152da2b981 (diff)
downloadopencode-494e6fff019bb502fff88a07d6c519c063af9a02.tar.gz
opencode-494e6fff019bb502fff88a07d6c519c063af9a02.zip
feat(desktop): share sessions
Diffstat (limited to 'packages/desktop/src/pages')
-rw-r--r--packages/desktop/src/pages/layout.tsx26
-rw-r--r--packages/desktop/src/pages/session.tsx47
2 files changed, 4 insertions, 69 deletions
diff --git a/packages/desktop/src/pages/layout.tsx b/packages/desktop/src/pages/layout.tsx
index bed8950c7..618b84840 100644
--- a/packages/desktop/src/pages/layout.tsx
+++ b/packages/desktop/src/pages/layout.tsx
@@ -25,9 +25,8 @@ import {
SortableProvider,
closestCenter,
createSortable,
- useDragDropContext,
} from "@thisbeyond/solid-dnd"
-import type { DragEvent, Transformer } from "@thisbeyond/solid-dnd"
+import type { DragEvent } from "@thisbeyond/solid-dnd"
import { useProviders } from "@/hooks/use-providers"
import { Toast } from "@opencode-ai/ui/toast"
import { useGlobalSDK } from "@/context/global-sdk"
@@ -37,6 +36,7 @@ import { Header } from "@/components/header"
import { useDialog } from "@opencode-ai/ui/context/dialog"
import { DialogSelectProvider } from "@/components/dialog-select-provider"
import { useCommand } from "@/context/command"
+import { ConstrainDragXAxis } from "@/utils/solid-dnd"
export default function Layout(props: ParentProps) {
const [store, setStore] = createStore({
@@ -301,28 +301,6 @@ export default function Layout(props: ParentProps) {
setStore("activeDraggable", undefined)
}
- const ConstrainDragXAxis = (): JSX.Element => {
- const context = useDragDropContext()
- if (!context) return <></>
- const [, { onDragStart, onDragEnd, addTransformer, removeTransformer }] = context
- const transformer: Transformer = {
- id: "constrain-x-axis",
- order: 100,
- callback: (transform) => ({ ...transform, x: 0 }),
- }
- onDragStart((event) => {
- const id = getDraggableId(event)
- if (!id) return
- addTransformer("draggables", id, transformer)
- })
- onDragEnd((event) => {
- const id = getDraggableId(event)
- if (!id) return
- removeTransformer("draggables", id, transformer.id)
- })
- return <></>
- }
-
const ProjectAvatar = (props: {
project: Project
class?: string
diff --git a/packages/desktop/src/pages/session.tsx b/packages/desktop/src/pages/session.tsx
index d024d5047..3415d0c4e 100644
--- a/packages/desktop/src/pages/session.tsx
+++ b/packages/desktop/src/pages/session.tsx
@@ -23,9 +23,8 @@ import {
SortableProvider,
closestCenter,
createSortable,
- useDragDropContext,
} from "@thisbeyond/solid-dnd"
-import type { DragEvent, Transformer } from "@thisbeyond/solid-dnd"
+import type { DragEvent } from "@thisbeyond/solid-dnd"
import type { JSX } from "solid-js"
import { useSync } from "@/context/sync"
import { useTerminal, type LocalPTY } from "@/context/terminal"
@@ -42,6 +41,7 @@ import { AssistantMessage, UserMessage } from "@opencode-ai/sdk/v2"
import { useSDK } from "@/context/sdk"
import { usePrompt } from "@/context/prompt"
import { extractPromptFromParts } from "@/utils/prompt"
+import { ConstrainDragYAxis, getDraggableId } from "@/utils/solid-dnd"
export default function Page() {
const layout = useLayout()
@@ -324,19 +324,6 @@ export default function Page() {
if ((document.activeElement as HTMLElement)?.dataset?.component === "terminal") return
if (dialog.active) return
- if (event.key === "PageUp" || event.key === "PageDown") {
- const scrollContainer = document.querySelector('[data-slot="session-turn-content"]') as HTMLElement
- if (scrollContainer) {
- event.preventDefault()
- const scrollAmount = scrollContainer.clientHeight * 0.8
- scrollContainer.scrollBy({
- top: event.key === "PageUp" ? -scrollAmount : scrollAmount,
- behavior: "instant",
- })
- }
- return
- }
-
const focused = document.activeElement === inputRef
if (focused) {
if (event.key === "Escape") inputRef?.blur()
@@ -519,36 +506,6 @@ export default function Page() {
)
}
- const ConstrainDragYAxis = (): JSX.Element => {
- const context = useDragDropContext()
- if (!context) return <></>
- const [, { onDragStart, onDragEnd, addTransformer, removeTransformer }] = context
- const transformer: Transformer = {
- id: "constrain-y-axis",
- order: 100,
- callback: (transform) => ({ ...transform, y: 0 }),
- }
- onDragStart((event) => {
- const id = getDraggableId(event)
- if (!id) return
- addTransformer("draggables", id, transformer)
- })
- onDragEnd((event) => {
- const id = getDraggableId(event)
- if (!id) return
- removeTransformer("draggables", id, transformer.id)
- })
- return <></>
- }
-
- const getDraggableId = (event: unknown): string | undefined => {
- if (typeof event !== "object" || event === null) return undefined
- if (!("draggable" in event)) return undefined
- const draggable = (event as { draggable?: { id?: unknown } }).draggable
- if (!draggable) return undefined
- return typeof draggable.id === "string" ? draggable.id : undefined
- }
-
const wide = createMemo(() => layout.review.state() === "tab" || !diffs().length)
return (