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() {
)}
-
-
-
+
{/*