my-kaiqiuwang/src/services/FavPlayer.ts
kyuuseiryuu 80aebac57a feat: implement user favorite player system with Logto sync
- Add `FavPlayerDAO` for database operations (create, read, delete, check) against `user_fav` table.
- Integrate Prisma ORM with MariaDB adapter in `src/prisma/db.ts`.
- Implement backend API routes (`/api/fav`) to handle GET, PUT, and DELETE requests for managing favorites based on user audience (aud).
- Create `FavePlayersPage` with support for:
  - Viewing local stored favorites.
  - Syncing server-side favorites via Logto authentication.
  - Visual distinction between "Local" and "Account" favorite lists using Segmented control.
  - Loading states and empty state handling with Ant Design components.
- Enhance `Logto/Callback` to redirect users back to their intended destination (e.g., `FavePlayersPage`) after authentication if a `redirect` param was stored in session storage.
- Update `UserCenter` page to include "Backup Codes" management option under account settings.
- Add necessary dependencies: `@logto/react`, `ahooks`, and update UI imports accordingly.
2026-03-09 10:16:27 +09:00

22 lines
705 B
TypeScript

import { deleteUserFav, getUserFavList, isUserFav, updateUserFav } from "../dao/FavPlayerDAO";
import { xcxApi } from "../utils/server";
export async function listFavPlayers(aud: string) {
const uids = await getUserFavList(aud);
const profiles = uids.map(uid => xcxApi.getAdvProfile(uid));
return await Promise.all(profiles);
}
export async function favPlayer(aud: string, uid: string) {
await updateUserFav(aud, uid);
return await getUserFavList(aud);
};
export async function unFavPlayer(aud: string, uid: string) {
await deleteUserFav(aud, uid);
return await getUserFavList(aud);
}
export async function checkIsUserFav(aud: string, uid: string) {
return await isUserFav(aud, uid);
}