From cc0469bf290d40bd35aded5d3deebe16006a26e1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 12:36:07 +0000 Subject: [PATCH 1/2] Update Rust crate megalodon to v1 --- src-tauri/Cargo.lock | 4 ++-- src-tauri/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 3fea28e9..2183be71 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2993,9 +2993,9 @@ dependencies = [ [[package]] name = "megalodon" -version = "0.15.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e612a42d4f5818e5cce5be6e121f9b4b009c8ebe23f57c42814231797c9a59" +checksum = "6053001f2fd3082f7c6007225fef9cf6c0bbea96d8fc82976fb0dcfda3bcbf30" dependencies = [ "async-trait", "chrono", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 23936cdb..a338bf80 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -22,7 +22,7 @@ sqlx = { version = "0.8.3", features = ["runtime-tokio-rustls", "sqlite", "migr tokio = { version = "1.42.0", features = ["full"] } futures = "0.3.31" directories = "6.0.0" -megalodon = "0.15.2" +megalodon = "1.0.0" tracing = "0.1.41" reqwest = { version = ">=0.12.12", features = ["json", "multipart", "stream"] } scraper = "0.22.0" From 8851a3305664424c2afaf033b7e8dec2a10f209c Mon Sep 17 00:00:00 2001 From: AkiraFukushima Date: Mon, 13 Jan 2025 22:19:36 +0900 Subject: [PATCH 2/2] Fix streaming listener method --- src-tauri/src/streaming.rs | 227 +++++++++++++++++++------------------ 1 file changed, 119 insertions(+), 108 deletions(-) diff --git a/src-tauri/src/streaming.rs b/src-tauri/src/streaming.rs index 77395b76..ffc82562 100644 --- a/src-tauri/src/streaming.rs +++ b/src-tauri/src/streaming.rs @@ -86,58 +86,63 @@ pub async fn start_user( let server_id = server.id; - let s = streaming.listen(Box::new(move |message| match message { - Message::Update(mes) => { - tracing::debug!("receive update"); - app_handle - .emit( - "receive-home-status", - ReceiveHomeStatusPayload { - server_id, - status: mes, - }, - ) - .expect("Failed to send receive-home-status event"); - } - Message::Notification(mes) => { - tracing::debug!("receive notification"); - if mes.account.is_some() { - app_handle - .emit( - "receive-notification", - ReceiveNotificationPayload { - server_id, - notification: mes, - }, - ) - .expect("Failed to send receive-notification event"); + let s = streaming.listen(Box::new(move |message| { + let app_handle = app_handle.clone(); + Box::pin(async move { + match message { + Message::Update(mes) => { + tracing::debug!("receive update"); + app_handle + .emit( + "receive-home-status", + ReceiveHomeStatusPayload { + server_id, + status: mes, + }, + ) + .expect("Failed to send receive-home-status event"); + } + Message::Notification(mes) => { + tracing::debug!("receive notification"); + if mes.account.is_some() { + app_handle + .emit( + "receive-notification", + ReceiveNotificationPayload { + server_id, + notification: mes, + }, + ) + .expect("Failed to send receive-notification event"); + } + } + Message::StatusUpdate(mes) => { + tracing::debug!("receive status updated"); + app_handle + .emit( + "receive-home-status-update", + ReceiveHomeStatusUpdatePayload { + server_id, + status: mes, + }, + ) + .expect("Failed to send receive-home-status-update event"); + } + Message::Delete(status_id) => { + tracing::debug!("receive delete"); + app_handle + .emit( + "delete-home-status", + DeleteHomeStatusPayload { + server_id, + status_id, + }, + ) + .expect("Failed to send delete-home-status event"); + } + _ => {} } - } - Message::StatusUpdate(mes) => { - tracing::debug!("receive status updated"); - app_handle - .emit( - "receive-home-status-update", - ReceiveHomeStatusUpdatePayload { - server_id, - status: mes, - }, - ) - .expect("Failed to send receive-home-status-update event"); - } - Message::Delete(status_id) => { - tracing::debug!("receive delete"); - app_handle - .emit( - "delete-home-status", - DeleteHomeStatusPayload { - server_id, - status_id, - }, - ) - .expect("Failed to send delete-home-status event"); - } - _ => {} + }) })); s.await; @@ -205,63 +210,69 @@ pub async fn start( let server_id = server.id; let name = timeline.name.clone(); - let s = streaming.listen(Box::new(move |message| match message { - Message::Update(mes) => { - tracing::debug!("receive update"); - app_handle - .emit( - "receive-timeline-status", - ReceiveTimelineStatusPayload { - server_id, - timeline_id, - name: name.clone(), - status: mes, - }, - ) - .expect("Failed to receive-timeline-status event"); - } - Message::StatusUpdate(mes) => { - tracing::debug!("receive status update"); - app_handle - .emit( - "receive-timeline-status-update", - ReceiveTimelineStatusUpdatePayload { - server_id, - timeline_id, - name: name.clone(), - status: mes, - }, - ) - .expect("Failed to receive-timeline-status-update event"); - } - Message::Delete(status_id) => { - tracing::debug!("receive delete"); - app_handle - .emit( - "delete-timeline-status", - DeleteTimelineStatusPayload { - server_id, - timeline_id, - name: name.clone(), - status_id, - }, - ) - .expect("Failed to delete-timeline-status event"); - } - Message::Conversation(conversation) => { - tracing::debug!("receive conversation"); - app_handle - .emit( - "receive-timeline-conversation", - ReceiveTimelineConversationPayload { - server_id, - timeline_id, - conversation, - }, - ) - .expect("Failed to receive-timeline-conversation event"); - } - _ => {} + let s = streaming.listen(Box::new(move |message| { + let app_handle = app_handle.clone(); + let name = name.clone(); + Box::pin(async move { + match message { + Message::Update(mes) => { + tracing::debug!("receive update"); + app_handle + .emit( + "receive-timeline-status", + ReceiveTimelineStatusPayload { + server_id, + timeline_id, + name: name.clone(), + status: mes, + }, + ) + .expect("Failed to receive-timeline-status event"); + } + Message::StatusUpdate(mes) => { + tracing::debug!("receive status update"); + app_handle + .emit( + "receive-timeline-status-update", + ReceiveTimelineStatusUpdatePayload { + server_id, + timeline_id, + name: name.clone(), + status: mes, + }, + ) + .expect("Failed to receive-timeline-status-update event"); + } + Message::Delete(status_id) => { + tracing::debug!("receive delete"); + app_handle + .emit( + "delete-timeline-status", + DeleteTimelineStatusPayload { + server_id, + timeline_id, + name: name.clone(), + status_id, + }, + ) + .expect("Failed to delete-timeline-status event"); + } + Message::Conversation(conversation) => { + tracing::debug!("receive conversation"); + app_handle + .emit( + "receive-timeline-conversation", + ReceiveTimelineConversationPayload { + server_id, + timeline_id, + conversation, + }, + ) + .expect("Failed to receive-timeline-conversation event"); + } + _ => {} + } + }) })); s.await;