feat: badges

This commit is contained in:
TheClashFruit 2024-09-01 11:38:46 +02:00
parent 9d6e607ab5
commit 638452eb0b
Signed by: TheClashFruit
GPG key ID: 09BB24C34C2F3204
4 changed files with 30 additions and 11 deletions

View file

@ -1,4 +1,4 @@
import { Role } from '@/utils/permissions';
import { TeamRole } from '@/utils/permissions';
import mysql, { Pool, QueryResult } from 'mysql2/promise';
import crypto from 'node:crypto';
@ -46,7 +46,7 @@ interface TeamMember {
banner: string;
accent_color: number;
permissions: number;
role: Role;
role: TeamRole;
}
class Database {
@ -191,7 +191,7 @@ class Database {
banner: row.banner,
accent_color: row.accent_color,
permissions: row.permissions,
role: (row.role as Role),
role: (row.role as TeamRole),
};
});
}

View file

@ -7,7 +7,7 @@ import Database from '@/lib/Database';
import Image from 'next/image';
import Link from 'next/link';
import { Role } from '@/utils/permissions';
import { TeamRole } from '@/utils/badges';
import styles from '@/styles/About.module.scss';
import { Globe } from 'lucide-react';
@ -47,8 +47,8 @@ export default function About({ teamMembers }: { teamMembers: any[] }) {
<h3>{member.global_name}</h3>
{member.role === Role.Owner && <label>Owner</label>}
{member.role === Role.Admin && <label>Admin</label>}
{member.role === TeamRole.Owner && <label>Owner</label>}
{member.role === TeamRole.Admin && <label>Admin</label>}
</div>
</Card>
))}

24
utils/badges.ts Normal file
View file

@ -0,0 +1,24 @@
export enum TeamRole {
Owner = 'owner',
Admin = 'admin',
Moderator = 'mod'
}
export enum Badge {
Old = 1 << 0, // CRSS OG
Supporter = 1 << 1, // "Donator"
}
export function getBadges(badges: number): Badge[] {
const result: Badge[] = [];
if ((badges & Badge.Old) === Badge.Old) {
result.push(Badge.Old);
}
if ((badges & Badge.Supporter) === Badge.Supporter) {
result.push(Badge.Supporter);
}
return result;
}

View file

@ -4,11 +4,6 @@ export enum Permission {
ServerPlayer = 1 << 2
}
export enum Role {
Owner = 'owner',
Admin = 'admin',
}
export function hasPermission(permissions: number, permission: Permission): boolean {
return (permissions & permission) === permission;
}