Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
new-api
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
e1fbf73a
authored
May 24, 2025
by
CaIon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: improve input validation and error handling in ModelSetting and SettingGeminiModel components
parent
eea5967e
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
47 additions
and
28 deletions
+47
-28
web/src/components/ModelSetting.js
+4
-1
web/src/pages/Setting/Model/SettingGeminiModel.js
+43
-27
No files found.
web/src/components/ModelSetting.js
View file @
e1fbf73a
...
...
@@ -39,7 +39,9 @@ const ModelSetting = () => {
item
.
key
===
'claude.default_max_tokens'
||
item
.
key
===
'gemini.supported_imagine_models'
)
{
item
.
value
=
JSON
.
stringify
(
JSON
.
parse
(
item
.
value
),
null
,
2
);
if
(
item
.
value
!==
''
)
{
item
.
value
=
JSON
.
stringify
(
JSON
.
parse
(
item
.
value
),
null
,
2
);
}
}
if
(
item
.
key
.
endsWith
(
'Enabled'
)
||
item
.
key
.
endsWith
(
'enabled'
))
{
newInputs
[
item
.
key
]
=
item
.
value
===
'true'
?
true
:
false
;
...
...
@@ -60,6 +62,7 @@ const ModelSetting = () => {
// showSuccess('刷新成功');
}
catch
(
error
)
{
showError
(
'刷新失败'
);
console
.
error
(
error
);
}
finally
{
setLoading
(
false
);
}
...
...
web/src/pages/Setting/Model/SettingGeminiModel.js
View file @
e1fbf73a
...
...
@@ -27,40 +27,48 @@ export default function SettingGeminiModel(props) {
const
[
inputs
,
setInputs
]
=
useState
({
'gemini.safety_settings'
:
''
,
'gemini.version_settings'
:
''
,
'gemini.supported_imagine_models'
:
[]
,
'gemini.supported_imagine_models'
:
''
,
'gemini.thinking_adapter_enabled'
:
false
,
'gemini.thinking_adapter_budget_tokens_percentage'
:
0.6
,
});
const
refForm
=
useRef
();
const
[
inputsRow
,
setInputsRow
]
=
useState
(
inputs
);
function
onSubmit
()
{
const
updateArray
=
compareObjects
(
inputs
,
inputsRow
);
if
(
!
updateArray
.
length
)
return
showWarning
(
t
(
'你似乎并没有修改什么'
));
const
requestQueue
=
updateArray
.
map
((
item
)
=>
{
let
value
=
String
(
inputs
[
item
.
key
]);
return
API
.
put
(
'/api/option/'
,
{
key
:
item
.
key
,
value
,
});
});
setLoading
(
true
);
Promise
.
all
(
requestQueue
)
.
then
((
res
)
=>
{
if
(
requestQueue
.
length
===
1
)
{
if
(
res
.
includes
(
undefined
))
return
;
}
else
if
(
requestQueue
.
length
>
1
)
{
if
(
res
.
includes
(
undefined
))
return
showError
(
t
(
'部分保存失败,请重试'
));
}
showSuccess
(
t
(
'保存成功'
));
props
.
refresh
();
})
.
catch
(()
=>
{
showError
(
t
(
'保存失败,请重试'
));
async
function
onSubmit
()
{
await
refForm
.
current
.
validate
()
.
then
(()
=>
{
const
updateArray
=
compareObjects
(
inputs
,
inputsRow
);
if
(
!
updateArray
.
length
)
return
showWarning
(
t
(
'你似乎并没有修改什么'
));
const
requestQueue
=
updateArray
.
map
((
item
)
=>
{
let
value
=
String
(
inputs
[
item
.
key
]);
return
API
.
put
(
'/api/option/'
,
{
key
:
item
.
key
,
value
,
});
});
setLoading
(
true
);
Promise
.
all
(
requestQueue
)
.
then
((
res
)
=>
{
if
(
requestQueue
.
length
===
1
)
{
if
(
res
.
includes
(
undefined
))
return
;
}
else
if
(
requestQueue
.
length
>
1
)
{
if
(
res
.
includes
(
undefined
))
return
showError
(
t
(
'部分保存失败,请重试'
));
}
showSuccess
(
t
(
'保存成功'
));
props
.
refresh
();
})
.
catch
(()
=>
{
showError
(
t
(
'保存失败,请重试'
));
})
.
finally
(()
=>
{
setLoading
(
false
);
});
})
.
finally
(()
=>
{
setLoading
(
false
);
.
catch
((
error
)
=>
{
console
.
error
(
'Validation failed:'
,
error
);
showError
(
t
(
'请检查输入'
));
});
}
...
...
@@ -146,6 +154,14 @@ export default function SettingGeminiModel(props) {
label
=
{
t
(
'支持的图像模型'
)}
placeholder
=
{
t
(
'例如:'
)
+
'\n'
+
JSON
.
stringify
([
'gemini-2.0-flash-exp-image-generation'
],
null
,
2
)}
onChange
=
{(
value
)
=>
setInputs
({
...
inputs
,
'gemini.supported_imagine_models'
:
value
})}
trigger
=
'blur'
stopValidateWithError
rules
=
{[
{
validator
:
(
rule
,
value
)
=>
verifyJSON
(
value
),
message
:
t
(
'不是合法的 JSON 字符串'
),
},
]}
/
>
<
/Col
>
<
/Row
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment