- 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.
22 lines
705 B
TypeScript
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);
|
|
} |