mirror of
https://github.com/remvze/moodist.git
synced 2025-12-18 17:34:17 +00:00
## 🎯 核心功能重构 ### 音乐列表显示优化 - **自动展示**: 登录用户页面打开时自动显示音乐列表,无需手动展开 - **权限控制**: 未登录用户完全隐藏"我的音乐"部分 - **独立展开**: 每个音乐项配备独立的展开/收起按钮 - **渐进展示**: 点击展开按钮显示音乐收录的声音详情 ### JWT认证系统完整实现 - **安全升级**: 完全替代密码传输,实现JWT令牌认证 - **自动管理**: 登录时自动生成和存储JWT令牌 - **API集成**: 所有音乐相关API统一使用JWT认证 - **容错机制**: 多层级token获取策略确保认证稳定性 ## 🔧 技术架构升级 ### 新增核心模块 - `src/lib/jwt.ts` - JWT令牌创建与验证核心 - `src/lib/jwt-auth-middleware.ts` - JWT认证中间件 - `src/lib/api-client.ts` - 自动JWT令牌注入的API客户端 - `src/hooks/useNotification.ts` - 统一通知系统 ### 组件化重构 - `src/components/buttons/save-music/` - 音乐保存按钮组件 - `src/components/buttons/delete-music/` - 音乐删除按钮组件 - `src/components/notification/` - 通知组件系统 ### API安全强化 - 所有认证相关API集成JWT中间件 - 用户注册/登录自动返回JWT令牌 - 音乐CRUD操作统一JWT认证验证 ## 🎨 用户体验优化 ### 交互流程简化 - 登录即见:音乐列表自动展示,减少用户操作步骤 - 按需展开:声音详情按需显示,避免信息过载 - 状态持久:JWT令牌自动管理,无需重复登录 ### 视觉层次优化 - 音乐名称与展开按钮并排布局,提升操作便利性 - 声音列表折叠显示,保持界面整洁 - 统一通知样式,确保视觉一致性 ## 🛡️ 安全性提升 - **零密码传输**: API请求完全移除明文密码传输 - **令牌过期**: JWT令牌7天自动过期机制 - **状态隔离**: 认证状态与业务状态完全分离 版本: v2.7.0 技术栈: React + TypeScript + Astro + SQLite + JWT
32 lines
No EOL
842 B
TypeScript
32 lines
No EOL
842 B
TypeScript
import { AnimatePresence } from 'motion/react';
|
||
import styles from './notification.module.css';
|
||
|
||
interface NotificationProps {
|
||
show: boolean;
|
||
message: string;
|
||
type: 'success' | 'error';
|
||
onClose: () => void;
|
||
}
|
||
|
||
export function Notification({ show, message, type, onClose }: NotificationProps) {
|
||
return (
|
||
<AnimatePresence>
|
||
{show && (
|
||
<div className={`${styles.notification} ${styles[type]}`}>
|
||
<div className={styles.notificationContent}>
|
||
<span className={styles.notificationMessage}>
|
||
{message}
|
||
</span>
|
||
<button
|
||
className={styles.notificationClose}
|
||
onClick={onClose}
|
||
aria-label="关闭通知"
|
||
>
|
||
×
|
||
</button>
|
||
</div>
|
||
</div>
|
||
)}
|
||
</AnimatePresence>
|
||
);
|
||
} |