|
|
@@ -6,7 +6,6 @@ import { Switch } from "@opencode-ai/ui/v2/switch-v2"
|
|
|
import { TextInputV2 } from "@opencode-ai/ui/v2/text-input-v2"
|
|
|
import { useTheme, type ColorScheme } from "@opencode-ai/ui/theme/context"
|
|
|
import { useDialog } from "@opencode-ai/ui/context/dialog"
|
|
|
-import { useParams } from "@solidjs/router"
|
|
|
import { useLanguage } from "@/context/language"
|
|
|
import { usePermission } from "@/context/permission"
|
|
|
import { usePlatform } from "@/context/platform"
|
|
|
@@ -25,7 +24,6 @@ import {
|
|
|
terminalInput,
|
|
|
useSettings,
|
|
|
} from "@/context/settings"
|
|
|
-import { decode64 } from "@/utils/base64"
|
|
|
import { playSoundById, SOUND_OPTIONS } from "@/utils/sound"
|
|
|
import { Link } from "../link"
|
|
|
import { SettingsListV2 } from "./parts/list"
|
|
|
@@ -82,50 +80,46 @@ const playDemoSound = (id: string | undefined) => {
|
|
|
}, 100)
|
|
|
}
|
|
|
|
|
|
-export const SettingsGeneralV2: Component = () => {
|
|
|
+export const SettingsGeneralV2: Component<{
|
|
|
+ sessionID?: string
|
|
|
+}> = (props) => {
|
|
|
const theme = useTheme()
|
|
|
const language = useLanguage()
|
|
|
const permission = usePermission()
|
|
|
const platform = usePlatform()
|
|
|
const dialog = useDialog()
|
|
|
- const params = useParams()
|
|
|
const settings = useSettings()
|
|
|
+ const serverSync = useServerSync()
|
|
|
+ const serverSdk = useServerSDK()
|
|
|
const mobile = createMediaQuery("(max-width: 767px)")
|
|
|
|
|
|
const updater = useUpdaterAction()
|
|
|
|
|
|
- const dir = createMemo(() => decode64(params.dir))
|
|
|
+ const dir = createMemo(() => {
|
|
|
+ if (!props.sessionID) return undefined
|
|
|
+ return serverSync().session.lineage.peek(props.sessionID)?.session.directory
|
|
|
+ })
|
|
|
const accepting = createMemo(() => {
|
|
|
const value = dir()
|
|
|
- if (!value) return false
|
|
|
- if (!params.id) return permission.isAutoAcceptingDirectory(value)
|
|
|
- return permission.isAutoAccepting(params.id, value)
|
|
|
+ if (!value || !props.sessionID) return false
|
|
|
+ return permission.isAutoAccepting(props.sessionID, value)
|
|
|
})
|
|
|
|
|
|
const toggleAccept = (checked: boolean) => {
|
|
|
const value = dir()
|
|
|
- if (!value) return
|
|
|
-
|
|
|
- if (!params.id) {
|
|
|
- if (permission.isAutoAcceptingDirectory(value) === checked) return
|
|
|
- permission.toggleAutoAcceptDirectory(value)
|
|
|
- return
|
|
|
- }
|
|
|
+ if (!value || !props.sessionID) return
|
|
|
|
|
|
if (checked) {
|
|
|
- permission.enableAutoAccept(params.id, value)
|
|
|
+ permission.enableAutoAccept(props.sessionID, value)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- permission.disableAutoAccept(params.id, value)
|
|
|
+ permission.disableAutoAccept(props.sessionID, value)
|
|
|
}
|
|
|
const desktop = createMemo(() => platform.platform === "desktop")
|
|
|
|
|
|
const themeOptions = createMemo<ThemeOption[]>(() => theme.ids().map((id) => ({ id, name: theme.name(id) })))
|
|
|
|
|
|
- const serverSync = useServerSync()
|
|
|
- const serverSdk = useServerSDK()
|
|
|
-
|
|
|
const [shells] = createResource(
|
|
|
() =>
|
|
|
serverSdk()
|