bitque/jirs-client/src/ws/mod.rs

41 lines
1.0 KiB
Rust
Raw Normal View History

2020-04-06 22:59:33 +02:00
use seed::prelude::*;
2020-04-06 08:38:08 +02:00
use jirs_data::WsMsg;
use crate::{model, Msg, APP};
2020-04-06 08:38:08 +02:00
pub mod issue;
2020-04-06 08:38:08 +02:00
pub fn handle(msg: WsMsg) {
let app = match unsafe { APP.as_mut().unwrap() }.write() {
Ok(app) => app,
_ => return,
};
match msg {
WsMsg::Ping | WsMsg::Pong => {}
_ => app.update(Msg::WsMsg(msg)),
}
}
2020-04-06 22:59:33 +02:00
pub fn update(msg: &Msg, model: &mut model::Model, orders: &mut impl Orders<Msg>) {
2020-04-06 08:38:08 +02:00
match msg {
Msg::WsMsg(WsMsg::ProjectLoaded(project)) => {
2020-04-06 22:59:33 +02:00
model.project = Some(project.clone());
}
Msg::WsMsg(WsMsg::AuthorizeLoaded(Ok(user))) => {
model.user = Some(user.clone());
}
Msg::WsMsg(WsMsg::ProjectIssuesLoaded(v)) => {
2020-04-09 08:56:12 +02:00
let mut v = v.clone();
v.sort_by(|a, b| (a.list_position as i64).cmp(&(b.list_position as i64)));
model.issues = v;
2020-04-06 22:59:33 +02:00
}
Msg::WsMsg(WsMsg::ProjectUsersLoaded(v)) => {
model.users = v.clone();
2020-04-06 08:38:08 +02:00
}
_ => (),
2020-04-06 22:59:33 +02:00
};
orders.render();
2020-04-06 08:38:08 +02:00
}