diff --git a/src/main.rs b/src/main.rs index d622e72..109be08 100644 --- a/src/main.rs +++ b/src/main.rs @@ -400,9 +400,14 @@ impl WebSocketService { .unwrap() .get_event_by_offset(new_event_offset)? { + let event_flags = nostr::event_flags(&event, &self.user); + let authorized_user = nostr::authorized_user(&self.user).await; + 'subs: for (subid, filters) in self.subscriptions.iter() { for filter in filters.iter() { - if filter.as_filter()?.event_matches(&event)? { + if filter.as_filter()?.event_matches(&event)? + && nostr::screen_outgoing_event(&event, &event_flags, authorized_user) + { let message = NostrReply::Event(subid, event.clone()); self.websocket .send(Message::text(message.as_json())) diff --git a/src/nostr.rs b/src/nostr.rs index fb53bf7..6c4029b 100644 --- a/src/nostr.rs +++ b/src/nostr.rs @@ -109,7 +109,7 @@ impl WebSocketService { for filter in filters.iter() { let screen = |event: &Event| { let event_flags = event_flags(event, &user); - screen_outgoing_event(event, event_flags, authorized_user) + screen_outgoing_event(event, &event_flags, authorized_user) }; let filter_events = GLOBALS .store @@ -402,9 +402,9 @@ async fn screen_incoming_event( Ok(false) } -fn screen_outgoing_event( +pub fn screen_outgoing_event( event: &Event<'_>, - event_flags: EventFlags, + event_flags: &EventFlags, authorized_user: bool, ) -> bool { // Allow Relay Lists @@ -437,7 +437,7 @@ fn screen_outgoing_event( false } -async fn authorized_user(user: &Option) -> bool { +pub async fn authorized_user(user: &Option) -> bool { match user { None => false, Some(pk) => GLOBALS.config.get().unwrap().user_keys.contains(pk), @@ -451,7 +451,7 @@ pub struct EventFlags { pub tags_current_user: bool, } -fn event_flags(event: &Event<'_>, user: &Option) -> EventFlags { +pub fn event_flags(event: &Event<'_>, user: &Option) -> EventFlags { let author_is_an_authorized_user = GLOBALS .config .get()