Skip to content

Commit d812dec

Browse files
committed
feat: add default URLs for providers and improve form validation handling
1 parent a80e1e6 commit d812dec

File tree

1 file changed

+37
-14
lines changed

1 file changed

+37
-14
lines changed

webview-ui/src/components/chat/CodeIndexPopover.tsx

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ import type { EmbedderProvider } from "@roo/embeddingModels"
4141
import type { IndexingStatus } from "@roo/ExtensionMessage"
4242
import { CODEBASE_INDEX_DEFAULTS } from "@roo-code/types"
4343

44+
// Default URLs for providers
45+
const DEFAULT_QDRANT_URL = "http://localhost:6333"
46+
const DEFAULT_OLLAMA_URL = "http://localhost:11434"
47+
4448
interface CodeIndexPopoverProps {
4549
children: React.ReactNode
4650
indexingStatus: IndexingStatus
@@ -544,9 +548,11 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
544548
</label>
545549
<Select
546550
value={currentSettings.codebaseIndexEmbedderProvider}
547-
onValueChange={(value: EmbedderProvider) =>
551+
onValueChange={(value: EmbedderProvider) => {
548552
updateSetting("codebaseIndexEmbedderProvider", value)
549-
}>
553+
// Clear model selection when switching providers
554+
updateSetting("codebaseIndexEmbedderModelId", "")
555+
}}>
550556
<SelectTrigger className="w-full">
551557
<SelectValue />
552558
</SelectTrigger>
@@ -586,7 +592,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
586592
})}
587593
/>
588594
{formErrors.codeIndexOpenAiKey && (
589-
<p className="text-xs text-vscode-errorForeground">
595+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
590596
{formErrors.codeIndexOpenAiKey}
591597
</p>
592598
)}
@@ -625,7 +631,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
625631
})}
626632
</VSCodeDropdown>
627633
{formErrors.codebaseIndexEmbedderModelId && (
628-
<p className="text-xs text-vscode-errorForeground">
634+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
629635
{formErrors.codebaseIndexEmbedderModelId}
630636
</p>
631637
)}
@@ -644,13 +650,23 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
644650
onInput={(e: any) =>
645651
updateSetting("codebaseIndexEmbedderBaseUrl", e.target.value)
646652
}
653+
onBlur={(e: any) => {
654+
// Set default Ollama URL if field is empty
655+
if (!e.target.value.trim()) {
656+
e.target.value = DEFAULT_OLLAMA_URL
657+
updateSetting(
658+
"codebaseIndexEmbedderBaseUrl",
659+
DEFAULT_OLLAMA_URL,
660+
)
661+
}
662+
}}
647663
placeholder={t("settings:codeIndex.ollamaUrlPlaceholder")}
648664
className={cn("w-full", {
649665
"border-red-500": formErrors.codebaseIndexEmbedderBaseUrl,
650666
})}
651667
/>
652668
{formErrors.codebaseIndexEmbedderBaseUrl && (
653-
<p className="text-xs text-vscode-errorForeground">
669+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
654670
{formErrors.codebaseIndexEmbedderBaseUrl}
655671
</p>
656672
)}
@@ -689,7 +705,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
689705
})}
690706
</VSCodeDropdown>
691707
{formErrors.codebaseIndexEmbedderModelId && (
692-
<p className="text-xs text-vscode-errorForeground">
708+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
693709
{formErrors.codebaseIndexEmbedderModelId}
694710
</p>
695711
)}
@@ -720,7 +736,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
720736
})}
721737
/>
722738
{formErrors.codebaseIndexOpenAiCompatibleBaseUrl && (
723-
<p className="text-xs text-vscode-errorForeground">
739+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
724740
{formErrors.codebaseIndexOpenAiCompatibleBaseUrl}
725741
</p>
726742
)}
@@ -748,7 +764,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
748764
})}
749765
/>
750766
{formErrors.codebaseIndexOpenAiCompatibleApiKey && (
751-
<p className="text-xs text-vscode-errorForeground">
767+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
752768
{formErrors.codebaseIndexOpenAiCompatibleApiKey}
753769
</p>
754770
)}
@@ -769,7 +785,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
769785
})}
770786
/>
771787
{formErrors.codebaseIndexEmbedderModelId && (
772-
<p className="text-xs text-vscode-errorForeground">
788+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
773789
{formErrors.codebaseIndexEmbedderModelId}
774790
</p>
775791
)}
@@ -797,7 +813,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
797813
})}
798814
/>
799815
{formErrors.codebaseIndexEmbedderModelDimension && (
800-
<p className="text-xs text-vscode-errorForeground">
816+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
801817
{formErrors.codebaseIndexEmbedderModelDimension}
802818
</p>
803819
)}
@@ -823,7 +839,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
823839
})}
824840
/>
825841
{formErrors.codebaseIndexGeminiApiKey && (
826-
<p className="text-xs text-vscode-errorForeground">
842+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
827843
{formErrors.codebaseIndexGeminiApiKey}
828844
</p>
829845
)}
@@ -862,7 +878,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
862878
})}
863879
</VSCodeDropdown>
864880
{formErrors.codebaseIndexEmbedderModelId && (
865-
<p className="text-xs text-vscode-errorForeground">
881+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
866882
{formErrors.codebaseIndexEmbedderModelId}
867883
</p>
868884
)}
@@ -880,13 +896,20 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
880896
onInput={(e: any) =>
881897
updateSetting("codebaseIndexQdrantUrl", e.target.value)
882898
}
899+
onBlur={(e: any) => {
900+
// Set default Qdrant URL if field is empty
901+
if (!e.target.value.trim()) {
902+
currentSettings.codebaseIndexQdrantUrl = DEFAULT_QDRANT_URL
903+
updateSetting("codebaseIndexQdrantUrl", DEFAULT_QDRANT_URL)
904+
}
905+
}}
883906
placeholder={t("settings:codeIndex.qdrantUrlPlaceholder")}
884907
className={cn("w-full", {
885908
"border-red-500": formErrors.codebaseIndexQdrantUrl,
886909
})}
887910
/>
888911
{formErrors.codebaseIndexQdrantUrl && (
889-
<p className="text-xs text-vscode-errorForeground">
912+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
890913
{formErrors.codebaseIndexQdrantUrl}
891914
</p>
892915
)}
@@ -906,7 +929,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
906929
})}
907930
/>
908931
{formErrors.codeIndexQdrantApiKey && (
909-
<p className="text-xs text-vscode-errorForeground">
932+
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
910933
{formErrors.codeIndexQdrantApiKey}
911934
</p>
912935
)}

0 commit comments

Comments
 (0)