mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-11-29 16:56:28 +00:00
Spawn a thread to send push notifications
This commit is contained in:
parent
5e3ffcbeda
commit
1567ae4241
@ -4,13 +4,13 @@
|
|||||||
|
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
|
|
||||||
|
use crate::data::conversation::ConvID;
|
||||||
use crate::data::error::{ExecError, Res};
|
use crate::data::error::{ExecError, Res};
|
||||||
use crate::data::user::UserID;
|
use crate::data::user::UserID;
|
||||||
use crate::data::conversation::ConvID;
|
|
||||||
|
|
||||||
pub type ConvMessageID = u64;
|
pub type ConvMessageID = u64;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct ConversationMessageFile {
|
pub struct ConversationMessageFile {
|
||||||
pub path: String,
|
pub path: String,
|
||||||
pub size: u64,
|
pub size: u64,
|
||||||
@ -19,19 +19,19 @@ pub struct ConversationMessageFile {
|
|||||||
pub r#type: String,
|
pub r#type: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct UserAddedAnotherUserToConversation {
|
pub struct UserAddedAnotherUserToConversation {
|
||||||
pub user_who_added: UserID,
|
pub user_who_added: UserID,
|
||||||
pub user_added: UserID,
|
pub user_added: UserID,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct UserRemovedAnotherUserToConversation {
|
pub struct UserRemovedAnotherUserToConversation {
|
||||||
pub user_who_removed: UserID,
|
pub user_who_removed: UserID,
|
||||||
pub user_removed: UserID,
|
pub user_removed: UserID,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug, Clone)]
|
||||||
pub enum ConversationServerMessageType {
|
pub enum ConversationServerMessageType {
|
||||||
UserCreatedConversation(UserID),
|
UserCreatedConversation(UserID),
|
||||||
UserAddedAnotherUserToConversation(UserAddedAnotherUserToConversation),
|
UserAddedAnotherUserToConversation(UserAddedAnotherUserToConversation),
|
||||||
@ -98,7 +98,7 @@ impl ConversationServerMessageType {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Information about a single conversation message
|
/// Information about a single conversation message
|
||||||
#[derive(Debug)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct ConversationMessage {
|
pub struct ConversationMessage {
|
||||||
pub id: ConvMessageID,
|
pub id: ConvMessageID,
|
||||||
pub time_sent: u64,
|
pub time_sent: u64,
|
||||||
|
@ -169,21 +169,26 @@ pub fn cancel_conversation_notification(conv_id: ConvID, users: Option<Vec<UserI
|
|||||||
|
|
||||||
/// Handle event. This method NEVER returns Err
|
/// Handle event. This method NEVER returns Err
|
||||||
pub fn handle_event(e: &Event) -> Res {
|
pub fn handle_event(e: &Event) -> Res {
|
||||||
if let Err(e) = handle_event_internal(e) {
|
|
||||||
eprintln!("Failed to create push notifications associated with event! {}", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn handle_event_internal(e: &Event) -> Res {
|
|
||||||
match e {
|
match e {
|
||||||
Event::NewConversationMessage(msg) => {
|
Event::NewConversationMessage(msg) => {
|
||||||
create_conversation_notification(msg)?;
|
let msg = (*msg).clone();
|
||||||
|
std::thread::spawn(move || {
|
||||||
|
if let Err(err) = create_conversation_notification(&msg) {
|
||||||
|
eprintln!("Failed to create push for conversation! {}", err);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Event::SeenLastConversationMessage(user_id, conv_id) => {
|
Event::SeenLastConversationMessage(user_id, conv_id) => {
|
||||||
cancel_conversation_notification(*conv_id, Some(vec![user_id.as_owned()]))?;
|
let user_id = user_id.as_owned();
|
||||||
|
let conv_id = *conv_id;
|
||||||
|
std::thread::spawn(move || {
|
||||||
|
if let Err(e) = cancel_conversation_notification(conv_id, Some(vec![user_id])) {
|
||||||
|
eprintln!("Failed to cancel push conversation! {}", e);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user