From 67ca3ce81da153398a0c6b99e7aa83a9390a6cbd Mon Sep 17 00:00:00 2001
From: hzm <934585316@qq.com>
Date: Fri, 27 Feb 2026 21:01:09 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E9=A6=96=E9=A1=B5?=
=?UTF-8?q?=E6=80=A7=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/components/RefreshButton.jsx | 40 ++++++++++++++++++++++++++++++++
app/page.jsx | 39 +++++++------------------------
2 files changed, 49 insertions(+), 30 deletions(-)
create mode 100644 app/components/RefreshButton.jsx
diff --git a/app/components/RefreshButton.jsx b/app/components/RefreshButton.jsx
new file mode 100644
index 0000000..c21761a
--- /dev/null
+++ b/app/components/RefreshButton.jsx
@@ -0,0 +1,40 @@
+'use client';
+
+import { useEffect, useState } from "react";
+import { RefreshIcon } from './Icons';
+
+export default function RefreshButton({ refreshCycleStartRef, refreshMs, manualRefresh, refreshing, fundsLength }) {
+
+ // 刷新周期进度 0~1,用于环形进度条
+ const [refreshProgress, setRefreshProgress] = useState(0);
+
+ // 刷新进度条:每 100ms 更新一次进度
+ useEffect(() => {
+ if (fundsLength === 0 || refreshMs <= 0) return;
+ const t = setInterval(() => {
+ const elapsed = Date.now() - refreshCycleStartRef.current;
+ const p = Math.min(1, elapsed / refreshMs);
+ setRefreshProgress(p);
+ }, 100);
+ return () => clearInterval(t);
+ }, [fundsLength, refreshMs]);
+
+ return (
+
+
+
+ );
+}
diff --git a/app/page.jsx b/app/page.jsx
index 9b39c23..2022c1f 100644
--- a/app/page.jsx
+++ b/app/page.jsx
@@ -36,6 +36,7 @@ import TradeModal from "./components/TradeModal";
import TransactionHistoryModal from "./components/TransactionHistoryModal";
import AddHistoryModal from "./components/AddHistoryModal";
import UpdatePromptModal from "./components/UpdatePromptModal";
+import RefreshButton from "./components/RefreshButton";
import WeChatModal from "./components/WeChatModal";
import DcaModal from "./components/DcaModal";
import githubImg from "./assets/github.svg";
@@ -311,8 +312,6 @@ export default function HomePage() {
// 全局刷新状态
const [refreshing, setRefreshing] = useState(false);
- // 刷新周期进度 0~1,用于环形进度条
- const [refreshProgress, setRefreshProgress] = useState(0);
// 收起/展开状态
const [collapsedCodes, setCollapsedCodes] = useState(new Set());
@@ -2134,17 +2133,6 @@ export default function HomePage() {
};
}, [funds, refreshMs]);
- // 刷新进度条:每 100ms 更新一次进度
- useEffect(() => {
- if (funds.length === 0 || refreshMs <= 0) return;
- const t = setInterval(() => {
- const elapsed = Date.now() - refreshCycleStartRef.current;
- const p = Math.min(1, elapsed / refreshMs);
- setRefreshProgress(p);
- }, 100);
- return () => clearInterval(t);
- }, [funds.length, refreshMs]);
-
const performSearch = async (val) => {
if (!val.trim()) {
setSearchResults([]);
@@ -3447,22 +3435,13 @@ export default function HomePage() {
)}
-
-
-
+
{/*