I had my user guild fetch function inside a component which would rerun the fetch upon every refresh or mount. I tried adding it to the session callback but it achieves the same outcome. I'm a big of a beginner so if anyone could help that would be great.
import NextAuth from 'next-auth';
import DiscordProvider from 'next-auth/providers/discord';
import axios from 'axios'
export default NextAuth({
providers: [
DiscordProvider({
clientId: process.env.DISCORD_CLIENT_ID,
clientSecret: process.env.DISCORD_CLIENT_SECRET,
authorization: { params: { scope: 'identify guilds email' } },
}),
],
callbacks: {
async jwt({ token, account }) {
if (account) {
token.accessToken = account.access_token;
}
return token
},
async session({ session, token }) {
session.accessToken = token.accessToken;
console.log(session)
if (session.user.guilds) {
return session;
} else {
try {
const result = await axios({
url: 'https://discord.com/api/v10/users/@me/guilds',
method: 'GET',
headers: {
Authorization: `Bearer ${token.accessToken}`,
},
})
session.user.guilds = result.data;
} catch (err) {
session.user.guilds = [];
}
return session;
}
},
},
})