From b9513b903c0734baff9f8d1f10e7bfdc66585623 Mon Sep 17 00:00:00 2001 From: candifloss Date: Mon, 16 Sep 2024 16:49:08 +0530 Subject: [PATCH] Notification Struct --- src/main.rs | 74 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 30 deletions(-) diff --git a/src/main.rs b/src/main.rs index 28bcfc4..f3cba58 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,32 +3,44 @@ use std::collections::HashMap; use zbus::{message::Body, Connection, Result}; use zvariant::OwnedValue; -fn print_notif(msg_body: Body) -> Result<()> { - // Deserialize the message body to the expected tuple - let (app_name, replace_id, icon, summary, body, actions, hints, expir_timeout): ( - String, - u32, - String, - String, - String, - Vec, - HashMap, - i32, - ) = msg_body.deserialize()?; - // Print the notification details - println!("App Name: {app_name}"); - println!("Replace ID: {replace_id}"); - println!("Icon: {icon}"); - println!("Summary: {summary}"); - println!("Body: {body}"); - println!("Actions: {actions:?}"); +struct Notification { + app_name: String, + replace_id: u32, + icon: String, + summary: String, + body: String, + actions: Vec, + hints: HashMap, + expir_timeout: i32, +} + +fn to_notif(msg_body: Body) -> Result { + let (app_name, replace_id, icon, summary, body, actions, hints, expir_timeout) = + msg_body.deserialize()?; + Ok(Notification { + app_name, + replace_id, + icon, + summary, + body, + actions, + hints, + expir_timeout, + }) +} + +fn print_notif(notif: Notification) { + println!("App Name: {0}", notif.app_name); + println!("Replace ID: {0}", notif.replace_id); + println!("Icon: {0}", notif.icon); + println!("Summary: {0}", notif.summary); + println!("Body: {0}", notif.body); + println!("Actions: {0:?}", notif.actions); println!("Hints:"); - for (key, value) in hints { + for (key, value) in notif.hints { println!(" {key}: {value:?}"); } - println!("Expiration Timeout: {expir_timeout} seconds\n"); - - Ok(()) + println!("Expiration Timeout: {0} seconds\n", notif.expir_timeout); } #[tokio::main] @@ -51,14 +63,16 @@ async fn main() -> Result<()> { println!("Request received: {member}\n\tName: SNot\n\tVendor: candifloss.cc\n\tVersion: 0.1.0\n\tSpec_version: 0.1.0"); } "Notify" => { - println!("Member is: {member}"); - // Handle notif + // Handle new received notif + println!("New notification:"); let msg_body = msg.body(); - // get the app_name, summary, body, etc. from the msg_body and print it - let _ = print_notif(msg_body); - // Done. Respond with a notification ID - let notification_id: u32 = 1; // This could be incremented or generated - connection.reply(&msg, ¬ification_id).await?; + // get the app_name, summary, body, etc. from the msg_body + let notif = to_notif(msg_body); + // Print the notif + let _ = print_notif(notif.expect("Failed to parse notification")); + // Done. Respond to the client with a notification ID + let notification_id: u32 = 1; // This could be incremented or generated. Do it l8r + connection.reply(&msg, ¬ification_id).await?; // The client will stop when it gets the response } _ => { println!("Unhandled method: {member}");