fix timers
lint / ruff (push) Failing after 15s
tests / desktop (push) Successful in 21s
tests / web (push) Successful in 46s
docker / image (push) Failing after 1m31s
tests / android-core (push) Successful in 1m5s
tests / backend (push) Successful in 2m33s
android / apk (push) Successful in 4m34s
lint / ruff (push) Failing after 15s
tests / desktop (push) Successful in 21s
tests / web (push) Successful in 46s
docker / image (push) Failing after 1m31s
tests / android-core (push) Successful in 1m5s
tests / backend (push) Successful in 2m33s
android / apk (push) Successful in 4m34s
This commit is contained in:
30 files changed
+3331
-419
No files matched your search
@@ -63,11 +63,18 @@ def resume(session: DbSession, settings: Settings) -> dict:
|
||||
@router.post("/complete")
|
||||
def complete(body: CompleteTimerRequest, session: DbSession, settings: Settings) -> dict:
|
||||
try:
|
||||
finished, follow_on = pomodoro.complete(session, settings, auto_next=body.auto_next)
|
||||
finished, follow_on = pomodoro.complete(
|
||||
session,
|
||||
settings,
|
||||
auto_next=body.auto_next,
|
||||
expect_id=body.session_id,
|
||||
)
|
||||
except pomodoro.TimerError as exc:
|
||||
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
||||
|
||||
celebration = _maybe_celebrate(session, settings) if finished.is_work else None
|
||||
# `finished` is None when the named interval was no longer the running one:
|
||||
# nothing happened, so there is nothing to celebrate and nothing to announce.
|
||||
celebration = _maybe_celebrate(session, settings) if finished and finished.is_work else None
|
||||
state = pomodoro.state(session, settings)
|
||||
state["finished"] = pomodoro.session_dict(finished)
|
||||
state["auto_started"] = pomodoro.session_dict(follow_on)
|
||||
|
||||
@@ -29,6 +29,16 @@ class AttachTaskRequest(BaseModel):
|
||||
|
||||
class CompleteTimerRequest(BaseModel):
|
||||
auto_next: bool = True
|
||||
session_id: int | None = None
|
||||
"""Which interval the client believes it is finishing.
|
||||
|
||||
Every client ticks its own local countdown and calls `complete` when it
|
||||
reaches zero, so with two of them open (the phone and the desktop, say)
|
||||
both fire within the same second. Unconditionally, the second call lands
|
||||
on whatever `auto_next` has just started and ends *that* — which is why a
|
||||
break could vanish the instant it began. Sent along, a stale call is a
|
||||
no-op instead. Omitted, the old unconditional behaviour stands.
|
||||
"""
|
||||
|
||||
|
||||
class TaskCreateRequest(BaseModel):
|
||||
|
||||
Reference in new issue
Block a user