Explorar o código

Display metadata to end users

Mark Rousskov %!s(int64=5) %!d(string=hai) anos
pai
achega
f9832d25cc
Modificáronse 2 ficheiros con 10 adicións e 2 borrados
  1. 4 1
      src/db/notifications.rs
  2. 6 1
      src/notification_listing.rs

+ 4 - 1
src/db/notifications.rs

@@ -113,6 +113,7 @@ pub struct NotificationData {
     pub origin_text: String,
     pub short_description: Option<String>,
     pub time: DateTime<FixedOffset>,
+    pub metadata: Option<String>,
 }
 
 pub async fn move_indices(
@@ -262,7 +263,7 @@ pub async fn get_notifications(
     let notifications = db
         .query(
             "
-        select username, origin_url, origin_html, time, short_description, idx
+        select username, origin_url, origin_html, time, short_description, idx, metadata
         from notifications
         join users on notifications.user_id = users.user_id
         where username = $1
@@ -278,12 +279,14 @@ pub async fn get_notifications(
         let origin_text: String = notification.get(2);
         let time: DateTime<FixedOffset> = notification.get(3);
         let short_description: Option<String> = notification.get(4);
+        let metadata: Option<String> = notification.get(6);
 
         data.push(NotificationData {
             origin_url,
             origin_text,
             short_description,
             time,
+            metadata,
         });
     }
 

+ 6 - 1
src/notification_listing.rs

@@ -20,14 +20,19 @@ pub async fn render(db: &DbClient, user: &str) -> String {
 
     out.push_str("<ol>");
     for notification in notifications {
+        out.push_str("<li>");
         out.push_str(&format!(
-            "<li><a href='{}'>{}</a></li>",
+            "<a href='{}'>{}</a>",
             notification.origin_url,
             notification
                 .short_description
                 .as_ref()
                 .unwrap_or(&notification.origin_url),
         ));
+        if let Some(metadata) = &notification.metadata {
+            out.push_str(&format!("<ul><li>{}</li></ul>", metadata));
+        }
+        out.push_str("</li>");
     }
     out.push_str("</ol>");