diff --git a/src/vs/platform/void/common/voidSettingsService.ts b/src/vs/platform/void/common/voidSettingsService.ts index 0c0ceb28..ad776239 100644 --- a/src/vs/platform/void/common/voidSettingsService.ts +++ b/src/vs/platform/void/common/voidSettingsService.ts @@ -13,7 +13,7 @@ import { IStorageService, StorageScope, StorageTarget } from '../../storage/comm import { defaultSettingsOfProvider, FeatureName, ProviderName, ModelSelectionOfFeature, SettingsOfProvider, SettingName, providerNames, ModelSelection, modelSelectionsEqual, featureNames, modelInfoOfDefaultNames, VoidModelInfo, FeatureFlagSettings, FeatureFlagName, defaultFeatureFlagSettings } from './voidSettingsTypes.js'; -const STORAGE_KEY = 'void.voidSettingsI' +const STORAGE_KEY = 'void.voidSettingsStorage' type SetSettingOfProviderFn = ( providerName: ProviderName, diff --git a/src/vs/platform/void/common/voidSettingsTypes.ts b/src/vs/platform/void/common/voidSettingsTypes.ts index 7aa1eb78..5e47fee5 100644 --- a/src/vs/platform/void/common/voidSettingsTypes.ts +++ b/src/vs/platform/void/common/voidSettingsTypes.ts @@ -110,8 +110,8 @@ export const customProviderSettings = { apiKey: '', }, openAICompatible: { - apiKey: '', endpoint: '', + apiKey: '', }, gemini: { apiKey: '', diff --git a/src/vs/workbench/contrib/void/browser/react/src/util/inputs.tsx b/src/vs/workbench/contrib/void/browser/react/src/util/inputs.tsx index 70be6772..0c7d039f 100644 --- a/src/vs/workbench/contrib/void/browser/react/src/util/inputs.tsx +++ b/src/vs/workbench/contrib/void/browser/react/src/util/inputs.tsx @@ -4,11 +4,12 @@ *--------------------------------------------------------------------------------------------*/ import React, { useCallback, useEffect, useRef } from 'react'; -import { useService } from '../util/services.js'; +import { useIsDark, useService } from '../util/services.js'; import { IInputBoxStyles, InputBox } from '../../../../../../../base/browser/ui/inputbox/inputBox.js'; -import { defaultInputBoxStyles, defaultSelectBoxStyles } from '../../../../../../../platform/theme/browser/defaultStyles.js'; +import { defaultCheckboxStyles, defaultInputBoxStyles, defaultSelectBoxStyles } from '../../../../../../../platform/theme/browser/defaultStyles.js'; import { SelectBox } from '../../../../../../../base/browser/ui/selectBox/selectBox.js'; import { IDisposable } from '../../../../../../../base/common/lifecycle.js'; +import { Checkbox } from '../../../../../../../base/browser/ui/toggle/toggle.js'; @@ -48,7 +49,6 @@ export const VoidInputBox = ({ onChangeText, onCreateInstance, inputBoxRef, plac }) => { const contextViewProvider = useService('contextViewService'); - return [ @@ -93,6 +93,96 @@ export const VoidInputBox = ({ onChangeText, onCreateInstance, inputBoxRef, plac +export const VoidSwitch = ({ + value, + onChange, + label, + disabled = false, + size = 'md' +}: { + value: boolean; + onChange: (value: boolean) => void; + label?: string; + disabled?: boolean; + size?: 'xs' | 'sm' | 'msm' | 'md'; +}) => { + return ( + + ); +}; + + + + + +export const VoidCheckBox = ({ label, value, onClick, className }: { label: string, value: boolean, onClick: (checked: boolean) => void, className?: string }) => { + const divRef = useRef(null) + const instanceRef = useRef(null) + + useEffect(() => { + if (!instanceRef.current) return + instanceRef.current.checked = value + }, [value]) + + + return { + divRef.current = container + return [label, value, defaultCheckboxStyles] as const + }, [label, value])} + onCreateInstance={useCallback((instance: Checkbox) => { + instanceRef.current = instance; + divRef.current?.append(instance.domNode) + const d = instance.onChange(() => onClick(instance.checked)) + return [d] + }, [onClick])} + dispose={useCallback((instance: Checkbox) => { + instance.dispose() + instance.domNode.remove() + }, [])} + + /> + +} + + export const VoidSelectBox = ({ onChangeSelection, onCreateInstance, selectBoxRef, options }: { onChangeSelection: (value: T) => void; onCreateInstance?: ((instance: SelectBox) => void | IDisposable[]); diff --git a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx index 66b11f3d..1d7d10df 100644 --- a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx +++ b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx @@ -2,7 +2,7 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { InputBox } from '../../../../../../../base/browser/ui/inputbox/inputBox.js' import { ProviderName, SettingName, displayInfoOfSettingName, titleOfProviderName, providerNames, VoidModelInfo, featureFlagNames, displayInfoOfFeatureFlag, customSettingNamesOfProvider } from '../../../../../../../platform/void/common/voidSettingsTypes.js' import ErrorBoundary from '../sidebar-tsx/ErrorBoundary.js' -import { VoidInputBox, VoidSelectBox } from '../util/inputs.js' +import { VoidCheckBox, VoidInputBox, VoidSelectBox, VoidSwitch } from '../util/inputs.js' import { useIsDark, useRefreshModelListener, useRefreshModelState, useService, useSettingsState } from '../util/services.js' import { X, RefreshCw, Loader2, Check } from 'lucide-react' import { RefreshableProviderName, refreshableProviderNames } from '../../../../../../../platform/void/common/refreshModelService.js' @@ -226,7 +226,29 @@ const SettingsForProvider = ({ providerName }: { providerName: ProviderName }) = return <>

{titleOfProviderName(providerName)}

- + { + const enabledRef = voidSettingsService.state.settingsOfProvider[providerName].enabled + voidSettingsService.setSettingOfProvider(providerName, 'enabled', !enabledRef) + }, [voidSettingsService, providerName])} + size='xs' + disabled={false} + label='' + /> + {/* { + const enabledRef = voidSettingsService.state.settingsOfProvider[providerName].enabled + voidSettingsService.setSettingOfProvider(providerName, 'enabled', !enabledRef) + }, [voidSettingsService, providerName])} + /> */} + + {/* */}
{/* settings besides models (e.g. api key) */} {settingNames.map((settingName, i) => { @@ -254,10 +276,12 @@ export const VoidFeatureFlagSettings = () => { const value = voidSettingsState.featureFlagSettings[flagName] const { description } = displayInfoOfFeatureFlag(flagName) return
-
- +
+ { voidSettingsService.setFeatureFlag(flagName, !value) }} + />

{description}