# app/modules/messaging/routes/pages/storefront.py """ Messaging Storefront Page Routes (HTML rendering). Storefront (customer shop) pages for messaging: - Messages list - Conversation detail """ import logging from fastapi import APIRouter, Depends, Path, Request from fastapi.responses import HTMLResponse from sqlalchemy.orm import Session from app.api.deps import get_current_customer_from_cookie_or_header, get_db from app.modules.core.utils.page_context import get_storefront_context from app.modules.customers.models import Customer from app.templates_config import templates logger = logging.getLogger(__name__) router = APIRouter() # ============================================================================ # CUSTOMER ACCOUNT - MESSAGES (Authenticated) # ============================================================================ @router.get( "/account/messages", response_class=HTMLResponse, include_in_schema=False ) async def shop_messages_page( request: Request, current_customer: Customer = Depends(get_current_customer_from_cookie_or_header), db: Session = Depends(get_db), ): """ Render customer messages page. View and reply to conversations with the store. Requires customer authentication. """ logger.debug( "[STOREFRONT] shop_messages_page REACHED", extra={ "path": request.url.path, "store": getattr(request.state, "store", "NOT SET"), "context": getattr(request.state, "context_type", "NOT SET"), }, ) return templates.TemplateResponse( "messaging/storefront/messages.html", get_storefront_context(request, db=db, user=current_customer), ) @router.get( "/account/messages/{conversation_id}", response_class=HTMLResponse, include_in_schema=False, ) async def shop_message_detail_page( request: Request, conversation_id: int = Path(..., description="Conversation ID"), current_customer: Customer = Depends(get_current_customer_from_cookie_or_header), db: Session = Depends(get_db), ): """ Render message conversation detail page. Shows the full conversation thread. Requires customer authentication. """ logger.debug( "[STOREFRONT] shop_message_detail_page REACHED", extra={ "path": request.url.path, "conversation_id": conversation_id, "store": getattr(request.state, "store", "NOT SET"), "context": getattr(request.state, "context_type", "NOT SET"), }, ) return templates.TemplateResponse( "messaging/storefront/messages.html", get_storefront_context( request, db=db, user=current_customer, conversation_id=conversation_id ), )