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);