Skip to content

Commit ec064e7

Browse files
committed
Added hook response instead of hook request to hook handler
1 parent 979294b commit ec064e7

File tree

4 files changed

+29
-16
lines changed

4 files changed

+29
-16
lines changed

src/juno_module.rs

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ async fn on_data_listener(
260260
}
261261
Ok(Value::Null)
262262
}
263-
BaseMessage::TriggerHookRequest { .. } => {
263+
BaseMessage::TriggerHookResponse { .. } => {
264264
execute_hook_triggered(message, &registered_store, &hook_listeners).await
265265
}
266266
BaseMessage::Error { error, .. } => Err(Error::FromJuno(error)),
@@ -300,19 +300,24 @@ async fn execute_hook_triggered(
300300
registered_store: &Arc<RwLock<bool>>,
301301
hook_listeners: &ArcHookListenerList,
302302
) -> Result<Value> {
303-
if let BaseMessage::TriggerHookRequest { hook, .. } = message {
304-
if &hook == "juno.activated" {
305-
*registered_store.write().unwrap() = true;
306-
} else if &hook == "juno.deactivated" {
307-
*registered_store.write().unwrap() = false;
308-
} else {
309-
let hook_listeners = hook_listeners.lock().await;
310-
if !hook_listeners.contains_key(&hook) {
311-
todo!("Wtf do I do now? Need to propogate errors. How do I do that?");
312-
}
313-
for listener in &hook_listeners[&hook] {
314-
listener(Value::Null);
303+
if let BaseMessage::TriggerHookResponse { hook, .. } = message {
304+
if hook.is_some() {
305+
let hook = hook.unwrap();
306+
if hook == "juno.activated" {
307+
*registered_store.write().unwrap() = true;
308+
} else if &hook == "juno.deactivated" {
309+
*registered_store.write().unwrap() = false;
310+
} else {
311+
let hook_listeners = hook_listeners.lock().await;
312+
if !hook_listeners.contains_key(&hook) {
313+
todo!("Wtf do I do now? Need to propogate errors. How do I do that?");
314+
}
315+
for listener in &hook_listeners[&hook] {
316+
listener(Value::Null);
317+
}
315318
}
319+
} else {
320+
// This module triggered the hook.
316321
}
317322
} else {
318323
panic!("Cannot execute hook from a request that wasn't a TriggerHookRequest!");

src/models/messages.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ pub enum BaseMessage {
3333
},
3434
TriggerHookResponse {
3535
request_id: String,
36+
hook: Option<String>
3637
},
3738
DeclareFunctionRequest {
3839
request_id: String,

src/protocol/json_protocol.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,10 @@ pub fn encode(protocol: &BaseProtocol, req: BaseMessage) -> Buffer {
8282
request_keys::HOOK: hook,
8383
}),
8484

85-
BaseMessage::TriggerHookResponse { request_id } => json!({
85+
BaseMessage::TriggerHookResponse { request_id, hook } => json!({
8686
request_keys::REQUEST_ID: request_id,
8787
request_keys::TYPE: request_types::TRIGGER_HOOK_RESPONSE,
88+
request_keys::HOOK: hook
8889
}),
8990

9091
BaseMessage::DeclareFunctionRequest {
@@ -210,8 +211,12 @@ fn decode_internal(data: &[u8]) -> Option<BaseMessage> {
210211
Some(BaseMessage::TriggerHookRequest { request_id, hook })
211212
} else if r#type == 8 {
212213
let request_id = result[request_keys::REQUEST_ID].as_str()?.to_string();
214+
let hook = match result[request_keys::HOOK].as_str() {
215+
Some(string) => Some(string.to_string()),
216+
None => None
217+
};
213218

214-
Some(BaseMessage::TriggerHookResponse { request_id })
219+
Some(BaseMessage::TriggerHookResponse { request_id, hook })
215220
} else if r#type == 9 {
216221
let request_id = result[request_keys::REQUEST_ID].as_str()?.to_string();
217222
let function = result[request_keys::FUNCTION].as_str()?.to_string();

tests/models/messages.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ fn check_types_are_storing_values() {
3535
},
3636
BaseMessage::TriggerHookResponse {
3737
request_id: String::from("request_id"),
38+
hook: Some(String::from("hook")),
3839
},
3940
BaseMessage::DeclareFunctionRequest {
4041
request_id: String::from("request_id"),
@@ -93,8 +94,9 @@ fn check_types_are_storing_values() {
9394
assert_eq!(request_id, &String::from("request_id"));
9495
assert_eq!(hook, &String::from("hook"));
9596
}
96-
BaseMessage::TriggerHookResponse { request_id } => {
97+
BaseMessage::TriggerHookResponse { request_id, hook } => {
9798
assert_eq!(request_id, &String::from("request_id"));
99+
assert_eq!(hook, &Some(String::from("hook")));
98100
}
99101
BaseMessage::DeclareFunctionRequest {
100102
request_id,

0 commit comments

Comments
 (0)