Add api call for raidGroups and update pages

Pages fetch raids and store them in the app state. We needed to update this to pull raid groups instead
This commit is contained in:
Justin Edmund 2023-06-05 20:18:17 -07:00
parent 2eea7a84e7
commit c9014913db
8 changed files with 36 additions and 64 deletions

View file

@ -9,7 +9,6 @@ import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import api from '~utils/api' import api from '~utils/api'
import extractFilters from '~utils/extractFilters' import extractFilters from '~utils/extractFilters'
import fetchLatestVersion from '~utils/fetchLatestVersion' import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids'
import { setHeaders } from '~utils/userToken' import { setHeaders } from '~utils/userToken'
import useDidMountEffect from '~utils/useDidMountEffect' import useDidMountEffect from '~utils/useDidMountEffect'
import { appState } from '~utils/appState' import { appState } from '~utils/appState'
@ -356,12 +355,12 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
try { try {
// Fetch and organize raids // Fetch and organize raids
let { raids, sortedRaids } = await api.endpoints.raids let raidGroups: RaidGroup[] = await api
.getAll() .raidGroups()
.then((response) => organizeRaids(response.data)) .then((response) => response.data)
// Create filter object // Create filter object
const filters: FilterObject = extractFilters(query, raids) const filters: FilterObject = extractFilters(query, raidGroups)
const params = { const params = {
params: { ...filters, ...advancedFilters }, params: { ...filters, ...advancedFilters },
} }
@ -393,8 +392,7 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
const context: PageContextObj = { const context: PageContextObj = {
user: user, user: user,
teams: teams, teams: teams,
raids: raids, raidGroups: raidGroups,
sortedRaids: sortedRaids,
pagination: pagination, pagination: pagination,
} }

View file

@ -12,7 +12,6 @@ import NewHead from '~components/head/NewHead'
import api from '~utils/api' import api from '~utils/api'
import fetchLatestVersion from '~utils/fetchLatestVersion' import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids'
import { accountCookie, setHeaders } from '~utils/userToken' import { accountCookie, setHeaders } from '~utils/userToken'
import { appState, initialAppState } from '~utils/appState' import { appState, initialAppState } from '~utils/appState'
import { groupWeaponKeys } from '~utils/groupWeaponKeys' import { groupWeaponKeys } from '~utils/groupWeaponKeys'
@ -69,7 +68,7 @@ const NewRoute: React.FC<Props> = ({
useEffect(() => { useEffect(() => {
if (context && context.jobs && context.jobSkills) { if (context && context.jobs && context.jobSkills) {
appState.raids = context.raids appState.raids = context.raidGroups
appState.jobs = context.jobs appState.jobs = context.jobs
appState.jobSkills = context.jobSkills appState.jobSkills = context.jobSkills
appState.weaponKeys = context.weaponKeys appState.weaponKeys = context.weaponKeys
@ -106,12 +105,7 @@ const NewRoute: React.FC<Props> = ({
return ( return (
<React.Fragment key={router.asPath}> <React.Fragment key={router.asPath}>
{pageHead()} {pageHead()}
<Party <Party new={true} pushHistory={callback} selectedTab={selectedTab} />
new={true}
raids={context.sortedRaids}
pushHistory={callback}
selectedTab={selectedTab}
/>
</React.Fragment> </React.Fragment>
) )
} else return pageError() } else return pageError()
@ -153,9 +147,7 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
try { try {
// Fetch and organize raids // Fetch and organize raids
let { raids, sortedRaids } = await api.endpoints.raids let raidGroups: RaidGroup[] = await api.raidGroups().then((response) => response.data)
.getAll()
.then((response) => organizeRaids(response.data))
// Fetch jobs and job skills // Fetch jobs and job skills
let jobs = await api.endpoints.jobs let jobs = await api.endpoints.jobs
@ -174,8 +166,7 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
const context: PageContextObj = { const context: PageContextObj = {
jobs: jobs, jobs: jobs,
jobSkills: jobSkills, jobSkills: jobSkills,
raids: raids, raidGroups: raidGroups,
sortedRaids: sortedRaids,
weaponKeys: weaponKeys, weaponKeys: weaponKeys,
} }

View file

@ -9,7 +9,6 @@ import PartyHead from '~components/party/PartyHead'
import api from '~utils/api' import api from '~utils/api'
import elementEmoji from '~utils/elementEmoji' import elementEmoji from '~utils/elementEmoji'
import fetchLatestVersion from '~utils/fetchLatestVersion' import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids'
import { setHeaders } from '~utils/userToken' import { setHeaders } from '~utils/userToken'
import { appState } from '~utils/appState' import { appState } from '~utils/appState'
import { groupWeaponKeys } from '~utils/groupWeaponKeys' import { groupWeaponKeys } from '~utils/groupWeaponKeys'
@ -57,7 +56,7 @@ const PartyRoute: React.FC<Props> = ({
// Set the initial data from props // Set the initial data from props
useEffect(() => { useEffect(() => {
if (context && !error) { if (context && !error) {
appState.raids = context.raids appState.raidGroups = context.raidGroups
appState.jobs = context.jobs ? context.jobs : [] appState.jobs = context.jobs ? context.jobs : []
appState.jobSkills = context.jobSkills ? context.jobSkills : [] appState.jobSkills = context.jobSkills ? context.jobSkills : []
appState.weaponKeys = context.weaponKeys appState.weaponKeys = context.weaponKeys
@ -85,11 +84,7 @@ const PartyRoute: React.FC<Props> = ({
return ( return (
<React.Fragment key={router.asPath}> <React.Fragment key={router.asPath}>
{pageHead()} {pageHead()}
<Party <Party team={context.party} selectedTab={selectedTab} />
team={context.party}
raids={context.sortedRaids}
selectedTab={selectedTab}
/>
</React.Fragment> </React.Fragment>
) )
} else return pageError() } else return pageError()
@ -115,9 +110,9 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
try { try {
// Fetch and organize raids // Fetch and organize raids
let { raids, sortedRaids } = await api.endpoints.raids let raidGroups: RaidGroup[] = await api
.getAll() .raidGroups()
.then((response) => organizeRaids(response.data)) .then((response) => response.data)
// Fetch jobs and job skills // Fetch jobs and job skills
let jobs = await api.endpoints.jobs let jobs = await api.endpoints.jobs
@ -148,8 +143,7 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
party: party, party: party,
jobs: jobs, jobs: jobs,
jobSkills: jobSkills, jobSkills: jobSkills,
raids: raids, raidGroups: raidGroups,
sortedRaids: sortedRaids,
weaponKeys: weaponKeys, weaponKeys: weaponKeys,
meta: { meta: {
element: elementEmoji(party), element: elementEmoji(party),

View file

@ -11,7 +11,6 @@ import api from '~utils/api'
import { setHeaders } from '~utils/userToken' import { setHeaders } from '~utils/userToken'
import extractFilters from '~utils/extractFilters' import extractFilters from '~utils/extractFilters'
import fetchLatestVersion from '~utils/fetchLatestVersion' import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids'
import useDidMountEffect from '~utils/useDidMountEffect' import useDidMountEffect from '~utils/useDidMountEffect'
import { appState } from '~utils/appState' import { appState } from '~utils/appState'
import { defaultFilterset } from '~utils/defaultFilters' import { defaultFilterset } from '~utils/defaultFilters'
@ -390,12 +389,12 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
try { try {
// Fetch and organize raids // Fetch and organize raids
let { raids, sortedRaids } = await api.endpoints.raids let raidGroups: RaidGroup[] = await api
.getAll() .raidGroups()
.then((response) => organizeRaids(response.data)) .then((response) => response.data)
// Create filter object // Create filter object
const filters: FilterObject = extractFilters(query, raids) const filters: FilterObject = extractFilters(query, raidGroups)
const params = { const params = {
params: { ...filters, ...advancedFilters }, params: { ...filters, ...advancedFilters },
} }
@ -416,8 +415,7 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
// Consolidate data into context object // Consolidate data into context object
const context: PageContextObj = { const context: PageContextObj = {
teams: teams, teams: teams,
raids: raids, raidGroups: raidGroups,
sortedRaids: sortedRaids,
pagination: pagination, pagination: pagination,
} }

View file

@ -11,7 +11,6 @@ import api from '~utils/api'
import { setHeaders } from '~utils/userToken' import { setHeaders } from '~utils/userToken'
import extractFilters from '~utils/extractFilters' import extractFilters from '~utils/extractFilters'
import fetchLatestVersion from '~utils/fetchLatestVersion' import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids'
import useDidMountEffect from '~utils/useDidMountEffect' import useDidMountEffect from '~utils/useDidMountEffect'
import { appState } from '~utils/appState' import { appState } from '~utils/appState'
import { defaultFilterset } from '~utils/defaultFilters' import { defaultFilterset } from '~utils/defaultFilters'
@ -388,12 +387,12 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
try { try {
// Fetch and organize raids // Fetch and organize raids
let { raids, sortedRaids } = await api.endpoints.raids let raidGroups: RaidGroup[] = await api
.getAll() .raidGroups()
.then((response) => organizeRaids(response.data)) .then((response) => response.data)
// Create filter object // Create filter object
const filters: FilterObject = extractFilters(query, raids) const filters: FilterObject = extractFilters(query, raidGroups)
const params = { const params = {
params: { ...filters, ...advancedFilters }, params: { ...filters, ...advancedFilters },
} }
@ -414,8 +413,7 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
// Consolidate data into context object // Consolidate data into context object
const context: PageContextObj = { const context: PageContextObj = {
teams: teams, teams: teams,
raids: raids, raidGroups: raidGroups,
sortedRaids: sortedRaids,
pagination: pagination, pagination: pagination,
} }

View file

@ -120,6 +120,11 @@ class Api {
return axios.get(resourceUrl, params) return axios.get(resourceUrl, params)
} }
raidGroups(params?: {}) {
const resourceUrl = `${this.url}/raids/groups`
return axios.get(resourceUrl, params)
}
remix({ shortcode, body, params}: { shortcode: string, body?: {}, params?: {} }) { remix({ shortcode, body, params}: { shortcode: string, body?: {}, params?: {} }) {
const resourceUrl = `${this.url}/parties/${shortcode}/remix` const resourceUrl = `${this.url}/parties/${shortcode}/remix`
return axios.post(resourceUrl, body, params) return axios.post(resourceUrl, body, params)

View file

@ -1,6 +1,9 @@
import { elements, allElement } from '~data/elements' import { elements, allElement } from '~data/elements'
export default (query: { [index: string]: string }, raids: Raid[]) => { export default (
query: { [index: string]: string },
raidGroups: RaidGroup[]
) => {
// Extract recency filter // Extract recency filter
const recencyParam: number = parseInt(query.recency) const recencyParam: number = parseInt(query.recency)
@ -14,8 +17,9 @@ export default (query: { [index: string]: string }, raids: Raid[]) => {
) )
// Extract raid filter // Extract raid filter
const allRaids = raidGroups.flatMap((group) => group.raids)
const raidParam: string = query.raid const raidParam: string = query.raid
const raid: Raid | undefined = raids.find((r) => r.slug === raidParam) const raid: Raid | undefined = allRaids.find((r) => r.slug === raidParam)
// Return filter object // Return filter object
return { return {

View file

@ -1,16 +0,0 @@
export default (raids: Raid[]) => {
const numGroups = Math.max.apply(
Math,
raids.map((raid) => raid.group)
)
let groupedRaids = []
for (let i = 0; i <= numGroups; i++) {
groupedRaids[i] = raids.filter((raid) => raid.group == i)
}
return {
raids: raids,
sortedRaids: groupedRaids,
}
}