|
|
@@ -1,15 +1,14 @@
|
|
|
import { Prompt, type PromptRef } from "@tui/component/prompt"
|
|
|
-import { createMemo, Match, onMount, Show, Switch, type ParentProps } from "solid-js"
|
|
|
+import { createMemo, Match, onMount, Show, Switch } from "solid-js"
|
|
|
import { useTheme } from "@tui/context/theme"
|
|
|
-import { useKeybind } from "../context/keybind"
|
|
|
-import type { KeybindsConfig } from "@opencode-ai/sdk"
|
|
|
import { Logo } from "../component/logo"
|
|
|
import { Locale } from "@/util/locale"
|
|
|
import { useSync } from "../context/sync"
|
|
|
import { Toast } from "../ui/toast"
|
|
|
import { useArgs } from "../context/args"
|
|
|
-import { Global } from "@/global"
|
|
|
import { useDirectory } from "../context/directory"
|
|
|
+import { useRoute, useRouteData } from "@tui/context/route"
|
|
|
+import { usePromptRef } from "../context/prompt"
|
|
|
|
|
|
// TODO: what is the best way to do this?
|
|
|
let once = false
|
|
|
@@ -17,6 +16,8 @@ let once = false
|
|
|
export function Home() {
|
|
|
const sync = useSync()
|
|
|
const { theme } = useTheme()
|
|
|
+ const route = useRouteData("home")
|
|
|
+ const promptRef = usePromptRef()
|
|
|
const mcp = createMemo(() => Object.keys(sync.data.mcp).length > 0)
|
|
|
const mcpError = createMemo(() => {
|
|
|
return Object.values(sync.data.mcp).some((x) => x.status === "failed")
|
|
|
@@ -45,7 +46,10 @@ export function Home() {
|
|
|
const args = useArgs()
|
|
|
onMount(() => {
|
|
|
if (once) return
|
|
|
- if (args.prompt) {
|
|
|
+ if (route.initialPrompt) {
|
|
|
+ prompt.set(route.initialPrompt)
|
|
|
+ once = true
|
|
|
+ } else if (args.prompt) {
|
|
|
prompt.set({ input: args.prompt, parts: [] })
|
|
|
once = true
|
|
|
}
|
|
|
@@ -57,7 +61,13 @@ export function Home() {
|
|
|
<box flexGrow={1} justifyContent="center" alignItems="center" paddingLeft={2} paddingRight={2} gap={1}>
|
|
|
<Logo />
|
|
|
<box width="100%" maxWidth={75} zIndex={1000} paddingTop={1}>
|
|
|
- <Prompt ref={(r) => (prompt = r)} hint={Hint} />
|
|
|
+ <Prompt
|
|
|
+ ref={(r) => {
|
|
|
+ prompt = r
|
|
|
+ promptRef.set(r)
|
|
|
+ }}
|
|
|
+ hint={Hint}
|
|
|
+ />
|
|
|
</box>
|
|
|
<Toast />
|
|
|
</box>
|