diff --git a/extensions/void/src/SidebarWebviewProvider.ts b/extensions/void/src/SidebarWebviewProvider.ts index a6cdf85c..c8aaffba 100644 --- a/extensions/void/src/SidebarWebviewProvider.ts +++ b/extensions/void/src/SidebarWebviewProvider.ts @@ -19,7 +19,7 @@ export class SidebarWebviewProvider implements vscode.WebviewViewProvider { private readonly _extensionUri: vscode.Uri - private _webviewView?: vscode.WebviewView; // only used inside onDidChangeConfiguration + // private _webviewView?: vscode.WebviewView; private _webviewDeps: string[] = []; constructor(context: vscode.ExtensionContext) { @@ -28,35 +28,14 @@ export class SidebarWebviewProvider implements vscode.WebviewViewProvider { let temp_res: typeof this._res | undefined = undefined this.webview = new Promise((res, rej) => { temp_res = res }) - if (!temp_res) throw new Error("sidebar provider: resolver was undefined") + if (!temp_res) throw new Error("Void sidebar provider: resolver was undefined") this._res = temp_res - - // if it affects one of the config items webview depends on, update the webview - // TODO should be able to move this entirely to React - make updateWebviewHTML mount once, and then send updates via postMessage from then on - vscode.workspace.onDidChangeConfiguration(event => { - if (this._webviewDeps.map(dep => event.affectsConfiguration(dep)).some(v => !!v)) { - if (this._webviewView) { - this.updateWebviewHTML(this._webviewView.webview); - } - } - }); } - // this is updated - private updateWebviewHTML(webview: vscode.Webview) { - const allowed_urls = ['https://api.anthropic.com', 'https://api.openai.com', 'https://api.greptile.com']; + // called by us + updateWebviewHTML(webview: vscode.Webview) { this._webviewDeps = [] - const ollamaEndpoint: string | undefined = vscode.workspace.getConfiguration('void.ollama').get('endpoint'); - this._webviewDeps.push('void.ollama.endpoint'); - if (ollamaEndpoint) - allowed_urls.push(ollamaEndpoint); - - const openAICompatibleEndpoint: string | undefined = vscode.workspace.getConfiguration('void.openAICompatible').get('endpoint'); - this._webviewDeps.push('void.openAICompatible.endpoint'); - if (openAICompatibleEndpoint) - allowed_urls.push(openAICompatibleEndpoint+'/chat/completions'); - const scriptUri = webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, 'dist/sidebar/index.js')); const stylesUri = webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, 'dist/sidebar/styles.css')); const rootUri = webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri)); @@ -68,7 +47,7 @@ export class SidebarWebviewProvider implements vscode.WebviewViewProvider { Custom View - + @@ -100,6 +79,6 @@ export class SidebarWebviewProvider implements vscode.WebviewViewProvider { // resolve webview and _webviewView this._res(webview); - this._webviewView = webviewView; + // this._webviewView = webviewView; } } diff --git a/extensions/void/src/extension.ts b/extensions/void/src/extension.ts index de2c699a..a2724435 100644 --- a/extensions/void/src/extension.ts +++ b/extensions/void/src/extension.ts @@ -121,7 +121,7 @@ export function activate(context: vscode.ExtensionContext) { } else if (m.type === 'persistPartialVoidConfig') { const partialVoidConfig = m.partialVoidConfig - context.workspaceState.update('partialVoidConfig', partialVoidConfig) + context.globalState.update('partialVoidConfig', partialVoidConfig) } else if (m.type === 'getAllThreads') { const threads: ChatThreads = context.workspaceState.get('allThreads') ?? {} diff --git a/extensions/void/src/sidebar/SidebarSettings.tsx b/extensions/void/src/sidebar/SidebarSettings.tsx index cb764733..a58af8ad 100644 --- a/extensions/void/src/sidebar/SidebarSettings.tsx +++ b/extensions/void/src/sidebar/SidebarSettings.tsx @@ -4,18 +4,10 @@ import { configFields, useVoidConfig, VoidConfigField } from "./contextForConfig const SettingOfFieldAndParam = ({ field, param }: { field: VoidConfigField, param: string }) => { const { voidConfig, partialVoidConfig, voidConfigInfo, setConfigParam } = useVoidConfig() + const { enumArr, defaultVal, description } = voidConfigInfo[field][param] + const val = partialVoidConfig[field]?.[param] ?? defaultVal // current value of this item - const { defaultVal, description } = voidConfigInfo[field][param] - const [val, setVal] = useState(partialVoidConfig[field]?.[param] ?? defaultVal) - - const { enumArr } = voidConfigInfo[field][param] - - const updateState = (newValue: string | undefined) => { - setVal(newValue) - if (newValue) - setConfigParam(field, param, newValue) - } - + const updateState = (newValue: string) => { setConfigParam(field, param, newValue) } const resetButton =