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;