Refactor setUserToken into two methods

This refactors `setUserToken` into `accountCookie`, which just returns a cookie if it exists, and `setHeaders`, which sets the Axios header defaults.

Then, we update the calls in all the required files.
This commit is contained in:
Justin Edmund 2023-01-31 00:18:54 -08:00
parent 714acbed35
commit d32293995b
10 changed files with 31 additions and 24 deletions

View file

@ -5,7 +5,7 @@ import { useTranslation } from 'react-i18next'
import axios, { AxiosError, AxiosResponse } from 'axios'
import api from '~utils/api'
import setUserToken from '~utils/setUserToken'
import { setHeaders } from '~utils/userToken'
import { accountState } from '~utils/accountState'
import Button from '~components/Button'
@ -147,7 +147,7 @@ const LoginModal = (props: Props) => {
setCookie('account', cookieObj, { path: '/', expires: expiresAt })
// Set Axios default headers
setUserToken()
setHeaders()
}
function storeUserInfo(response: AxiosResponse) {

View file

@ -5,7 +5,7 @@ import { useTranslation } from 'next-i18next'
import { AxiosResponse } from 'axios'
import api from '~utils/api'
import setUserToken from '~utils/setUserToken'
import { setHeaders } from '~utils/userToken'
import { accountState } from '~utils/accountState'
import Button from '~components/Button'
@ -103,7 +103,7 @@ const SignupModal = (props: Props) => {
setCookie('account', cookieObj, { path: '/', expires: expiresAt })
// Set Axios default headers
setUserToken()
setHeaders()
}
function fetchUserInfo(id: string) {

View file

@ -9,7 +9,7 @@ import api from '~utils/api'
import extractFilters from '~utils/extractFilters'
import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids'
import setUserToken from '~utils/setUserToken'
import { setHeaders } from '~utils/userToken'
import useDidMountEffect from '~utils/useDidMountEffect'
import { appState } from '~utils/appState'
import { elements, allElement } from '~data/elements'
@ -329,7 +329,7 @@ export const getServerSidePaths = async () => {
// prettier-ignore
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
// Set headers for server-side requests
setUserToken(req, res)
setHeaders(req, res)
// Fetch latest version
const version = await fetchLatestVersion()

View file

@ -7,7 +7,7 @@ import type { AppProps } from 'next/app'
import Layout from '~components/Layout'
import { accountState } from '~utils/accountState'
import setUserToken from '~utils/setUserToken'
import { setHeaders } from '~utils/userToken'
import '../styles/globals.scss'
import { ToastProvider, Viewport } from '@radix-ui/react-toast'
@ -23,9 +23,9 @@ function MyApp({ Component, pageProps }: AppProps) {
}
useEffect(() => {
setUserToken()
if (accountCookie) {
setHeaders()
console.log(`Logged in as user "${cookieData.account.username}"`)
accountState.account.authorized = true

View file

@ -6,7 +6,7 @@ import { useTranslation } from 'next-i18next'
import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import { AboutTabs } from '~utils/enums'
import setUserToken from '~utils/setUserToken'
import { setHeaders } from '~utils/userToken'
import AboutPage from '~components/AboutPage'
import UpdatesPage from '~components/UpdatesPage'
@ -160,7 +160,7 @@ export const getServerSidePaths = async () => {
// prettier-ignore
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
// Set headers for server-side requests
setUserToken(req, res)
setHeaders(req, res)
// Fetch and organize raids
return {

View file

@ -10,7 +10,7 @@ import NewHead from '~components/NewHead'
import api from '~utils/api'
import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids'
import setUserToken from '~utils/setUserToken'
import { accountCookie, setHeaders } from '~utils/userToken'
import { appState, initialAppState } from '~utils/appState'
import { groupWeaponKeys } from '~utils/groupWeaponKeys'
@ -119,8 +119,8 @@ export const getServerSidePaths = async () => {
// prettier-ignore
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
// Set headers for server-side requests
setUserToken(req, res)
// Set headers for API calls
setHeaders(req, res)
// Fetch latest version
const version = await fetchLatestVersion()

View file

@ -10,7 +10,7 @@ import api from '~utils/api'
import elementEmoji from '~utils/elementEmoji'
import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids'
import setUserToken from '~utils/setUserToken'
import { setHeaders } from '~utils/userToken'
import { appState } from '~utils/appState'
import { groupWeaponKeys } from '~utils/groupWeaponKeys'
@ -108,7 +108,7 @@ export const getServerSidePaths = async () => {
// prettier-ignore
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
// Set headers for server-side requests
setUserToken(req, res)
setHeaders(req, res)
// Fetch latest version
const version = await fetchLatestVersion()

View file

@ -7,7 +7,7 @@ import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import clonedeep from 'lodash.clonedeep'
import api from '~utils/api'
import setUserToken from '~utils/setUserToken'
import { setHeaders } from '~utils/userToken'
import extractFilters from '~utils/extractFilters'
import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids'
@ -363,7 +363,7 @@ export const getServerSidePaths = async () => {
// prettier-ignore
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
// Set headers for server-side requests
setUserToken(req, res)
setHeaders(req, res)
// Fetch latest version
const version = await fetchLatestVersion()

View file

@ -7,7 +7,7 @@ import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import clonedeep from 'lodash.clonedeep'
import api from '~utils/api'
import setUserToken from '~utils/setUserToken'
import { setHeaders } from '~utils/userToken'
import extractFilters from '~utils/extractFilters'
import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids'
@ -363,7 +363,7 @@ export const getServerSidePaths = async () => {
// prettier-ignore
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
// Set headers for server-side requests
setUserToken(req, res)
setHeaders(req, res)
// Fetch latest version
const version = await fetchLatestVersion()

View file

@ -2,17 +2,24 @@ import axios from 'axios'
import { getCookie } from 'cookies-next'
import type { NextApiRequest, NextApiResponse } from 'next'
export default (
export const accountCookie = (
req: NextApiRequest | undefined = undefined,
res: NextApiResponse | undefined = undefined
) => {
// Set up cookies
const options = req && res ? { req, res } : {}
const cookie = getCookie('account', options)
return cookie ? cookie : undefined
}
export const setHeaders = (
req: NextApiRequest | undefined = undefined,
res: NextApiResponse | undefined = undefined
) => {
const cookie = accountCookie(req, res)
if (cookie) {
axios.defaults.headers.common['Authorization'] = `Bearer ${
JSON.parse(cookie as string).token
}`
const parsed = JSON.parse(cookie as string)
if (parsed.token)
axios.defaults.headers.common['Authorization'] = `Bearer ${parsed.token}`
} else {
delete axios.defaults.headers.common['Authorization']
}