web: upgrade to seed-0.10.0

This commit is contained in:
Bill Thiede 2023-12-05 20:46:59 -08:00
parent f2347345b4
commit c31f9d581f
7 changed files with 98 additions and 74 deletions

105
Cargo.lock generated
View File

@ -477,17 +477,6 @@ dependencies = [
"time 0.1.45", "time 0.1.45",
] ]
[[package]]
name = "cookie"
version = "0.16.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb"
dependencies = [
"percent-encoding 2.3.1",
"time 0.3.30",
"version_check 0.9.4",
]
[[package]] [[package]]
name = "cookie" name = "cookie"
version = "0.18.0" version = "0.18.0"
@ -633,15 +622,6 @@ version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
[[package]]
name = "dbg"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4677188513e0e9d7adced5997cf9a1e7a3c996c994f90093325c5332c1a8b221"
dependencies = [
"version_check 0.1.5",
]
[[package]] [[package]]
name = "deranged" name = "deranged"
version = "0.3.10" version = "0.3.10"
@ -1092,6 +1072,27 @@ dependencies = [
"web-sys", "web-sys",
] ]
[[package]]
name = "gloo-net"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ac9e8288ae2c632fa9f8657ac70bfe38a1530f345282d7ba66a1f70b72b7dc4"
dependencies = [
"futures-channel",
"futures-core",
"futures-sink",
"gloo-utils 0.2.0",
"http",
"js-sys",
"pin-project",
"serde",
"serde_json",
"thiserror",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
]
[[package]] [[package]]
name = "gloo-timers" name = "gloo-timers"
version = "0.2.6" version = "0.2.6"
@ -1117,6 +1118,19 @@ dependencies = [
"web-sys", "web-sys",
] ]
[[package]]
name = "gloo-utils"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa"
dependencies = [
"js-sys",
"serde",
"serde_json",
"wasm-bindgen",
"web-sys",
]
[[package]] [[package]]
name = "graphql-introspection-query" name = "graphql-introspection-query"
version = "0.2.0" version = "0.2.0"
@ -1563,11 +1577,12 @@ dependencies = [
"chrono", "chrono",
"console_error_panic_hook", "console_error_panic_hook",
"console_log", "console_log",
"gloo-net",
"graphql_client", "graphql_client",
"itertools", "itertools",
"log 0.4.20", "log 0.4.20",
"notmuch", "notmuch",
"seed 0.9.2", "seed 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"seed_hooks", "seed_hooks",
"serde", "serde",
"serde_json", "serde_json",
@ -2112,6 +2127,26 @@ dependencies = [
"siphasher", "siphasher",
] ]
[[package]]
name = "pin-project"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
dependencies = [
"proc-macro2 1.0.70",
"quote 1.0.33",
"syn 2.0.39",
]
[[package]] [[package]]
name = "pin-project-lite" name = "pin-project-lite"
version = "0.2.13" version = "0.2.13"
@ -2614,24 +2649,21 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]] [[package]]
name = "seed" name = "seed"
version = "0.9.2" version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9352d75dd253803ce05722fe3acaafffc461d4faeaf0ebe0d8bf831059482e21" checksum = "9c0e296ea0569d20467e9a1df3cb6ed66ce3b791a7eaf1e1110ae231f75e2b46"
dependencies = [ dependencies = [
"console_error_panic_hook",
"cookie 0.16.2",
"dbg",
"enclose", "enclose",
"futures", "futures",
"getrandom", "getrandom",
"gloo-file", "gloo-file",
"gloo-timers", "gloo-timers",
"gloo-utils", "gloo-utils 0.1.7",
"indexmap 1.9.3", "indexmap 1.9.3",
"js-sys", "js-sys",
"rand", "rand",
"serde", "serde",
"serde_json", "serde-wasm-bindgen",
"uuid", "uuid",
"version_check 0.9.4", "version_check 0.9.4",
"wasm-bindgen", "wasm-bindgen",
@ -2649,7 +2681,7 @@ dependencies = [
"getrandom", "getrandom",
"gloo-file", "gloo-file",
"gloo-timers", "gloo-timers",
"gloo-utils", "gloo-utils 0.1.7",
"indexmap 1.9.3", "indexmap 1.9.3",
"js-sys", "js-sys",
"rand", "rand",
@ -2669,7 +2701,7 @@ dependencies = [
"derive_more", "derive_more",
"gloo-timers", "gloo-timers",
"lazy_static", "lazy_static",
"seed 0.10.0", "seed 0.10.0 (git+https://github.com/seed-rs/seed.git?branch=master)",
"wasm-bindgen", "wasm-bindgen",
"web-sys", "web-sys",
] ]
@ -2689,6 +2721,17 @@ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]]
name = "serde-wasm-bindgen"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e"
dependencies = [
"js-sys",
"serde",
"wasm-bindgen",
]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.193" version = "1.0.193"
@ -3535,8 +3578,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e"
dependencies = [ dependencies = [
"cfg-if 1.0.0", "cfg-if 1.0.0",
"serde",
"serde_json",
"wasm-bindgen-macro", "wasm-bindgen-macro",
] ]

View File

@ -18,7 +18,8 @@ wasm-bindgen-test = "0.3.33"
[dependencies] [dependencies]
console_error_panic_hook = "0.1.7" console_error_panic_hook = "0.1.7"
log = "0.4.17" log = "0.4.17"
seed = "0.9.2" seed = { version = "0.10.0", features = ["routing"] }
#seed = "0.9.2"
console_log = {git = "http://git-private.h.xinu.tv/wathiede/console_log.git"} console_log = {git = "http://git-private.h.xinu.tv/wathiede/console_log.git"}
serde = { version = "1.0.147", features = ["derive"] } serde = { version = "1.0.147", features = ["derive"] }
notmuch = {path = "../notmuch"} notmuch = {path = "../notmuch"}
@ -30,6 +31,7 @@ chrono = "0.4.31"
graphql_client = "0.13.0" graphql_client = "0.13.0"
thiserror = "1.0.50" thiserror = "1.0.50"
seed_hooks = { git = "https://github.com/seed-rs/styles_hooks", package = "seed_hooks", branch = "main" } seed_hooks = { git = "https://github.com/seed-rs/styles_hooks", package = "seed_hooks", branch = "main" }
gloo-net = { version = "0.4.0", features = ["json", "serde_json"] }
[package.metadata.wasm-pack.profile.release] [package.metadata.wasm-pack.profile.release]

View File

@ -1,6 +1,7 @@
use gloo_net::{http::Request, Error};
use log::info; use log::info;
use notmuch::ThreadSet; use notmuch::ThreadSet;
use seed::{prelude::*, Url}; use seed::Url;
const BASE_URL: &str = "/api"; const BASE_URL: &str = "/api";
pub fn refresh() -> String { pub fn refresh() -> String {
@ -35,34 +36,20 @@ pub async fn search_request(
query: &str, query: &str,
page: usize, page: usize,
results_per_page: usize, results_per_page: usize,
) -> fetch::Result<shared::SearchResult> { ) -> Result<shared::SearchResult, Error> {
Request::new(search(query, page, results_per_page)) Request::get(&search(query, page, results_per_page))
.method(Method::Get) .send()
.fetch()
.await? .await?
.check_status()?
.json() .json()
.await .await
} }
pub async fn refresh_request() -> fetch::Result<()> { pub async fn refresh_request() -> Result<(), Error> {
let t = Request::new(refresh()) let t = Request::get(&refresh()).send().await?.text().await?;
.method(Method::Get)
.fetch()
.await?
.check_status()?
.text()
.await?;
info!("refresh {t}"); info!("refresh {t}");
Ok(()) Ok(())
} }
pub async fn show_pretty_request(tid: &str) -> fetch::Result<ThreadSet> { pub async fn show_pretty_request(tid: &str) -> Result<ThreadSet, Error> {
Request::new(show_pretty(tid)) Request::get(&show_pretty(tid)).send().await?.json().await
.method(Method::Get)
.fetch()
.await?
.check_status()?
.json()
.await
} }

View File

@ -1,8 +1,5 @@
use gloo_net::{http::Request, Error};
use graphql_client::GraphQLQuery; use graphql_client::GraphQLQuery;
use seed::{
fetch,
fetch::{Header, Method, Request},
};
use serde::{de::DeserializeOwned, Serialize}; use serde::{de::DeserializeOwned, Serialize};
// The paths are relative to the directory where your `Cargo.toml` is located. // The paths are relative to the directory where your `Cargo.toml` is located.
@ -23,21 +20,18 @@ pub struct FrontPageQuery;
)] )]
pub struct ShowThreadQuery; pub struct ShowThreadQuery;
pub async fn send_graphql<Body, Resp>(body: Body) -> fetch::Result<graphql_client::Response<Resp>> pub async fn send_graphql<Body, Resp>(body: Body) -> Result<graphql_client::Response<Resp>, Error>
where where
Body: Serialize, Body: Serialize,
Resp: DeserializeOwned + 'static, Resp: DeserializeOwned + 'static,
{ {
use web_sys::RequestMode; use web_sys::RequestMode;
Request::new("/graphql/") Request::post("/graphql/")
.method(Method::Post)
.header(Header::content_type("application/json"))
.mode(RequestMode::Cors) .mode(RequestMode::Cors)
.json(&body)? .json(&body)?
.fetch() .send()
.await? .await?
.check_status()?
.json() .json()
.await .await
} }

View File

@ -4,7 +4,7 @@
#![allow(clippy::wildcard_imports)] #![allow(clippy::wildcard_imports)]
use log::Level; use log::Level;
use seed::prelude::*; use seed::{prelude::wasm_bindgen, App};
mod api; mod api;
mod consts; mod consts;

View File

@ -1,7 +1,7 @@
use graphql_client::GraphQLQuery; use graphql_client::GraphQLQuery;
use log::{debug, error, info}; use log::{debug, error, info};
use notmuch::ThreadSet; use notmuch::ThreadSet;
use seed::{prelude::*, *}; use seed::{app::subs, prelude::*, *};
use thiserror::Error; use thiserror::Error;
use crate::{ use crate::{
@ -321,7 +321,7 @@ pub enum UIError {
#[error("No error, this should never be presented to user")] #[error("No error, this should never be presented to user")]
NoError, NoError,
#[error("failed to fetch {0}: {1:?}")] #[error("failed to fetch {0}: {1:?}")]
FetchError(&'static str, FetchError), FetchError(&'static str, gloo_net::Error),
#[error("{0} error decoding: {1:?}")] #[error("{0} error decoding: {1:?}")]
FetchDecodeError(&'static str, Vec<graphql_client::Error>), FetchDecodeError(&'static str, Vec<graphql_client::Error>),
#[error("no data or errors for {0}")] #[error("no data or errors for {0}")]
@ -363,15 +363,15 @@ pub enum Msg {
OnResize, OnResize,
// Tell the server to update state // Tell the server to update state
RefreshStart, RefreshStart,
RefreshDone(Option<FetchError>), RefreshDone(Option<gloo_net::Error>),
SearchRequest { SearchRequest {
query: String, query: String,
page: usize, page: usize,
results_per_page: usize, results_per_page: usize,
}, },
SearchResult(fetch::Result<shared::SearchResult>), SearchResult(Result<shared::SearchResult, gloo_net::Error>),
ShowPrettyRequest(String), ShowPrettyRequest(String),
ShowPrettyResult(fetch::Result<ThreadSet>), ShowPrettyResult(Result<ThreadSet, gloo_net::Error>),
NextPage, NextPage,
PreviousPage, PreviousPage,
UpdateQuery(String), UpdateQuery(String),
@ -385,12 +385,12 @@ pub enum Msg {
last: Option<i64>, last: Option<i64>,
}, },
FrontPageResult( FrontPageResult(
fetch::Result<graphql_client::Response<graphql::front_page_query::ResponseData>>, Result<graphql_client::Response<graphql::front_page_query::ResponseData>, gloo_net::Error>,
), ),
ShowThreadRequest { ShowThreadRequest {
thread_id: String, thread_id: String,
}, },
ShowThreadResult( ShowThreadResult(
fetch::Result<graphql_client::Response<graphql::show_thread_query::ResponseData>>, Result<graphql_client::Response<graphql::show_thread_query::ResponseData>, gloo_net::Error>,
), ),
} }

View File

@ -5,7 +5,7 @@ use std::{
use chrono::{DateTime, Datelike, Duration, Local, Utc}; use chrono::{DateTime, Datelike, Duration, Local, Utc};
use itertools::Itertools; use itertools::Itertools;
use log::info; use log::{error, info};
use seed::{prelude::*, *}; use seed::{prelude::*, *};
use wasm_timer::Instant; use wasm_timer::Instant;