import Router, {Response} from 'express';
import {AuthenticatedRequest, hasRank} from "../middlewares/authenticate";
import {Rank} from "../../models/User";
import {getGuilds} from "../../controller/discord";


const app = Router();

app.get("/", hasRank(Rank.USER), async (req: AuthenticatedRequest, res: Response) => {
    getGuilds(req.user.refreshDate!, req.user.refreshToken, req.user.accessToken).then(guilds => {
        res.json(guilds
            .filter((guild) => guild.owner || (guild.permissions && (guild.permissions & 0x8)))
            .map((guild) => ({id: guild.id, name: guild.name, icon: guild.icon})));
    }).catch((e) => {
        console.log(e)
        res.status(500).json({message: "An internal error occurred"})
    });
});

module.exports = app;