feat(garmin): 绑定表单也能强制重试了,之前只有同步页有

用户想现在就试绑定,账号却处在昨天真实撞上的 SSO 冷却期里。发现「强制
重试」按钮只接在同步流程上——绑定表单命中同一个 429 时,除了看提示、等
到冷却过期,没有别的路。

- error/blocked 这两个状态本来就是绑定表单和同步区共用的,但重试按钮硬编码
  只会调 syncHistory(true)。加一个 retryAction 记住是哪个流程触发的失败,
  按钮据此调对应的重试
- startLogin 加 force 参数透传给后端已有的 /garmin/login force 支持;密码
  只在请求真正成功后才清空,所以失败重试不需要用户重新输入
- 强制重试仍然只在真正拿到 429 之后才出现,不是默认可点的选项——窗口内
  重试会延长冷却,这个闸门就是为了防这个

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
ericwyuan
2026-09-13 07:31:43 +08:00
parent db7f182030
commit e911a7c1f0
2 changed files with 24 additions and 5 deletions

View File

@@ -658,10 +658,13 @@ class ApiClient {
* Start an interactive Garmin login. Returns a session id; the login runs
* in the background and parks if Garmin asks for a two-factor code.
*/
async startGarminLogin(garminPassword: string, garminEmail?: string) {
async startGarminLogin(
garminPassword: string, garminEmail?: string, force?: boolean
) {
const { data } = await this.client.post<{ session: string }>('/garmin/login', {
garminPassword,
...(garminEmail ? { garminEmail } : {}),
...(force ? { force: true } : {}),
});
return data.session;
}