mirror of
https://github.com/ulyssa/iamb.git
synced 2024-09-11 03:45:33 +03:00
Only mute a notification if the application is focused and the room it relates to is open.
Application::focused state is now available in the store.
This commit is contained in:
parent
c6982c9737
commit
b56f905714
@ -1319,6 +1319,9 @@ pub struct ChatStore {
|
||||
|
||||
/// Whether to ring the terminal bell on the next redraw.
|
||||
pub ring_bell: bool,
|
||||
|
||||
/// Whether the application is currently focused
|
||||
pub focused: bool,
|
||||
}
|
||||
|
||||
impl ChatStore {
|
||||
@ -1341,6 +1344,7 @@ impl ChatStore {
|
||||
sync_info: Default::default(),
|
||||
draw_curr: None,
|
||||
ring_bell: false,
|
||||
focused: false,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -355,9 +355,13 @@ impl Application {
|
||||
// Do nothing for now.
|
||||
},
|
||||
Event::FocusGained => {
|
||||
let mut store = self.store.lock().await;
|
||||
store.application.focused = true;
|
||||
self.focused = true;
|
||||
},
|
||||
Event::FocusLost => {
|
||||
let mut store = self.store.lock().await;
|
||||
store.application.focused = false;
|
||||
self.focused = false;
|
||||
},
|
||||
Event::Resize(_, _) => {
|
||||
|
@ -44,7 +44,7 @@ pub async fn register_notifications(
|
||||
return;
|
||||
}
|
||||
|
||||
if is_open(&store, room.room_id()).await {
|
||||
if is_focused(&store).await && is_open(&store, room.room_id()).await {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -139,6 +139,11 @@ async fn is_open(store: &AsyncProgramStore, room_id: &RoomId) -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
async fn is_focused(store: &AsyncProgramStore) -> bool {
|
||||
let locked = store.lock().await;
|
||||
locked.application.focused
|
||||
}
|
||||
|
||||
pub async fn parse_notification(
|
||||
notification: Notification,
|
||||
room: MatrixRoom,
|
||||
|
Loading…
Reference in New Issue
Block a user