feat: add refresh button to various dashboard pages for improved data fetching

This commit is contained in:
2026-03-11 00:29:04 +08:00
parent 4d0c429d5f
commit a84393590e
5 changed files with 72 additions and 30 deletions

View File

@@ -17,7 +17,7 @@ import {
TextField,
useFilter,
} from "@heroui/react";
import { CreditCard, Pencil } from "@gravity-ui/icons";
import { CreditCard, Pencil, ArrowRotateRight } from "@gravity-ui/icons";
import { api, type IdTag, type UserRow } from "@/lib/api";
import { useSession } from "@/lib/auth-client";
@@ -140,6 +140,7 @@ export default function UsersPage() {
const [users, setUsers] = useState<UserRow[]>([]);
const [loading, setLoading] = useState(true);
const [refreshing, setRefreshing] = useState(false);
const [updating, setUpdating] = useState<string | null>(null);
const [createForm, setCreateForm] = useState<CreateForm>(emptyCreate);
@@ -168,6 +169,17 @@ export default function UsersPage() {
}
};
const handleRefresh = async () => {
setRefreshing(true);
try {
setUsers(await api.users.list());
} catch {
// ignore
} finally {
setRefreshing(false);
}
};
useEffect(() => {
load();
}, []);
@@ -296,7 +308,11 @@ export default function UsersPage() {
<h1 className="text-xl font-semibold text-foreground"></h1>
<p className="mt-0.5 text-sm text-muted"> {users.length} </p>
</div>
<Modal>
<div className="flex items-center gap-2">
<Button isIconOnly size="sm" variant="ghost" isDisabled={refreshing} onPress={handleRefresh} aria-label="刷新">
<ArrowRotateRight className={`size-4 ${refreshing ? "animate-spin" : ""}`} />
</Button>
<Modal>
<Button variant="secondary" onPress={() => setCreateForm(emptyCreate)}>
</Button>
@@ -386,6 +402,7 @@ export default function UsersPage() {
</Modal.Container>
</Modal.Backdrop>
</Modal>
</div>
</div>
<Table>