改造实时事件缓存同步

This commit is contained in:
yml2213
2026-08-17 17:32:02 +08:00
parent be7c124d65
commit 2aa8769661
16 changed files with 837 additions and 351 deletions
@@ -19,7 +19,6 @@ import {
Modal,
Space,
Spin,
Switch,
Tabs,
Tag,
Tooltip,
@@ -57,22 +56,8 @@ export default function WorkerHallPage() {
const [leaderboardOpen, setLeaderboardOpen] = useState(false)
const [sharingQuantity, setSharingQuantity] = useState(1)
const [submittingSharing, setSubmittingSharing] = useState(false)
const [autoRefresh, setAutoRefresh] = useState(loadAutoRefreshPreference)
const loadMoreRef = useRef<HTMLDivElement | null>(null)
useEffect(() => {
if (!autoRefresh) return
const timer = window.setInterval(() => {
void refreshAll()
}, 5000)
return () => window.clearInterval(timer)
}, [autoRefresh])
function toggleAutoRefresh(enabled: boolean) {
setAutoRefresh(enabled)
localStorage.setItem(AUTO_REFRESH_STORAGE_KEY, enabled ? '1' : '0')
}
const ordersQuery = useInfiniteQuery({
queryKey: ['worker-hall-orders', keyword, categoryId],
initialPageParam: 1,
@@ -129,7 +114,6 @@ export default function WorkerHallPage() {
queryKey: ['worker-hall-leaderboard'],
queryFn: () => fetchWorkerHallLeaderboard(),
enabled: leaderboardOpen,
staleTime: 30_000,
retry: false,
})
@@ -299,10 +283,6 @@ export default function WorkerHallPage() {
onClick={() => setLeaderboardOpen(true)}
/>
</Tooltip>
<div className="worker-hall-mobile-autorefresh-switch">
<span className="worker-hall-mobile-autorefresh-text"></span>
<Switch size="small" checked={autoRefresh} onChange={toggleAutoRefresh} />
</div>
<Button
size="small"
shape="circle"
@@ -513,18 +493,6 @@ export default function WorkerHallPage() {
<Typography.Title level={3}></Typography.Title>
<div className="worker-hall-page-actions">
<div className="worker-hall-head-controls">
<Tooltip
title={
autoRefresh
? '已开启自动刷新,每 5 秒刷新一次'
: '开启后每 5 秒自动刷新订单列表'
}
>
<div className="worker-hall-autorefresh-box">
<span className="worker-hall-autorefresh-label"></span>
<Switch size="small" checked={autoRefresh} onChange={toggleAutoRefresh} />
</div>
</Tooltip>
<Button
icon={<ReloadOutlined />}
loading={
@@ -884,12 +852,6 @@ function getDisplayOrderNo(order: Pick<WorkOrder, 'platformOrderId'> | null | un
return String(order?.platformOrderId || '').trim() || '-'
}
const AUTO_REFRESH_STORAGE_KEY = 'worker-hall-auto-refresh'
function loadAutoRefreshPreference(): boolean {
return localStorage.getItem(AUTO_REFRESH_STORAGE_KEY) === '1'
}
function formatMoney(value: number | undefined) {
return `${((Number(value || 0) || 0) / 100).toFixed(2)}`
}