added ability to set media class of items
Build and Push Image / build-and-push (push) Successful in 5m4s

This commit is contained in:
2026-03-29 03:19:33 -04:00
parent b8d01b567c
commit b1ab165665
26 changed files with 739 additions and 234 deletions
+19 -1
View File
@@ -2,7 +2,8 @@ use crate::components::{MediaGrid, Pagination, Search};
use dioxus::prelude::*;
#[component]
pub fn Home() -> Element {
pub fn Home() -> Element
{
let query = use_signal(|| "".to_string());
let page = use_signal(|| 1 as i32);
let max_page = use_signal(|| 1 as i32);
@@ -16,3 +17,20 @@ pub fn Home() -> Element {
MediaGrid { query: query.cloned(), page: page.cloned(), max_page, total_items: item_count }
}
}
#[component]
pub fn HomePaged(page: i32, q: String) -> Element
{
let query = use_signal(|| q);
let page = use_signal(|| page);
let max_page = use_signal(|| 1 as i32);
let item_count = use_signal(|| 0 as i32);
rsx! {
div {
class: "stickyTop",
Search { query, page },
Pagination { page, max_page, item_count },
}
MediaGrid { query: query.cloned(), page: page.cloned(), max_page, total_items: item_count }
}
}
+48 -2
View File
@@ -1,8 +1,54 @@
use crate::HOST;
use crate::components::radio_group::{RadioGroup, RadioItem};
use crate::rpc::aoba::SetMediaClassRequest;
use crate::rpc::{
aoba::{Id, MediaModel},
get_rpc_client,
};
use dioxus::prelude::*;
#[component]
pub fn Media(id: String) -> Element {
pub fn Media(id: String) -> Element
{
let media_result = use_resource(use_reactive!(|(id)| async move {
let mut client = get_rpc_client();
let result = client.get_media(Id { value: id.clone() }).await;
if let Ok(item) = result
{
let res = item.into_inner();
return res.value;
}
else
{
return None;
}
}));
return match media_result.cloned().unwrap_or(None)
{
Some(media) =>
{
return rsx! {MediaPage{media: media}};
}
None => rsx! {"Not Found"},
};
}
#[component]
fn MediaPage(media: MediaModel) -> Element
{
let url = media.thumb_url;
let id = media.id.expect("Media has no id").value.clone();
let cur_class = match media.class
{
0 => "Standard",
1 => "NSFW",
2 => "Secret",
_ => "Unkown",
};
rsx! {
{id}
img { src: "{HOST}{url}", }
label { "Media Class: {cur_class}" }
}
}