web: add archive buttons, and adjust when text on buttons is shown

This commit is contained in:
Bill Thiede 2025-01-28 09:34:36 -08:00
parent 66c299bc4c
commit 94be4ec572

View File

@ -91,7 +91,7 @@ pub fn view(model: &Model) -> Node<Msg> {
"flex-wrap-reverse", "flex-wrap-reverse",
"bg-black", "bg-black",
"text-white", "text-white",
"lg:flex-nowrap" "lg:flex-nowrap",
], ],
div![ div![
C!["w-full", "lg:w-48", "flex-none", "flex", "flex-col"], C!["w-full", "lg:w-48", "flex-none", "flex", "flex-col"],
@ -917,7 +917,7 @@ fn thread(
C![&tw_classes::BUTTON, "rounded-r-none"], C![&tw_classes::BUTTON, "rounded-r-none"],
attrs! {At::Title => "Mark as read"}, attrs! {At::Title => "Mark as read"},
span![i![C!["far", "fa-envelope-open"]]], span![i![C!["far", "fa-envelope-open"]]],
span![C!["pl-2", "hidden", "md:inline"], "Read"], span![C!["pl-2"], "Read"],
ev(Ev::Click, move |_| Msg::MultiMsg(vec![ ev(Ev::Click, move |_| Msg::MultiMsg(vec![
Msg::SetUnread(read_thread_id, false), Msg::SetUnread(read_thread_id, false),
Msg::GoToSearchResults Msg::GoToSearchResults
@ -927,7 +927,7 @@ fn thread(
C![&tw_classes::BUTTON, "rounded-l-none"], C![&tw_classes::BUTTON, "rounded-l-none"],
attrs! {At::Title => "Mark as unread"}, attrs! {At::Title => "Mark as unread"},
span![i![C!["far", "fa-envelope"]]], span![i![C!["far", "fa-envelope"]]],
span![C!["pl-2", "hidden", "md:inline"], "Unread"], span![C!["pl-2"], "Unread"],
ev(Ev::Click, move |_| Msg::MultiMsg(vec![ ev(Ev::Click, move |_| Msg::MultiMsg(vec![
Msg::SetUnread(unread_thread_id, true), Msg::SetUnread(unread_thread_id, true),
Msg::GoToSearchResults Msg::GoToSearchResults
@ -938,7 +938,7 @@ fn thread(
C![&tw_classes::BUTTON, "text-red-500"], C![&tw_classes::BUTTON, "text-red-500"],
attrs! {At::Title => "Spam"}, attrs! {At::Title => "Spam"},
span![i![C!["far", "fa-hand"]]], span![i![C!["far", "fa-hand"]]],
span![C!["pl-2", "hidden", "md:inline"], "Spam"], span![C!["pl-2"], "Spam"],
ev(Ev::Click, move |_| Msg::MultiMsg(vec![ ev(Ev::Click, move |_| Msg::MultiMsg(vec![
Msg::AddTag(spam_add_thread_id, "Spam".to_string()), Msg::AddTag(spam_add_thread_id, "Spam".to_string()),
Msg::SetUnread(spam_unread_thread_id, false), Msg::SetUnread(spam_unread_thread_id, false),
@ -1191,7 +1191,7 @@ fn news_post(post: &ShowThreadQueryThreadOnNewsPost, content_el: &ElRef<HtmlElem
C![&tw_classes::BUTTON, "rounded-r-none"], C![&tw_classes::BUTTON, "rounded-r-none"],
attrs! {At::Title => "Mark as read"}, attrs! {At::Title => "Mark as read"},
span![i![C!["far", "fa-envelope-open"]]], span![i![C!["far", "fa-envelope-open"]]],
span![C!["pl-2", "hidden", "md:inline"], "Read"], span![C!["pl-2"], "Read"],
ev(Ev::Click, move |_| Msg::MultiMsg(vec![ ev(Ev::Click, move |_| Msg::MultiMsg(vec![
Msg::SetUnread(read_thread_id, false), Msg::SetUnread(read_thread_id, false),
Msg::GoToSearchResults Msg::GoToSearchResults
@ -1201,7 +1201,7 @@ fn news_post(post: &ShowThreadQueryThreadOnNewsPost, content_el: &ElRef<HtmlElem
C![&tw_classes::BUTTON, "rounded-l-none"], C![&tw_classes::BUTTON, "rounded-l-none"],
attrs! {At::Title => "Mark as unread"}, attrs! {At::Title => "Mark as unread"},
span![i![C!["far", "fa-envelope"]]], span![i![C!["far", "fa-envelope"]]],
span![C!["pl-2", "hidden", "md:inline"], "Unread"], span![C!["pl-2"], "Unread"],
ev(Ev::Click, move |_| Msg::MultiMsg(vec![ ev(Ev::Click, move |_| Msg::MultiMsg(vec![
Msg::SetUnread(unread_thread_id, true), Msg::SetUnread(unread_thread_id, true),
Msg::GoToSearchResults Msg::GoToSearchResults
@ -1245,6 +1245,8 @@ fn render_news_post_header(post: &ShowThreadQueryThreadOnNewsPost) -> Node<Msg>
.map(|(idx, _)| idx) .map(|(idx, _)| idx)
.unwrap_or(url.len()); .unwrap_or(url.len());
let domain = &url[..idx]; let domain = &url[..idx];
let add_archive_url = format!("https://archive.is/?url={url}");
let view_archive_url = format!("https://archive.is/newest/{url}");
let favicon = div![ let favicon = div![
C![ C![
"w-16", "w-16",
@ -1267,17 +1269,36 @@ fn render_news_post_header(post: &ShowThreadQueryThreadOnNewsPost) -> Node<Msg>
div![ div![
C!["px-4", "mr-auto"], C!["px-4", "mr-auto"],
div![ div![
span![C!["font-semibold", "text-sm"], from], div![C!["font-semibold", "text-sm"], from],
div![ div![
C!["text-xs"], C!["flex", "gap-2", "pt-2", "text-sm"],
small![a![ a![
C![&tw_classes::BUTTON],
attrs! { attrs! {
At::Href => post.url, At::Href => post.url,
At::Target => "_blank", At::Target => "_blank",
}, },
"Source ", span![C!["hidden", "md:inline"], "Source "],
i![C!["fas", "fa-up-right-from-square"]], i![C!["fas", "fa-up-right-from-square"]],
]] ],
a![
C![&tw_classes::BUTTON],
attrs! {
At::Href => add_archive_url,
At::Target => "_blank",
},
span![C!["hidden", "md:inline"], "Archive "],
i![C!["fas", "fa-plus"]],
],
a![
C![&tw_classes::BUTTON],
attrs! {
At::Href => view_archive_url,
At::Target => "_blank",
},
span![C!["hidden", "md:inline"], "Archive "],
i![C!["fas", "fa-magnifying-glass"]],
]
] ]
] ]
], ],