0
0
Fork 0

ランキング非参加者を匿名表示に

This commit is contained in:
Xeltica 2023-03-24 02:25:24 +09:00
parent 890df5e111
commit 6ae8bed194
3 changed files with 14 additions and 9 deletions

View file

@ -23,9 +23,8 @@ export class RankingController {
*/ */
private async getResponse(isCalculating: boolean, limit?: number) { private async getResponse(isCalculating: boolean, limit?: number) {
const ranking = isCalculating ? [] : (await getRanking(limit)).map((u) => ({ const ranking = isCalculating ? [] : (await getRanking(limit)).map((u) => ({
id: u.id, username: u.useRanking ? u.username : undefined,
username: u.username, host: u.useRanking ? u.host : undefined,
host: u.host,
rating: u.rating, rating: u.rating,
})); }));
return { return {

View file

@ -8,8 +8,7 @@ import { User } from '../models/entities/user.js';
*/ */
export const getRanking = async (limit?: number | null): Promise<User[]> => { export const getRanking = async (limit?: number | null): Promise<User[]> => {
const query = Users.createQueryBuilder('user') const query = Users.createQueryBuilder('user')
.where('"user"."useRanking" IS TRUE') .where('"user"."bannedFromRanking" IS NOT TRUE')
.andWhere('"user"."bannedFromRanking" IS NOT TRUE')
.andWhere('"user"."rating" <> \'NaN\'') .andWhere('"user"."rating" <> \'NaN\'')
.orderBy('"user".rating', 'DESC'); .orderBy('"user".rating', 'DESC');

View file

@ -9,9 +9,8 @@ interface RankingResponse {
} }
interface Ranking { interface Ranking {
id: number; username?: string;
username: string; host?: string;
host: string;
rating: number; rating: number;
} }
@ -49,7 +48,7 @@ export const Ranking: React.VFC<RankingProps> = ({limit}) => {
<p>{t('isCalculating')}</p> <p>{t('isCalculating')}</p>
) : ( ) : (
<div className="menu large"> <div className="menu large">
{response.ranking.map((r, i) => ( {response.ranking.map((r, i) => r.username && r.host ? (
<a href={`https://${r.host}/@${r.username}`} target="_blank" rel="noopener noreferrer nofollow" className="item flex" key={i}> <a href={`https://${r.host}/@${r.username}`} target="_blank" rel="noopener noreferrer nofollow" className="item flex" key={i}>
<div className="text-bold pr-2">{i + 1}</div> <div className="text-bold pr-2">{i + 1}</div>
<div> <div>
@ -57,6 +56,14 @@ export const Ranking: React.VFC<RankingProps> = ({limit}) => {
<span className="text-dimmed text-75">{t('_missHai.rating')}: {r.rating}</span> <span className="text-dimmed text-75">{t('_missHai.rating')}: {r.rating}</span>
</div> </div>
</a> </a>
): (
<div className="item flex" key={i}>
<div className="text-bold pr-2">{i + 1}</div>
<div>
@.<br/>
<span className="text-dimmed text-75">{t('_missHai.rating')}: {r.rating}</span>
</div>
</div>
))} ))}
</div> </div>
) )