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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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"] == []
|
||||
|
||||
Reference in New Issue
Block a user