refactor: 优化代码格式和OAuth请求处理

- 统一组件参数格式和换行风格
- 将OAuth请求参数从数组改为JSON格式
- 更新OAuth相关API的域名
This commit is contained in:
Yukino_fox
2026-04-11 13:35:46 +08:00
parent d428da200f
commit 498af7a09c
5 changed files with 33 additions and 24 deletions
+14 -14
View File
@@ -369,19 +369,19 @@ pub async fn oauth_exchange_code(
let state_guard = state.read();
let client = &state_guard.http_client;
let params = [
("grant_type", "authorization_code"),
("code", &code),
("client_id", &platform_id),
("client_secret", &platform_secret),
("redirect_uri", &callback_url),
];
let payload = serde_json::json!({
"grant_type": "authorization_code",
"code": &code,
"client_id": &platform_id,
"client_secret": &platform_secret,
"redirect_uri": &callback_url,
});
println!("[OAuth] 请求参数:{:?}", params);
println!("[OAuth] 请求参数:{:?}", payload);
let response = client
.post("https://sectl.top/api/oauth/token")
.form(&params)
.post("https://appwrite.sectl.top/api/oauth/token")
.json(&payload)
.send()
.await
.map_err(|e| format!("Request failed: {}", e))?;
@@ -426,7 +426,7 @@ pub async fn oauth_revoke_token(
}
let response = client
.post("https://sectl.top/api/oauth/revoke")
.post("https://appwrite.sectl.top/api/oauth/revoke")
.json(&payload)
.send()
.await
@@ -454,7 +454,7 @@ pub async fn oauth_introspect_token(
let client = &state_guard.http_client;
let response = client
.post("https://sectl.top/api/oauth/introspect")
.post("https://appwrite.sectl.top/api/oauth/introspect")
.json(&serde_json::json!({
"token": token,
"client_id": platform_id,
@@ -489,7 +489,7 @@ pub async fn oauth_get_user_info(
let client = &state_guard.http_client;
let response = client
.get("https://sectl.top/api/oauth/userinfo")
.get("https://appwrite.sectl.top/api/oauth/userinfo")
.header("Authorization", format!("Bearer {}", access_token))
.send()
.await
@@ -522,7 +522,7 @@ pub async fn oauth_refresh_token(
let client = &state_guard.http_client;
let response = client
.post("https://sectl.top/api/oauth/token")
.post("https://appwrite.sectl.top/api/oauth/token")
.json(&serde_json::json!({
"grant_type": "refresh_token",
"refresh_token": refresh_token,
+5 -1
View File
@@ -549,7 +549,11 @@ export const normalizeActionDrafts = (drafts: ActionDraft[] | null | undefined):
export const actionsToDrafts = (actions: AutoScoreAction[]): ActionDraft[] => {
const mapped = actions
.map((action) => {
if (action.event !== "add_score" && action.event !== "add_tag" && action.event !== "settle_score") {
if (
action.event !== "add_score" &&
action.event !== "add_tag" &&
action.event !== "settle_score"
) {
return null
}
return {
@@ -27,11 +27,7 @@ const buildNextIntervalValue = (
const getDisplayValue = (value: number | undefined, fallback = 0) =>
typeof value === "number" && Number.isFinite(value) ? value : fallback
export const IntervalValueWidget: React.FC<WidgetProps> = ({
value,
setValue,
readonly,
}) => {
export const IntervalValueWidget: React.FC<WidgetProps> = ({ value, setValue, readonly }) => {
const { t } = useTranslation()
const parsedValue = parseIntervalTriggerValue(value)
+10 -3
View File
@@ -441,7 +441,7 @@ function AutoScoreManager({ canEdit }: AutoScoreManagerProps): React.JSX.Element
} finally {
setRollingBackBatchId(null)
}
}
},
})
}
@@ -620,7 +620,11 @@ function AutoScoreManager({ canEdit }: AutoScoreManagerProps): React.JSX.Element
name="name"
rules={[{ required: true, message: t("autoScore.nameRequired") }]}
>
<Input placeholder={t("autoScore.namePlaceholder")} disabled={!canEdit} autoComplete="off"/>
<Input
placeholder={t("autoScore.namePlaceholder")}
disabled={!canEdit}
autoComplete="off"
/>
</Form.Item>
<Form.Item label={t("autoScore.applicableStudents")} name="studentNames">
<Select
@@ -637,7 +641,10 @@ function AutoScoreManager({ canEdit }: AutoScoreManagerProps): React.JSX.Element
</div>
<div style={{ display: "grid", gridTemplateColumns: "repeat(4, 1fr)", gap: "12px" }}>
<Form.Item label={t("autoScore.cooldownMinutes")} name={["execution", "cooldownMinutes"]}>
<Form.Item
label={t("autoScore.cooldownMinutes")}
name={["execution", "cooldownMinutes"]}
>
<InputNumber min={1} style={{ width: "100%" }} disabled={!canEdit} />
</Form.Item>
<Form.Item label={t("autoScore.maxRunsPerDay")} name={["execution", "maxRunsPerDay"]}>
+3 -1
View File
@@ -293,7 +293,9 @@ export const ScoreManager: React.FC<{ canEdit: boolean }> = ({ canEdit }) => {
mode="multiple"
showSearch
placeholder={t("score.pleaseSelectStudent")}
filterOption={(input, option) => matchStudentName(getOptionLabel(option), input)}
filterOption={(input, option) =>
matchStudentName(getOptionLabel(option), input)
}
options={students.map((s) => ({ label: s.name, value: s.name }))}
/>
</Form.Item>