Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 12 additions & 11 deletions packages/app/src/context/file.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { createEffect, createMemo, createRoot, onCleanup } from "solid-js"
import { createStore, produce } from "solid-js/store"
import { batch, createEffect, createMemo, createRoot, onCleanup } from "solid-js"
import { createStore, produce, reconcile } from "solid-js/store"
import { createSimpleContext } from "@opencode-ai/ui/context"
import type { FileContent, FileNode } from "@opencode-ai/sdk/v2"
import { showToast } from "@opencode-ai/ui/toast"
Expand All @@ -8,7 +8,6 @@ import { getFilename } from "@opencode-ai/util/path"
import { useSDK } from "./sdk"
import { useSync } from "./sync"
import { useLanguage } from "@/context/language"
import { decode64 } from "@/utils/base64"
import { Persist, persisted } from "@/utils/persist"

export type FileSelection = {
Expand Down Expand Up @@ -276,12 +275,10 @@ export const { use: useFile, provider: FileProvider } = createSimpleContext({
const params = useParams()
const language = useLanguage()

const directory = createMemo(() => decode64(params.dir) ?? sdk.directory)

const scope = createMemo(() => directory())
const scope = createMemo(() => sdk.directory)

function normalize(input: string) {
const root = directory()
const root = scope()
const prefix = root.endsWith("/") ? root : root + "/"

let path = unquoteGitPath(stripQueryAndHash(stripFileProtocol(input)))
Expand Down Expand Up @@ -372,9 +369,13 @@ export const { use: useFile, provider: FileProvider } = createSimpleContext({
inflight.clear()
treeInflight.clear()
contentLru.clear()
setStore("file", {})
setTree("node", {})
setTree("dir", { "": { expanded: true } })

batch(() => {
setStore("file", reconcile({}))
setTree("node", reconcile({}))
setTree("dir", reconcile({}))
setTree("dir", "", { expanded: true })
})
})

const viewCache = new Map<string, ViewCacheEntry>()
Expand Down Expand Up @@ -415,7 +416,7 @@ export const { use: useFile, provider: FileProvider } = createSimpleContext({
return entry.value
}

const view = createMemo(() => loadView(directory(), params.id))
const view = createMemo(() => loadView(scope(), params.id))

function ensure(path: string) {
if (!path) return
Expand Down
6 changes: 3 additions & 3 deletions packages/app/src/context/sdk.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import { createOpencodeClient, type Event } from "@opencode-ai/sdk/v2/client"
import { createSimpleContext } from "@opencode-ai/ui/context"
import { createGlobalEmitter } from "@solid-primitives/event-bus"
import { createEffect, createMemo, onCleanup } from "solid-js"
import { createEffect, createMemo, onCleanup, type Accessor } from "solid-js"
import { useGlobalSDK } from "./global-sdk"
import { usePlatform } from "./platform"

export const { use: useSDK, provider: SDKProvider } = createSimpleContext({
name: "SDK",
init: (props: { directory: string }) => {
init: (props: { directory: Accessor<string> }) => {
const platform = usePlatform()
const globalSDK = useGlobalSDK()

const directory = createMemo(() => props.directory)
const directory = createMemo(props.directory)
const client = createMemo(() =>
createOpencodeClient({
baseUrl: globalSDK.url,
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/pages/directory-layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export default function Layout(props: ParentProps) {
})
return (
<Show when={directory()}>
<SDKProvider directory={directory()}>
<SDKProvider directory={directory}>
<SyncProvider>
{iife(() => {
const sync = useSync()
Expand Down
4 changes: 2 additions & 2 deletions packages/app/src/pages/session.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,7 @@ export default function Page() {

createEffect(
on(
() => params.id,
sessionKey,
() => setTitle({ draft: "", editing: false, saving: false, menuOpen: false, pendingRename: false }),
{ defer: true },
),
Expand Down Expand Up @@ -1672,7 +1672,7 @@ export default function Page() {

createEffect(
on(
() => params.dir,
() => sdk.directory,
() => {
void file.tree.list("")

Expand Down
Loading