All files / src/components/settings UseCustomPromptCheckbox.tsx

38.09% Statements 8/21
100% Branches 0/0
0% Functions 0/1
38.09% Lines 8/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 391x 1x 1x 1x           1x   1x 1x                                                 1x  
import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react"
import React, { useCallback, useState } from "react"
import { useExtensionState } from "@/context/ExtensionStateContext"
import { updateSetting } from "./utils/settingsHandlers"
 
interface CustomPromptCheckboxProps {
	providerId: string
}
 
/**
 * Checkbox to enable or disable the use of a compact prompt for local models providers.
 */
const UseCustomPromptCheckbox: React.FC<CustomPromptCheckboxProps> = ({ providerId }) => {
	const { customPrompt } = useExtensionState()
	const [isCompactPromptEnabled, setIsCompactPromptEnabled] = useState<boolean>(customPrompt === "compact")
 
	const toggleCompactPrompt = useCallback((isChecked: boolean) => {
		setIsCompactPromptEnabled(isChecked)
		updateSetting("customPrompt", isChecked ? "compact" : "")
	}, [])
 
	return (
		<div id={providerId}>
			<VSCodeCheckbox checked={isCompactPromptEnabled} onChange={() => toggleCompactPrompt(!isCompactPromptEnabled)}>
				Use compact prompt
			</VSCodeCheckbox>
			<div className="text-xs text-description">
				A system prompt optimized for smaller context window (e.g. 8k or less).
				<div className="text-error flex align-middle">
					<i className="codicon codicon-x" />
					Does not support Mcp and Focus Chain
				</div>
			</div>
		</div>
	)
}
 
export default UseCustomPromptCheckbox