完成用户等级权限设置、修复下载次数不增加
Change-Id: Ia8ab0e643c86e236a5c25ac77b081cd1f3ba5976
diff --git a/src/pages/SeedList/Recommend/Recommend.jsx b/src/pages/SeedList/Recommend/Recommend.jsx
index f58c73d..2229bb1 100644
--- a/src/pages/SeedList/Recommend/Recommend.jsx
+++ b/src/pages/SeedList/Recommend/Recommend.jsx
@@ -7,6 +7,7 @@
import CreatePlaylistModal from './CreatePlaylistModal';
import { confirmAlert } from 'react-confirm-alert';
import 'react-confirm-alert/src/react-confirm-alert.css';
+import AuthButton from '../../../components/AuthButton';
const Recommend = () => {
const { user } = useUser();
@@ -160,15 +161,18 @@
/>
<div className="paid-title">{list.title}</div>
- {user && user.role === 'admin' ? (
- <div className="admin-actions">
- <button onClick={() => handleDelete(list.id)}>删除</button>
- </div>
- ) : list.isPaid ? (
- <button onClick={() => navigate(`/playlist/${list.id}`)}>详情</button>
- ) : (
- <button onClick={() => handlePurchase(list.id)}>购买</button>
- )}
+ {user && user.role === 'admin' ? (
+ <div className="admin-actions">
+ <button onClick={() => handleDelete(list.id)}>删除</button>
+ </div>
+ ) : list.isPaid ? (
+ <button onClick={() => navigate(`/playlist/${list.id}`)}>详情</button>
+ ) : (
+ <AuthButton roles={['chocolate', 'ice-cream']} onClick={() => handlePurchase(list.id)}>
+ 购买
+ </AuthButton>
+ )}
+
</div>
))}
</div>
diff --git a/src/pages/SeedList/SeedDetail/SeedDetail.jsx b/src/pages/SeedList/SeedDetail/SeedDetail.jsx
index 4ab9274..705368a 100644
--- a/src/pages/SeedList/SeedDetail/SeedDetail.jsx
+++ b/src/pages/SeedList/SeedDetail/SeedDetail.jsx
@@ -5,6 +5,7 @@
import './SeedDetail.css';
import { useUser } from '../../../context/UserContext';
import SeedRating from './SeedRating';
+import AuthButton from '../../../components/AuthButton';
const SeedDetail = () => {
const params = useParams();
@@ -213,12 +214,16 @@
</div>
<div className="action-buttons">
- <button className="btn" onClick={() => handleDownload(seed.id)}>下载</button>
- <button className="btn-outline" onClick={handleCollect}>收藏</button>
- {/* <button className="btn" onClick={handleCollect}>收藏</button> */}
+ <AuthButton roles={["cookie", "chocolate", "ice-cream"]} onClick={() => handleDownload(seed.id)}>
+ 下载
+ </AuthButton>
+ <AuthButton roles={["cookie", "chocolate", "ice-cream"]} onClick={handleCollect}>
+ 收藏
+ </AuthButton>
<SeedRating seedId={seed.id} />
</div>
+
<hr className="divider" />
<h3>评论区</h3>
<div className="comments-section">
diff --git a/src/pages/SeedList/SeedDetail/SeedRating.css b/src/pages/SeedList/SeedDetail/SeedRating.css
index e40c055..f62131c 100644
--- a/src/pages/SeedList/SeedDetail/SeedRating.css
+++ b/src/pages/SeedList/SeedDetail/SeedRating.css
@@ -20,4 +20,8 @@
margin-left: 10px;
font-size: 14px;
color: rgba(222, 91, 111, 0.982);
+}
+.star.hover {
+ color: rgba(240, 184, 62, 0.916); /* 亮黄色 */
}
+
diff --git a/src/pages/SeedList/SeedDetail/SeedRating.jsx b/src/pages/SeedList/SeedDetail/SeedRating.jsx
index 1841443..8e2d3f0 100644
--- a/src/pages/SeedList/SeedDetail/SeedRating.jsx
+++ b/src/pages/SeedList/SeedDetail/SeedRating.jsx
@@ -63,6 +63,7 @@
import axios from 'axios';
import './SeedRating.css';
import { useUser } from '../../../context/UserContext';
+import AuthButton from '../../../components/AuthButton';
const SeedRating = ({ seedId }) => {
const { user } = useUser();
@@ -105,17 +106,28 @@
return (
<div className="seed-rating">
- <span>评分:</span>
+ <span style={{color: '#333'}}>评分:</span>
{[1, 2, 3, 4, 5].map((star) => (
- <span
- key={star}
- className={`star ${star <= (hoverScore || score) ? 'active' : ''}`}
- onMouseEnter={() => !submitted && setHoverScore(star)}
- onMouseLeave={() => !submitted && setHoverScore(0)}
- onClick={() => handleRating(star)}
- >
- ★
- </span>
+ <AuthButton
+ key={star}
+ roles={["cookie", "chocolate", "ice-cream"]}
+ style={{
+ backgroundColor: 'inherit',
+ margin: 0,
+ // color: '#ccc',
+ padding: 0,
+ outline: 'none',
+ border: 'none',
+ cursor: 'pointer'
+ }}
+ className={`star ${(star <= (hoverScore || score) ? 'active' : '')} ${hoverScore >= star ? 'hover' : ''}`}
+ onMouseEnter={() => !submitted && setHoverScore(star)}
+ onMouseLeave={() => !submitted && setHoverScore(0)}
+ onClick={() => handleRating(star)}
+ >
+ ★
+ </AuthButton>
+
))}
{submitted && <span className="thank-you">感谢您的评分!</span>}
</div>
diff --git a/src/pages/SeedList/SeedList.jsx b/src/pages/SeedList/SeedList.jsx
index 263038b..45b9f8c 100644
--- a/src/pages/SeedList/SeedList.jsx
+++ b/src/pages/SeedList/SeedList.jsx
@@ -169,8 +169,8 @@
<div className="tag-filters">
{TAGS.map(tag => (
- <AuthButton
- roles={["test"]}
+ <button
+ // roles={["test"]}
key={tag}
className={`tag-button ${activeTab === tag ? 'active-tag' : ''}`}
onClick={() => {
@@ -180,7 +180,7 @@
}}
>
{tag}
- </AuthButton>
+ </button>
))}
</div>
@@ -257,9 +257,10 @@
</div>
<div className="seed-item-size">{seed.size || '未知'}</div>
<div className="seed-item-upload-time">{seed.upload_time?.split('T')[0] || '未知'}</div>
- <div className="seed-item-downloads">{seed.downloads ?? 0} 次下载</div>
+ <div className="seed-item-downloads">{seed.leechers ?? 0} 次下载</div>
<div className="seed-item-actions" onClick={e => e.stopPropagation()}>
- <button
+ <AuthButton
+ roles={["cookie", "chocolate", "ice-cream"]}
className="btn-primary"
onClick={e => {
e.preventDefault();
@@ -285,8 +286,9 @@
}}
>
下载
- </button>
- <button
+ </AuthButton>
+ <AuthButton
+ roles={["cookie", "chocolate", "ice-cream"]}
className="btn-outline"
onClick={async (e) => {
e.preventDefault();
@@ -314,7 +316,7 @@
}}
>
收藏
- </button>
+ </AuthButton>
</div>
</div>
</Link>