MCPcopy
hub / github.com/anomalyco/opencode / SettingsGeneral

Function SettingsGeneral

packages/app/src/components/settings-general.tsx:84–749  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

82}
83
84export const SettingsGeneral: Component = () => {
85 const theme = useTheme()
86 const language = useLanguage()
87 const permission = usePermission()
88 const platform = usePlatform()
89 const dialog = useDialog()
90 const params = useParams()
91 const settings = useSettings()
92
93 const updater = useUpdaterAction()
94
95 const linux = createMemo(() => platform.platform === "desktop" && platform.os === "linux")
96 const dir = createMemo(() => decode64(params.dir))
97 const accepting = createMemo(() => {
98 const value = dir()
99 if (!value) return false
100 if (!params.id) return permission.isAutoAcceptingDirectory(value)
101 return permission.isAutoAccepting(params.id, value)
102 })
103
104 const toggleAccept = (checked: boolean) => {
105 const value = dir()
106 if (!value) return
107
108 if (!params.id) {
109 if (permission.isAutoAcceptingDirectory(value) === checked) return
110 permission.toggleAutoAcceptDirectory(value)
111 return
112 }
113
114 if (checked) {
115 permission.enableAutoAccept(params.id, value)
116 return
117 }
118
119 permission.disableAutoAccept(params.id, value)
120 }
121 const desktop = createMemo(() => platform.platform === "desktop")
122
123 const themeOptions = createMemo<ThemeOption[]>(() => theme.ids().map((id) => ({ id, name: theme.name(id) })))
124
125 const serverSync = useServerSync()
126 const serverSdk = useServerSDK()
127
128 const [shells] = createResource(
129 () =>
130 serverSdk()
131 .client.pty.shells()
132 .then((res) => res.data ?? [])
133 .catch(() => [] as ShellOption[]),
134 { initialValue: [] as ShellOption[] },
135 )
136
137 const [displayBackend, { refetch: refetchDisplayBackend }] = createResource(
138 () => (linux() && platform.getDisplayBackend ? true : false),
139 () => Promise.resolve(platform.getDisplayBackend?.() ?? null).catch(() => null as DisplayBackend | null),
140 { initialValue: null as DisplayBackend | null },
141 )

Callers

nothing calls this directly

Calls 10

useDialogFunction · 0.90
useUpdaterActionFunction · 0.90
decode64Function · 0.90
shellsMethod · 0.80
pushMethod · 0.80
serverSyncFunction · 0.70
getMethod · 0.65
dirFunction · 0.50
idsMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected