yggdrasil/src/pages/admin.rs
xfy 5afd8b597c Fix clippy warnings
- Remove unnecessary clone on Copy type (navigator)
- Allow dead_code for THEME_KEY constant

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 16:51:12 +08:00

83 lines
3.5 KiB
Rust

use dioxus::prelude::*;
#[cfg(target_arch = "wasm32")]
use wasm_bindgen::JsCast;
use crate::api::auth::{get_current_user, logout};
#[component]
pub fn AdminPage() -> Element {
let user_resource = use_resource(|| async move {
get_current_user().await.ok().and_then(|r| r.user)
});
let navigator = dioxus::router::navigator();
let user_data = user_resource.read().clone();
match user_data.as_ref() {
Some(Some(user)) => {
let username = user.username.clone();
rsx! {
div { class: "min-h-screen bg-gray-50 dark:bg-gray-900",
header { class: "bg-white dark:bg-gray-800 shadow",
div { class: "max-w-7xl mx-auto px-4 py-4 flex justify-between items-center",
h1 { class: "text-xl font-bold text-gray-900 dark:text-white",
"后台管理"
}
div { class: "flex items-center gap-4",
span { class: "text-gray-600 dark:text-gray-300",
"欢迎, {username}"
}
button {
class: "px-4 py-2 bg-red-600 hover:bg-red-700 text-white rounded-lg transition-colors",
onclick: move |_| {
let nav = navigator;
spawn(async move {
let _ = logout().await;
#[cfg(target_arch = "wasm32")]
{
let cookie = "session=; path=/; max-age=0";
if let Some(window) = web_sys::window() {
if let Some(document) = window.document() {
let _ = document.dyn_into::<web_sys::HtmlDocument>()
.map(|d| d.set_cookie(cookie));
}
}
}
let _ = nav.push("/login");
});
},
"登出"
}
}
}
}
main { class: "max-w-7xl mx-auto px-4 py-8",
p { class: "text-gray-600 dark:text-gray-300",
"后台管理界面开发中..."
}
}
}
}
}
Some(None) => {
use_effect(move || {
navigator.push("/login");
});
rsx! {
div { class: "min-h-screen flex items-center justify-center bg-gray-50 dark:bg-gray-900",
p { class: "text-gray-600 dark:text-gray-300", "正在跳转..." }
}
}
}
None => {
rsx! {
div { class: "min-h-screen flex items-center justify-center bg-gray-50 dark:bg-gray-900",
p { class: "text-gray-600 dark:text-gray-300", "加载中..." }
}
}
}
}
}