Skip to content

Commit dbfbbc6

Browse files
Merge pull request #92 from Royal-lobster/better-start-auth
2 parents ea21da4 + e3573e1 commit dbfbbc6

File tree

3 files changed

+71
-23
lines changed

3 files changed

+71
-23
lines changed

.changeset/afraid-fishes-rule.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"syncia": patch
3+
---
4+
5+
Fixes UI for welcome auth screen and settings page base url input

src/components/Settings/Sections/ChatSettings.tsx

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,6 @@ const ChatSettings = () => {
8686
type={showPassword ? 'text' : 'password'}
8787
className="input"
8888
/>
89-
<input
90-
ref={OpenAiBaseUrlInputRef}
91-
name="openAiBaseUrl"
92-
defaultValue={chatSettings.openAiBaseUrl || ''}
93-
placeholder="Enter your OpenAI Base URL"
94-
className="cdx-mt-4 cdx-text-center cdx-p-2 cdx-w-full cdx-rounded-md cdx-border dark:cdx-border-neutral-600 cdx-border-neutral-200 dark:cdx-bg-neutral-800/90 cdx-bg-neutral-200/90 focus:cdx-outline-none focus:cdx-ring-2 focus:cdx-ring-blue-900 focus:cdx-ring-opacity-50 data-[error]:cdx-text-red-500"
95-
/>
96-
9789
<button
9890
type="button"
9991
className="cdx-absolute cdx-right-4 cdx-top-1/2 cdx-transform cdx--translate-y-1/2 cdx-text-neutral-500 dark:cdx-text-neutral-200 cdx-bg-transparent cdx-outline-none cdx-cursor-pointer"
@@ -111,6 +103,24 @@ const ChatSettings = () => {
111103
</button>
112104
</div>
113105
</FieldWrapper>
106+
<FieldWrapper
107+
title="OpenAI Base URL"
108+
description="Enter your custom OpenAI API base URL (optional)"
109+
onSubmit={handleOpenAiKeySubmit}
110+
>
111+
<div className="cdx-flex cdx-gap-2 cdx-items-center">
112+
<input
113+
ref={OpenAiBaseUrlInputRef}
114+
name="openAiBaseUrl"
115+
defaultValue={chatSettings.openAiBaseUrl || ''}
116+
placeholder="Enter your OpenAI Base URL"
117+
className="input cdx-w-full"
118+
/>
119+
<button type="submit" className="btn">
120+
Update
121+
</button>
122+
</div>
123+
</FieldWrapper>{' '}
114124
{/* =========================
115125
Model Setting
116126
===========================*/}

src/components/Sidebar/auth/index.tsx

Lines changed: 48 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { validateApiKey } from '../../../lib/validApiKey'
55
const Auth = () => {
66
const [, setSettings] = useSettings()
77
const [error, setError] = React.useState<string | null>(null)
8+
const [showAdvanced, setShowAdvanced] = React.useState(false)
89

910
useEffect(() => {
1011
if (error) {
@@ -18,23 +19,23 @@ const Auth = () => {
1819
e.preventDefault()
1920
const data = new FormData(e.currentTarget)
2021
const key = data.get('openAiKey') as string | null
21-
const openAiBaseUrl = data.get('openAiBaseUrl') as
22-
| string
23-
| 'https://api.openai.com/v1'
22+
const openAiBaseUrl =
23+
(data.get('openAiBaseUrl') as string) || 'https://api.openai.com/v1'
2424

2525
if (key && (await validateApiKey(key, openAiBaseUrl))) {
2626
setSettings((prev) => ({
2727
...prev,
2828
chat: {
2929
...prev.chat,
3030
openAIKey: key as string,
31-
openAiBaseUrl: openAiBaseUrl as string,
31+
openAiBaseUrl: openAiBaseUrl,
3232
},
3333
}))
3434
} else {
3535
setError('Invalid API key. Please try with a valid one.')
3636
}
3737
}
38+
3839
return (
3940
<form
4041
onSubmit={handleOpenAiKeySubmit}
@@ -58,17 +59,48 @@ const Auth = () => {
5859
<div className="cdx-text-sm cdx-text-gray-400 cdx-mt-2">
5960
sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
6061
</div>
61-
<input
62-
name="openAiKey"
63-
placeholder="Enter your OpenAI API key"
64-
data-error={error ? 'true' : undefined}
65-
className="cdx-mt-4 cdx-text-center cdx-p-2 cdx-w-full cdx-rounded-md cdx-border dark:cdx-border-neutral-600 cdx-border-neutral-200 dark:cdx-bg-neutral-800/90 cdx-bg-neutral-200/90 focus:cdx-outline-none focus:cdx-ring-2 focus:cdx-ring-blue-900 focus:cdx-ring-opacity-50 data-[error]:cdx-text-red-500"
66-
/>
67-
<input
68-
name="openAiBaseUrl"
69-
placeholder="Enter your OpenAI Base URL"
70-
className="cdx-mt-4 cdx-text-center cdx-p-2 cdx-w-full cdx-rounded-md cdx-border dark:cdx-border-neutral-600 cdx-border-neutral-200 dark:cdx-bg-neutral-800/90 cdx-bg-neutral-200/90 focus:cdx-outline-none focus:cdx-ring-2 focus:cdx-ring-blue-900 focus:cdx-ring-opacity-50 data-[error]:cdx-text-red-500"
71-
/>
62+
63+
<div className="cdx-w-full cdx-mt-6">
64+
<label
65+
htmlFor="openAiKey"
66+
className="cdx-block cdx-text-center cdx-text-sm cdx-text-gray-500 dark:cdx-text-gray-400 cdx-mb-2"
67+
>
68+
API Key
69+
</label>
70+
<input
71+
id="openAiKey"
72+
name="openAiKey"
73+
placeholder="Paste your OpenAI API key"
74+
data-error={error ? 'true' : undefined}
75+
className="cdx-text-center cdx-p-2 cdx-w-full cdx-rounded-md cdx-border dark:cdx-border-neutral-600 cdx-border-neutral-200 dark:cdx-bg-neutral-800/90 cdx-bg-neutral-200/90 focus:cdx-outline-none focus:cdx-ring-2 focus:cdx-ring-blue-900 focus:cdx-ring-opacity-50 data-[error]:cdx-text-red-500"
76+
/>
77+
</div>
78+
79+
<button
80+
type="button"
81+
onClick={() => setShowAdvanced(!showAdvanced)}
82+
className="cdx-mt-4 cdx-text-sm cdx-text-blue-400 hover:cdx-underline"
83+
>
84+
{showAdvanced ? 'Hide Advanced Settings' : 'Show Advanced Settings'}
85+
</button>
86+
87+
{showAdvanced && (
88+
<div className="cdx-w-full cdx-mt-4">
89+
<label
90+
htmlFor="openAiBaseUrl"
91+
className="cdx-block cdx-text-center cdx-text-sm cdx-text-gray-500 dark:cdx-text-gray-400 cdx-mb-2"
92+
>
93+
Base URL (optional)
94+
</label>
95+
<input
96+
id="openAiBaseUrl"
97+
name="openAiBaseUrl"
98+
placeholder="https://api.openai.com/v1"
99+
defaultValue="https://api.openai.com/v1"
100+
className="cdx-text-center cdx-p-2 cdx-w-full cdx-rounded-md cdx-border dark:cdx-border-neutral-600 cdx-border-neutral-200 dark:cdx-bg-neutral-800/90 cdx-bg-neutral-200/90 focus:cdx-outline-none focus:cdx-ring-2 focus:cdx-ring-blue-900 focus:cdx-ring-opacity-50"
101+
/>
102+
</div>
103+
)}
72104

73105
{error && (
74106
<div className="cdx-text-sm cdx-text-red-500 cdx-mt-2">{error}</div>
@@ -80,6 +112,7 @@ const Auth = () => {
80112
>
81113
Submit
82114
</button>
115+
83116
<div className="cdx-text-sm cdx-text-gray-400 cdx-mt-2">
84117
(Note: we only store your key locally. We do not send it anywhere. You
85118
can check the{' '}

0 commit comments

Comments
 (0)