from __future__ import annotations

#from quart import Blueprint, g

from quart import (
    Blueprint,
    redirect,
    url_for,
)
from shared.browser.app.redis_cacher import clear_all_cache
from shared.browser.app.authz import require_admin
from shared.browser.app.utils.htmx import is_htmx_request
from shared.sx.helpers import sx_response
from shared.config import config
from datetime import datetime

def register(url_prefix):
    bp = Blueprint("settings", __name__, url_prefix = url_prefix)

    @bp.context_processor
    async def inject_root():
      return {
        "base_title": f"{config()['title']} settings",
      }

    @bp.post("/cache_clear/")
    @require_admin
    async def cache_clear():
        await clear_all_cache()
        if is_htmx_request():
            now = datetime.now()
            from shared.sx.jinja_bridge import render as render_comp
            html = render_comp("cache-cleared", time_str=now.strftime("%H:%M:%S"))
            return sx_response(html)

        return redirect(url_for("defpage_cache_page"))
    return bp


