diff --git a/web/core/views_user_features.py b/web/core/views_user_features.py index 8dfd51d..6ddbf89 100644 --- a/web/core/views_user_features.py +++ b/web/core/views_user_features.py @@ -28,7 +28,34 @@ def api_set_font_size(request): @require_GET def api_get_prefs(request): prefs, _ = UserPrefs.objects.get_or_create(user=request.user) - return JsonResponse({"ok": True, "font_size": prefs.font_size}) + # [ADD] include search-hit highlighting flag (default True if field missing) + return JsonResponse({ + "ok": True, + "font_size": prefs.font_size, + "highlight_search_hits": getattr(prefs, "highlight_search_hits", True), + }) + + +# [ADD] ---------- Search-hit highlighting toggle ---------- +@login_required +@require_POST +def api_set_highlight_hits(request): + """ + Toggle per-user 'highlight search hits on entry_view' preference. + + Accepts form field: enabled=true/false or 1/0 + Returns: {"ok": True, "highlight_search_hits": } + """ + val = (request.POST.get("enabled") or "").strip().lower() + if val not in ("true", "false", "1", "0"): + return HttpResponseBadRequest("enabled must be true/false") + enabled = val in ("true", "1") + + prefs, _ = UserPrefs.objects.get_or_create(user=request.user) + prefs.highlight_search_hits = enabled + prefs.save(update_fields=["highlight_search_hits"]) + + return JsonResponse({"ok": True, "highlight_search_hits": prefs.highlight_search_hits}) # ---------- Search history ---------- @@ -134,4 +161,4 @@ def api_get_recent_views(request): ] resp = JsonResponse({"ok": True, "items": data}) resp["Cache-Control"] = "no-store" - return resp \ No newline at end of file + return resp