feat(h5): add pull-to-refresh on user partner and shop pages
CI / verify (pull_request) Has been cancelled

Share PullToRefresh for partner/shop H5; enable Taro pull-down on mini-user lists.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-22 11:19:42 +08:00
parent 270cebc79a
commit ae7c63c08d
29 changed files with 443 additions and 121 deletions
+10 -5
View File
@@ -1,7 +1,8 @@
import { useEffect, useState } from 'react';
import { useCallback, useEffect, useState } from 'react';
import { useNavigate, Link } from 'react-router-dom';
import type { PartnerLeaderboardPeriod, PartnerLeaderboardResponse } from '@dukang/shared-types';
import PageHeader from '@dukang/shared-ui/PageHeader';
import PullToRefresh from '@dukang/shared-ui/PullToRefresh';
import { fetchPartnerLeaderboard } from '../lib/leaderboard';
import { usePartnerSession } from '../contexts/PartnerSessionContext';
import { isPrimaryAccount } from '../lib/partnerAccess';
@@ -33,10 +34,10 @@ export default function LeaderboardPage() {
const [loading, setLoading] = useState(true);
const [error, setError] = useState('');
useEffect(() => {
const loadLeaderboard = useCallback(() => {
setLoading(true);
setError('');
fetchPartnerLeaderboard(period)
return fetchPartnerLeaderboard(period)
.then(setData)
.catch((e) => {
setData(null);
@@ -45,8 +46,12 @@ export default function LeaderboardPage() {
.finally(() => setLoading(false));
}, [period]);
useEffect(() => {
void loadLeaderboard();
}, [loadLeaderboard]);
return (
<div className="page-no-tab">
<PullToRefresh onRefresh={loadLeaderboard} className="page-no-tab">
<PageHeader title="团队贡献榜" onBack={() => navigate('/')} />
<div className="partner-leaderboard-tabs">
@@ -124,6 +129,6 @@ export default function LeaderboardPage() {
<span className="material-symbols-outlined">add</span>
</Link>
)}
</div>
</PullToRefresh>
);
}