added ability to set media class of items
Build and Push Image / build-and-push (push) Successful in 5m4s
Build and Push Image / build-and-push (push) Successful in 5m4s
This commit is contained in:
@@ -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 }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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}" }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user