use std::sync::Arc;
use serde::Deserialize;
use trusty_common::uds::server::RpcRouter;
use crate::daemon::managed_routes::proxy;
use crate::daemon::state::DaemonState;
#[derive(Debug, Deserialize)]
pub struct ConversationKeyParams {
pub conversation_key: String,
}
pub fn register(router: RpcRouter, state: &Arc<DaemonState>) -> RpcRouter {
let focus_state = Arc::clone(state);
let get_focus_state = Arc::clone(state);
let unfocus_state = Arc::clone(state);
let message_state = Arc::clone(state);
let summary_state = Arc::clone(state);
router
.typed("mpm.proxy.focus", move |req: proxy::ProxyFocusRequest| {
let state = Arc::clone(&focus_state);
async move { proxy::focus_core(&state, req).await.into_rpc() }
})
.typed("mpm.proxy.get_focus", move |req: ConversationKeyParams| {
let state = Arc::clone(&get_focus_state);
async move {
proxy::get_focus_core(&state, &req.conversation_key)
.await
.into_rpc()
}
})
.typed(
"mpm.proxy.unfocus",
move |req: proxy::ProxyUnfocusRequest| {
let state = Arc::clone(&unfocus_state);
async move { proxy::unfocus_core(&state, req).await.into_rpc() }
},
)
.typed(
"mpm.proxy.message",
move |req: proxy::ProxyMessageRequest| {
let state = Arc::clone(&message_state);
async move { proxy::message_core(&state, req).await.into_rpc() }
},
)
.typed("mpm.proxy.summary", move |req: ConversationKeyParams| {
let state = Arc::clone(&summary_state);
async move {
proxy::summary_core(&state, &req.conversation_key)
.await
.into_rpc()
}
})
}