web: prototype websocket client

This commit is contained in:
2025-04-14 10:32:17 -07:00
parent b11f6b5149
commit 638d55a36c
4 changed files with 26 additions and 1 deletions

View File

@@ -11,6 +11,7 @@ mod consts;
mod graphql;
mod state;
mod view;
mod websocket;
fn main() {
// This provides better error messages in debug mode.

View File

@@ -11,6 +11,7 @@ use crate::{
consts::SEARCH_RESULTS_PER_PAGE,
graphql,
graphql::{front_page_query::*, send_graphql, show_thread_query::*},
websocket,
};
/// Used to fake the unread string while in development
@@ -38,7 +39,7 @@ pub fn init(url: Url, orders: &mut impl Orders<Msg>) -> Model {
if url.hash().is_none() {
orders.request_url(urls::search(unread_query(), 0));
} else {
orders.request_url(url);
orders.request_url(url.clone());
};
// TODO(wathiede): only do this while viewing the index? Or maybe add a new message that force
// 'notmuch new' on the server periodically?
@@ -60,6 +61,7 @@ pub fn init(url: Url, orders: &mut impl Orders<Msg>) -> Model {
},
catchup: None,
last_url: Url::current(),
websocket: websocket::init(url, &mut orders.proxy(Msg::WebSocket)),
}
}
@@ -659,6 +661,10 @@ pub fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders<Msg>) {
orders.send_msg(Msg::ScrollToTop);
model.catchup = None;
}
Msg::WebSocket(ws) => {
websocket::update(ws, &mut model.websocket, &mut orders.proxy(Msg::WebSocket))
}
}
}
@@ -691,6 +697,7 @@ pub struct Model {
pub versions: Version,
pub catchup: Option<Catchup>,
pub last_url: Url,
pub websocket: websocket::Model,
}
#[derive(Debug)]
@@ -822,4 +829,6 @@ pub enum Msg {
CatchupMarkAsRead,
CatchupNext,
CatchupExit,
WebSocket(websocket::Msg),
}