diff --git a/web/src/view/desktop.rs b/web/src/view/desktop.rs index 0dcc9f4..3f1b824 100644 --- a/web/src/view/desktop.rs +++ b/web/src/view/desktop.rs @@ -5,10 +5,7 @@ use seed_hooks::{state_access::CloneState, topo, use_state}; use crate::{ api::urls, state::{Context, Model, Msg, Tag}, - view::{ - legacy::{view_search_results_legacy, view_thread_legacy}, - view_header, view_search_results, view_thread, - }, + view::{legacy, view_header, view_search_results, view_thread}, }; #[topo::nested] @@ -16,9 +13,9 @@ pub(super) fn view(model: &Model) -> Node { // Do two queries, one without `unread` so it loads fast, then a second with unread. let content = match &model.context { Context::None => div![h1!["Loading"]], - Context::Thread(thread_set) => view_thread_legacy(thread_set), + Context::Thread(thread_set) => legacy::thread(thread_set), Context::ThreadResult(thread) => view_thread(thread), - Context::Search(search_results) => view_search_results_legacy(&model.query, search_results), + Context::Search(search_results) => legacy::search_results(&model.query, search_results), Context::SearchResult { query, results, diff --git a/web/src/view/legacy.rs b/web/src/view/legacy.rs index 311772c..9d1dd95 100644 --- a/web/src/view/legacy.rs +++ b/web/src/view/legacy.rs @@ -9,10 +9,7 @@ use crate::{ view::{human_age, pretty_authors, set_title, tags_chiclet}, }; -pub(super) fn view_search_results_legacy( - query: &str, - search_results: &shared::SearchResult, -) -> Node { +pub(super) fn search_results(query: &str, search_results: &shared::SearchResult) -> Node { if query.is_empty() { set_title("all mail"); } else { @@ -45,7 +42,7 @@ pub(super) fn view_search_results_legacy( }); let first = search_results.page * search_results.results_per_page; div![ - view_search_pager_legacy(first, summaries.len(), search_results.total), + search_pager(first, summaries.len(), search_results.total), table![ C![ "table", @@ -62,11 +59,11 @@ pub(super) fn view_search_results_legacy( ]], tbody![rows] ], - view_search_pager_legacy(first, summaries.len(), search_results.total) + search_pager(first, summaries.len(), search_results.total) ] } -pub(super) fn view_search_pager_legacy(start: usize, count: usize, total: usize) -> Node { +fn search_pager(start: usize, count: usize, total: usize) -> Node { let is_first = start <= 0; let is_last = (start + SEARCH_RESULTS_PER_PAGE) >= total; nav![ @@ -90,7 +87,7 @@ pub(super) fn view_search_pager_legacy(start: usize, count: usize, total: usize) ] } -pub(super) fn view_thread_legacy(thread_set: &ThreadSet) -> Node { +pub(super) fn thread(thread_set: &ThreadSet) -> Node { assert_eq!(thread_set.0.len(), 1); let thread = &thread_set.0[0]; assert_eq!(thread.0.len(), 1); @@ -107,6 +104,56 @@ pub(super) fn view_thread_legacy(thread_set: &ThreadSet) -> Node { ], ] } +pub(super) fn mobile_search_results( + query: &str, + search_results: &shared::SearchResult, +) -> Node { + if query.is_empty() { + set_title("all mail"); + } else { + set_title(query); + } + let summaries = &search_results.summary.0; + let rows = summaries.iter().map(|r| { + /* + let tid = r.thread.clone(); + tr![ + td![ + C!["from"], + pretty_authors(&r.authors), + IF!(r.total>1 => small![" ", r.total.to_string()]), + ], + td![C!["subject"], tags_chiclet(&r.tags), " ", &r.subject], + td![C!["date"], &r.date_relative], + ev(Ev::Click, move |_| Msg::ShowPrettyRequest(tid)), + ] + */ + let tid = r.thread.clone(); + let datetime = human_age(r.timestamp as i64); + a![ + C!["has-text-light"], + attrs! { + At::Href => urls::thread(&tid) + }, + div![ + C!["row"], + div![C!["subject"], &r.subject], + span![C!["from", "is-size-7"], pretty_authors(&r.authors)], + div![ + span![C!["is-size-7"], tags_chiclet(&r.tags, true)], + span![C!["is-size-7", "float-right", "date"], datetime] + ] + ] + ] + }); + let first = search_results.page * search_results.results_per_page; + div![ + C!["search-results"], + search_pager(first, summaries.len(), search_results.total), + rows, + search_pager(first, summaries.len(), search_results.total) + ] +} fn view_message(thread: &ThreadNode) -> Node { let message = thread.0.as_ref().expect("ThreadNode missing Message"); let children = &thread.1; diff --git a/web/src/view/mobile.rs b/web/src/view/mobile.rs index 487f31e..7673088 100644 --- a/web/src/view/mobile.rs +++ b/web/src/view/mobile.rs @@ -5,19 +5,18 @@ use crate::{ graphql::front_page_query::*, state::{Context, Model, Msg}, view::{ - human_age, - legacy::{view_search_pager_legacy, view_thread_legacy}, - pretty_authors, set_title, tags_chiclet, view_header, view_search_pager, view_thread, + human_age, legacy, pretty_authors, set_title, tags_chiclet, view_header, view_search_pager, + view_thread, }, }; pub(super) fn view(model: &Model) -> Node { let content = match &model.context { Context::None => div![h1!["Loading"]], - Context::Thread(thread_set) => view_thread_legacy(thread_set), + Context::Thread(thread_set) => legacy::thread(thread_set), Context::ThreadResult(thread) => view_thread(thread), Context::Search(search_results) => { - view_mobile_search_results_legacy(&model.query, search_results) + legacy::mobile_search_results(&model.query, search_results) } Context::SearchResult { query, @@ -70,54 +69,3 @@ fn view_mobile_search_results( view_search_pager(count, pager), ] } - -fn view_mobile_search_results_legacy( - query: &str, - search_results: &shared::SearchResult, -) -> Node { - if query.is_empty() { - set_title("all mail"); - } else { - set_title(query); - } - let summaries = &search_results.summary.0; - let rows = summaries.iter().map(|r| { - /* - let tid = r.thread.clone(); - tr![ - td![ - C!["from"], - pretty_authors(&r.authors), - IF!(r.total>1 => small![" ", r.total.to_string()]), - ], - td![C!["subject"], tags_chiclet(&r.tags), " ", &r.subject], - td![C!["date"], &r.date_relative], - ev(Ev::Click, move |_| Msg::ShowPrettyRequest(tid)), - ] - */ - let tid = r.thread.clone(); - let datetime = human_age(r.timestamp as i64); - a![ - C!["has-text-light"], - attrs! { - At::Href => urls::thread(&tid) - }, - div![ - C!["row"], - div![C!["subject"], &r.subject], - span![C!["from", "is-size-7"], pretty_authors(&r.authors)], - div![ - span![C!["is-size-7"], tags_chiclet(&r.tags, true)], - span![C!["is-size-7", "float-right", "date"], datetime] - ] - ] - ] - }); - let first = search_results.page * search_results.results_per_page; - div![ - C!["search-results"], - view_search_pager_legacy(first, summaries.len(), search_results.total), - rows, - view_search_pager_legacy(first, summaries.len(), search_results.total) - ] -}