diff --git a/json-api/src/badges.rs b/json-api/src/badges.rs index f892b9f..fbda798 100644 --- a/json-api/src/badges.rs +++ b/json-api/src/badges.rs @@ -20,7 +20,13 @@ pub async fn new(p: &Pool, response: &mut Response, params: HashMap { set_json_body(response, json!({"badge": json!(badge)})); - // TODO: add some rtc notification here + #[cfg(feature = "rtc")] + { + use crate::rtc; + if let Err(e) = rtc::notify("new-badge", badge).await { + eprintln!("[API-RTC] Unable to connect to RTC server {}", e); + } + } }, Err(e) => { eprintln!("[HTTP][ERROR] /badge/new {}", e); @@ -39,10 +45,14 @@ pub async fn update_perms(p: &Pool, response: &mut Response, params: HashM match db::badges::update_perms(p, id, perms).await { // TODO: add rtc update here Ok(true) => { + let payload = json!({ "id": id, "perms": perms}); + set_json_body(response, json!({"badge-update": payload})); #[cfg(feature = "rtc")] { - let payload = json!({ "id": id, "perms": perms}); - set_json_body(response, json!({"badge-update": payload})); + use crate::rtc; + if let Err(e) = rtc::notify("badge-update-perms", payload).await { + eprintln!("[API-RTC] Unable to connect to RTC server {}", e); + } } }, Ok(false) => { @@ -68,10 +78,14 @@ pub async fn update_color(p: &Pool, response: &mut Response, params: HashM // NOTE: this response iss more meant for rtc as the non-rtc mode // isn't supposed respond with anything in particular // TODO: rtc update here + let payload = json!({"id": id, "color": color}); + set_json_body(response, json!({"badge-update": payload})); #[cfg(feature = "rtc")] { - let payload = json!({"id": id, "color": color}); - set_json_body(response, json!({"badge-update": payload})); + use crate::rtc; + if let Err(e) = rtc::notify("update-badge", payload).await { + eprintln!("[API-RTC] Unable to connect to RTC server {}", e); + } } }, Ok(false) => { @@ -94,10 +108,14 @@ pub async fn update_name(p: &Pool, response: &mut Response, params: HashMa if let (Some(id), Some(name)) = (id, name) { match db::badges::update_name(p, id, &name).await { Ok(true) => { + let payload = json!({"id": id, "name": name}); + set_json_body(response, json!({"badge-update": payload})); #[cfg(feature = "rtc")] { - let payload = json!({"id": id, "name": name}); - set_json_body(response, json!({"badge-update": payload})); + use crate::rtc; + if let Err(e) = rtc::notify("update-badge", payload).await { + eprintln!("[API-RTC] Unable to connect to RTC server {}", e); + } } }, Ok(false) => { @@ -117,8 +135,14 @@ pub async fn update_name(p: &Pool, response: &mut Response, params: HashMa pub async fn delete(p: &Pool, response: &mut Response, params: HashMap) { if let Some(id) = qs_param!(params, "badge_id", u64) { match db::badges::delete(p, id).await { - Ok(_id) => { - // TODO: add rtc notification here + Ok(id) => { + #[cfg(feature = "rtc")] + { + use crate::rtc; + if let Err(e) = rtc::notify("delete-badge", json!({"id": id})).await { + eprintln!("[API-RTC] Unable to connect to RTC server {}", e); + } + } }, Err(e) => { eprintln!("[HTTP][ERROR] /badge/delete {}", e);