Fix: "Clear my history" now clears account history too

clearSession only reset the device-local history; for a signed-in user the panel
shows the account history (serverHistory), which was never cleared and never sent
to the server — so it looked like nothing happened. Add DELETE /api/history
(clear all) and have clearSession reset serverHistory + call it when signed in.
This commit is contained in:
jay
2026-06-04 01:09:43 +00:00
parent 762f121320
commit d1a4b24627
3 changed files with 14 additions and 0 deletions
+3
View File
@@ -124,8 +124,11 @@
seenIds = new Set();
dismissed = new Set();
history = [];
serverHistory = [];
persistSession();
P.saveJSON(BRIEF_VIEW_KEY, null);
// Signed in? Also clear the account (cross-device) history on the server.
if (auth.user) delJSON('/api/history').catch(() => {});
showHistory = false;
select(selected, true);
}
+8
View File
@@ -563,6 +563,14 @@ def create_app() -> FastAPI:
conn.commit()
return {"ok": True}
@app.delete("/api/history")
def clear_history(request: Request) -> dict:
with get_conn() as conn:
user = _require_user(conn, request)
conn.execute("DELETE FROM user_history WHERE user_id = ?", (user["id"],))
conn.commit()
return {"ok": True}
@app.delete("/api/history/{article_id}")
def remove_history(article_id: int, request: Request) -> dict:
with get_conn() as conn:
+3
View File
@@ -70,3 +70,6 @@ def test_history_and_import(client):
# granular removal from history
tc.delete("/api/history/2")
assert {a["id"] for a in tc.get("/api/history").json()["items"]} == {1, 3}
# clear ALL history
assert tc.delete("/api/history").json() == {"ok": True}
assert tc.get("/api/history").json()["items"] == []