33import KoalaMonoIcon from " ../../components/icons/KoalaMonoIcon.vue" ;
44import {onMounted , ref } from " vue" ;
55import DashBody from " ./body/DashBody.vue" ;
6- import ThemeToggle from " ../../components/ThemeToggle.vue" ;
76import DiscordAuthButton from " ../../components/auth/DiscordAuthButton.vue" ;
87import MainWithFooter from " ../../components/MainWithFooter.vue" ;
9- import {getUserAdminGuilds } from " ../../helpers/discordapi.js" ;
10- import {getGuild , getGuilds } from " ../../helpers/kbguild.js" ;
8+ import {getUserAdminGuildsAsMap } from " ../../helpers/discordapi.js" ;
9+ import {getGuild , getGuildsAsMap } from " ../../helpers/kbguild.js" ;
1110import {INVITE_URL } from " ../../helpers/redirect.js" ;
1211
13- const HOME_PATH = " /dashboard"
14- const VERIFY_PATH = " /dashboard/verify"
15- const ANNOUNCE_PATH = " /dashboard/announce"
16-
1712const currentPath = ref (window .location .pathname )
1813
1914window .addEventListener (' hashchange' , () => {
2015 currentPath .value = window .location .pathname
2116})
2217
23- let guildsDsc = ref ({} )
24- let guildsKb = ref ({} )
18+ let guildsDsc = ref (new Map () )
19+ let guildsKb = ref (new Map () )
2520let currentGuildId = ref ()
2621
2722
2823onMounted (async () => {
29- guildsDsc .value = await getUserAdminGuilds ();
24+ guildsDsc .value = await getUserAdminGuildsAsMap ();
3025
3126 // Load remaining guilds
3227 await sync_guilds_kb ();
3328 console .log (" Loaded guilds" , guildsKb .value );
34- await setCurrentGuild ( Object . keys ( guildsKb .value )[ 0 ] );
29+ console . log ( " Loaded guilds " , guildsKb .value . values (). next (). value . guild_id );
3530})
3631
3732async function setCurrentGuild (gid ) {
3833 currentGuildId .value = gid
3934 try {
40- guildsKb .value [ gid] = await getGuild (gid) // Refresh from db
35+ guildsKb .value . set ( gid, await getGuild (gid) ) // Refresh from db
4136 } catch (e) {
4237 if (e .response && e .response .status === 404 ) {
4338 // Allowed, means Koala not in server
@@ -48,7 +43,7 @@ async function setCurrentGuild(gid) {
4843}
4944
5045async function sync_guilds_kb () {
51- guildsKb .value = await getGuilds ()
46+ guildsKb .value = await getGuildsAsMap ()
5247}
5348
5449 </script >
@@ -60,17 +55,20 @@ async function sync_guilds_kb() {
6055 <div class =" navbar shadow m-5 w-auto bg-base-200" >
6156 <div class =" navbar-start" >
6257 <div class =" dropdown" >
58+ <div tabindex =" 0" role =" button" class =" btn btn-sm btn-primary" v-if =" !currentGuildId" >
59+ Select Guild
60+ </div >
6361 <div tabindex =" 0" role =" button" class =" card-title btn btn-sm btn-ghost" v-if =" currentGuildId" >
6462 <div class =" avatar" >
6563 <div class =" w-6 rounded-xl" >
66- <img :src =" `https://cdn.discordapp.com/icons/${currentGuildId}/${guildsDsc[ currentGuildId] .icon}.webp`" v-if =" guildsDsc[ currentGuildId] .icon" />
64+ <img :src =" `https://cdn.discordapp.com/icons/${currentGuildId}/${guildsDsc.get( currentGuildId) .icon}.webp`" v-if =" guildsDsc.get( currentGuildId) .icon" />
6765 </div >
6866 </div >
69- {{ guildsDsc[ currentGuildId] .name }}
67+ {{ guildsDsc.get( currentGuildId) .name }}
7068 </div >
7169 <ul tabindex =" 0" class =" dropdown-content menu bg-base-100 rounded-box z-1 p-2 shadow-sm" >
72- <li v-for =" ( gid, guild) in guildsKb " :class =" (!guildsKb[ guild.id] && 'menu-disabled')" ><a :class =" (gid === currentGuildId && 'menu-active')" @click =" setCurrentGuild(gid)" >
73- <div class =" w-6 rounded-xl" ><img :src =" `https://cdn.discordapp.com/icons/${gid}/${guildsDsc[ gid] .icon}.webp`" v-if =" guildsDsc[ gid] && guildsDsc[ gid] .icon" />
70+ <li v-for =" [ gid, guild] in guildsDsc " :class =" (!guildsKb.has( guild.id) && 'menu-disabled')" ><a :class =" (gid === currentGuildId && 'menu-active')" @click =" setCurrentGuild(gid)" >
71+ <div class =" w-6 rounded-xl" ><img :src =" `https://cdn.discordapp.com/icons/${gid}/${guildsDsc.get( gid) .icon}.webp`" v-if =" guildsDsc.has( gid) && guildsDsc.get( gid) .icon" />
7472 </div > {{ guild.name }}</a ></li >
7573 </ul >
7674 </div >
@@ -85,9 +83,9 @@ async function sync_guilds_kb() {
8583 </div >
8684 </div >
8785 </header >
88- <DashBody v-if =" currentPath === HOME_PATH && guildsKb[ currentGuildId] " />
86+ <DashBody v-if =" guildsKb.has(currentGuildId) " :guild = " guildsKb.get( currentGuildId) " />
8987 <div class =" flex flex-row justify-center" >
90- <div class =" card card-sm m-5 p-10 shadow bg-base-200 flex w-fit" v-if =" !guildsKb[ currentGuildId] " >
88+ <div class =" card card-sm m-5 p-10 shadow bg-base-200 flex w-fit" v-if =" !guildsKb.has( currentGuildId) " >
9189 <div class =" flex flex-row justify-center p-2" >
9290 <h1 class =" card-title" >
9391 You need to invite KoalaBot to your server to use the dashboard silly!
0 commit comments