mirror of
https://github.com/PretendoNetwork/website.git
synced 2026-08-22 16:47:16 -05:00
feat: add discord unlinking
This commit is contained in:
@@ -4,13 +4,14 @@ export default defineEventHandler(async (event): Promise<GetApiAuthMe> => {
|
||||
const config = useRuntimeConfig(event);
|
||||
const auth = enforceLoggedIn(event);
|
||||
|
||||
const grpc = useAccountGrpc(event);
|
||||
const data = await grpc.getUserData({ pid: auth.pid });
|
||||
const apiGrpc = useApiGrpcWithToken(event, auth.token);
|
||||
const data = await apiGrpc.getUserData({ });
|
||||
return {
|
||||
pid: data.pid,
|
||||
username: data.username,
|
||||
accessLevel: data.accessLevel,
|
||||
serverAccessLevel: data.serverAccessLevel as any,
|
||||
discordId: data.connections?.discord?.id ?? null,
|
||||
mii: data.mii
|
||||
? {
|
||||
imageUrl: `${config.public.cdnBaseUrl}/mii/${data.pid}/normal_face.png`,
|
||||
|
||||
@@ -39,11 +39,13 @@ export function useDiscord(event: H3Event): DiscordInstance | null {
|
||||
return discordInstance;
|
||||
}
|
||||
|
||||
export async function assignDiscordMemberSupporterRole(discord: DiscordInstance, memberId: string, roleId: string) {
|
||||
export async function assignDiscordMemberSupporterRole(discord: DiscordInstance, memberId: string, roleId: string | null) {
|
||||
if (discord.ids.supporterRoleId) {
|
||||
await discord.rest.put(Routes.guildMemberRole(discord.ids.guildId, memberId, discord.ids.supporterRoleId));
|
||||
}
|
||||
await discord.rest.put(Routes.guildMemberRole(discord.ids.guildId, memberId, roleId));
|
||||
if (roleId) {
|
||||
await discord.rest.put(Routes.guildMemberRole(discord.ids.guildId, memberId, roleId));
|
||||
}
|
||||
}
|
||||
|
||||
export async function assignDiscordMemberTesterRole(discord: DiscordInstance, memberId: string) {
|
||||
@@ -52,11 +54,13 @@ export async function assignDiscordMemberTesterRole(discord: DiscordInstance, me
|
||||
}
|
||||
}
|
||||
|
||||
export async function removeDiscordMemberSupporterRole(discord: DiscordInstance, memberId: string, roleId: string) {
|
||||
export async function removeDiscordMemberSupporterRole(discord: DiscordInstance, memberId: string, roleId: string | null) {
|
||||
if (discord.ids.supporterRoleId) {
|
||||
await discord.rest.delete(Routes.guildMemberRole(discord.ids.guildId, memberId, discord.ids.supporterRoleId));
|
||||
}
|
||||
await discord.rest.delete(Routes.guildMemberRole(discord.ids.guildId, memberId, roleId));
|
||||
if (roleId) {
|
||||
await discord.rest.delete(Routes.guildMemberRole(discord.ids.guildId, memberId, roleId));
|
||||
}
|
||||
}
|
||||
|
||||
export async function removeDiscordMemberTesterRole(discord: DiscordInstance, memberId: string) {
|
||||
|
||||
@@ -5,6 +5,7 @@ export type GetApiAuthMe = {
|
||||
username: string;
|
||||
accessLevel: number;
|
||||
serverAccessLevel: 'dev' | 'test' | 'prod';
|
||||
discordId: string | null;
|
||||
mii: {
|
||||
imageUrl: string;
|
||||
name: string;
|
||||
|
||||
@@ -47,6 +47,18 @@ async function linkDiscord() {
|
||||
alert(err.code);
|
||||
}
|
||||
}
|
||||
|
||||
async function unlinkDiscord() {
|
||||
try {
|
||||
await apiFetch('/api/account/discord-unlink', {
|
||||
method: 'POST'
|
||||
});
|
||||
await refresh();
|
||||
} catch (error: unknown) {
|
||||
const err = getApiError(error);
|
||||
alert(err.code);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -65,7 +77,16 @@ async function linkDiscord() {
|
||||
Dev
|
||||
</button>
|
||||
</div>
|
||||
<button @click="linkDiscord()">
|
||||
<button
|
||||
v-if="profile.discordId"
|
||||
@click="unlinkDiscord()"
|
||||
>
|
||||
Unlink {{ profile.discordId }} discord
|
||||
</button>
|
||||
<button
|
||||
v-else
|
||||
@click="linkDiscord()"
|
||||
>
|
||||
Link discord
|
||||
</button>
|
||||
<button
|
||||
|
||||
Reference in New Issue
Block a user