Fixes for message list pushed.

This commit is contained in:
Michael Woods
2025-12-24 20:42:43 -05:00
parent f59c9a36e3
commit c3edbb6d64
3 changed files with 21 additions and 47 deletions

View File

@@ -164,48 +164,21 @@ async def mark_message_retrieved(
@html_router.get("/messages", response_class=HTMLResponse) @html_router.get("/messages", response_class=HTMLResponse)
async def message_list_page( async def message_list_page(
request: Request, request: Request,
msg_type: str = Query("all", description="Filter: received, sent, or all"), type: str = Query("received", alias="msg_type"), # matches your filter links
limit: Optional[int] = Query(50, le=200), limit: Optional[int] = Query(50, le=100),
current_user: HttpUser = Depends(get_current_http_user) current_user: HttpUser = Depends(get_current_http_user)
): ):
# Reuse the existing API endpoint logic directly (duplicate minimal code for simplicity) from packetserver.http.server import templates
from packetserver.runners.http_server import get_db_connection # Directly call the existing API endpoint function
from ..server import templates api_resp = await get_messages(current_user=current_user, type=type, limit=limit, since=None)
messages = api_resp["messages"]
conn = get_db_connection()
root = conn.root()
mailbox = root.get("mailbox", [])
# Filter based on type
if msg_type == "received":
filtered = [m for m in mailbox if current_user.username.upper() in [t.upper() for t in m.to]]
elif msg_type == "sent":
filtered = [m for m in mailbox if m.from_call.upper() == current_user.username.upper()]
else: # all
filtered = mailbox
# Sort newest first
filtered.sort(key=lambda m: m.sent_at, reverse=True)
messages = []
for msg in filtered[:limit]:
messages.append({
"id": msg.msg_id,
"from": msg.from_call,
"to": ", ".join(msg.to),
"subject": msg.subject or "(no subject)",
"text_preview": msg.text[:100] + ("..." if len(msg.text) > 100 else ""),
"sent_at": msg.sent_at.isoformat() + "Z",
"retrieved": getattr(msg, "retrieved", False),
"has_attachments": bool(getattr(msg, "attachments", []))
})
return templates.TemplateResponse( return templates.TemplateResponse(
"message_list.html", "message_list.html",
{ {
"request": request, "request": request,
"messages": messages, "messages": messages,
"msg_type": msg_type, "msg_type": type,
"current_user": current_user.username "current_user": current_user.username
} }
) )

View File

@@ -48,5 +48,6 @@ app.include_router(dashboard.router)
app.include_router(bulletins.router) app.include_router(bulletins.router)
app.include_router(bulletins.html_router) app.include_router(bulletins.html_router)
app.include_router(message_detail_router) app.include_router(message_detail_router)
app.include_router(messages.html_router) app.include_router(html_router)

View File

@@ -15,13 +15,13 @@
<ul class="message-list"> <ul class="message-list">
{% for msg in messages %} {% for msg in messages %}
<li> <li>
<strong><a href="/dashboard/message/{{ msg.id }}">{{ msg.subject }}</a></strong> <strong><a href="/dashboard/message/{{ msg.id }}">{{ msg.text[:60] }}{% if msg.text|length > 60 %}...{% endif %}</a></strong>
<span class="meta">
From: {{ msg.from }} | To: {{ msg.to }} | {{ msg.sent_at[:10] }} {{ msg.sent_at[11:19] }}
{% if not msg.retrieved %}<span class="text-warning"> (Unread)</span>{% endif %}
{% if msg.has_attachments %}<span class="text-info"> (Attachments)</span>{% endif %} {% if msg.has_attachments %}<span class="text-info"> (Attachments)</span>{% endif %}
{% if not msg.retrieved %}<span class="text-warning"> (Unread)</span>{% endif %}
<span class="meta">
From: {{ msg.from }} | To: {{ msg.to | join(', ') }} | {{ msg.sent_at[:10] }} {{ msg.sent_at[11:19] }}
</span> </span>
<div class="preview">{{ msg.text_preview }}</div> <div class="preview">{{ msg.text[:200] }}{% if msg.text|length > 200 %}...{% endif %}</div>
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>