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();
|
seenIds = new Set();
|
||||||
dismissed = new Set();
|
dismissed = new Set();
|
||||||
history = [];
|
history = [];
|
||||||
|
serverHistory = [];
|
||||||
persistSession();
|
persistSession();
|
||||||
P.saveJSON(BRIEF_VIEW_KEY, null);
|
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;
|
showHistory = false;
|
||||||
select(selected, true);
|
select(selected, true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -563,6 +563,14 @@ def create_app() -> FastAPI:
|
|||||||
conn.commit()
|
conn.commit()
|
||||||
return {"ok": True}
|
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}")
|
@app.delete("/api/history/{article_id}")
|
||||||
def remove_history(article_id: int, request: Request) -> dict:
|
def remove_history(article_id: int, request: Request) -> dict:
|
||||||
with get_conn() as conn:
|
with get_conn() as conn:
|
||||||
|
|||||||
@@ -70,3 +70,6 @@ def test_history_and_import(client):
|
|||||||
# granular removal from history
|
# granular removal from history
|
||||||
tc.delete("/api/history/2")
|
tc.delete("/api/history/2")
|
||||||
assert {a["id"] for a in tc.get("/api/history").json()["items"]} == {1, 3}
|
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