Fetch latest version on all pages

This commit is contained in:
Justin Edmund 2023-01-25 22:18:53 -08:00
parent 31f2bd075a
commit fa4c4c5085
4 changed files with 34 additions and 1 deletions

View file

@ -9,10 +9,13 @@ import InfiniteScroll from 'react-infinite-scroll-component'
import { serverSideTranslations } from 'next-i18next/serverSideTranslations' import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import api from '~utils/api' import api from '~utils/api'
import setUserToken from '~utils/setUserToken' import setUserToken from '~utils/setUserToken'
import extractFilters from '~utils/extractFilters' import extractFilters from '~utils/extractFilters'
import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids' import organizeRaids from '~utils/organizeRaids'
import useDidMountEffect from '~utils/useDidMountEffect' import useDidMountEffect from '~utils/useDidMountEffect'
import { appState } from '~utils/appState'
import { elements, allElement } from '~data/elements' import { elements, allElement } from '~data/elements'
import { emptyPaginationObject } from '~utils/emptyStates' import { emptyPaginationObject } from '~utils/emptyStates'
import { printError } from '~utils/reportError' import { printError } from '~utils/reportError'
@ -30,6 +33,7 @@ interface Props {
meta: PaginationObject meta: PaginationObject
raids: Raid[] raids: Raid[]
sortedRaids: Raid[][] sortedRaids: Raid[][]
version: AppUpdate
} }
const ProfileRoute: React.FC<Props> = (props: Props) => { const ProfileRoute: React.FC<Props> = (props: Props) => {
@ -99,6 +103,7 @@ const ProfileRoute: React.FC<Props> = (props: Props) => {
setTotalPages(props.meta.totalPages) setTotalPages(props.meta.totalPages)
setRecordCount(props.meta.count) setRecordCount(props.meta.count)
replaceResults(props.meta.count, props.teams) replaceResults(props.meta.count, props.teams)
appState.version = props.version
} }
setCurrentPage(1) setCurrentPage(1)
}, []) }, [])
@ -352,6 +357,9 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
setUserToken(req, res) setUserToken(req, res)
try { try {
// Fetch latest version
const version = await fetchLatestVersion()
// Fetch and organize raids // Fetch and organize raids
let { raids, sortedRaids } = await api.endpoints.raids let { raids, sortedRaids } = await api.endpoints.raids
.getAll() .getAll()
@ -393,6 +401,7 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
meta: meta, meta: meta,
raids: raids, raids: raids,
sortedRaids: sortedRaids, sortedRaids: sortedRaids,
version: version,
...(await serverSideTranslations(locale, ['common', 'roadmap'])), ...(await serverSideTranslations(locale, ['common', 'roadmap'])),
// Will be passed to the page component as props // Will be passed to the page component as props
}, },

View file

@ -6,6 +6,7 @@ import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import Party from '~components/Party' import Party from '~components/Party'
import api from '~utils/api' import api from '~utils/api'
import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids' import organizeRaids from '~utils/organizeRaids'
import setUserToken from '~utils/setUserToken' import setUserToken from '~utils/setUserToken'
import { appState } from '~utils/appState' import { appState } from '~utils/appState'
@ -21,6 +22,7 @@ interface Props {
raids: Raid[] raids: Raid[]
sortedRaids: Raid[][] sortedRaids: Raid[][]
weaponKeys: GroupedWeaponKeys weaponKeys: GroupedWeaponKeys
version: AppUpdate
} }
const NewRoute: React.FC<Props> = (props: Props) => { const NewRoute: React.FC<Props> = (props: Props) => {
@ -41,6 +43,7 @@ const NewRoute: React.FC<Props> = (props: Props) => {
appState.jobs = props.jobs appState.jobs = props.jobs
appState.jobSkills = props.jobSkills appState.jobSkills = props.jobSkills
appState.weaponKeys = props.weaponKeys appState.weaponKeys = props.weaponKeys
appState.version = props.version
} }
return ( return (
@ -84,6 +87,10 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
setUserToken(req, res) setUserToken(req, res)
try { try {
// Fetch latest version
const version = await fetchLatestVersion()
// Fetch and organize raids
let { raids, sortedRaids } = await api.endpoints.raids let { raids, sortedRaids } = await api.endpoints.raids
.getAll() .getAll()
.then((response) => organizeRaids(response.data)) .then((response) => organizeRaids(response.data))
@ -105,6 +112,7 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
raids: raids, raids: raids,
sortedRaids: sortedRaids, sortedRaids: sortedRaids,
weaponKeys: weaponKeys, weaponKeys: weaponKeys,
version: version,
...(await serverSideTranslations(locale, ['common', 'roadmap'])), ...(await serverSideTranslations(locale, ['common', 'roadmap'])),
// Will be passed to the page component as props // Will be passed to the page component as props
}, },

View file

@ -12,8 +12,10 @@ import clonedeep from 'lodash.clonedeep'
import api from '~utils/api' import api from '~utils/api'
import setUserToken from '~utils/setUserToken' import setUserToken from '~utils/setUserToken'
import extractFilters from '~utils/extractFilters' import extractFilters from '~utils/extractFilters'
import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids' import organizeRaids from '~utils/organizeRaids'
import useDidMountEffect from '~utils/useDidMountEffect' import useDidMountEffect from '~utils/useDidMountEffect'
import { appState } from '~utils/appState'
import { elements, allElement } from '~data/elements' import { elements, allElement } from '~data/elements'
import { emptyPaginationObject } from '~utils/emptyStates' import { emptyPaginationObject } from '~utils/emptyStates'
import { printError } from '~utils/reportError' import { printError } from '~utils/reportError'
@ -30,6 +32,7 @@ interface Props {
meta: PaginationObject meta: PaginationObject
raids: Raid[] raids: Raid[]
sortedRaids: Raid[][] sortedRaids: Raid[][]
version: AppUpdate
} }
const SavedRoute: React.FC<Props> = (props: Props) => { const SavedRoute: React.FC<Props> = (props: Props) => {
@ -98,6 +101,7 @@ const SavedRoute: React.FC<Props> = (props: Props) => {
setTotalPages(props.meta.totalPages) setTotalPages(props.meta.totalPages)
setRecordCount(props.meta.count) setRecordCount(props.meta.count)
replaceResults(props.meta.count, props.teams) replaceResults(props.meta.count, props.teams)
appState.version = props.version
} }
setCurrentPage(1) setCurrentPage(1)
}, []) }, [])
@ -354,6 +358,9 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
setUserToken(req, res) setUserToken(req, res)
try { try {
// Fetch latest version
const version = await fetchLatestVersion()
// Fetch and organize raids // Fetch and organize raids
let { raids, sortedRaids } = await api.endpoints.raids let { raids, sortedRaids } = await api.endpoints.raids
.getAll() .getAll()
@ -384,6 +391,7 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
meta: meta, meta: meta,
raids: raids, raids: raids,
sortedRaids: sortedRaids, sortedRaids: sortedRaids,
version: version,
...(await serverSideTranslations(locale, ['common', 'roadmap'])), ...(await serverSideTranslations(locale, ['common', 'roadmap'])),
// Will be passed to the page component as props // Will be passed to the page component as props
}, },

View file

@ -12,8 +12,10 @@ import clonedeep from 'lodash.clonedeep'
import api from '~utils/api' import api from '~utils/api'
import setUserToken from '~utils/setUserToken' import setUserToken from '~utils/setUserToken'
import extractFilters from '~utils/extractFilters' import extractFilters from '~utils/extractFilters'
import fetchLatestVersion from '~utils/fetchLatestVersion'
import organizeRaids from '~utils/organizeRaids' import organizeRaids from '~utils/organizeRaids'
import useDidMountEffect from '~utils/useDidMountEffect' import useDidMountEffect from '~utils/useDidMountEffect'
import { appState } from '~utils/appState'
import { elements, allElement } from '~data/elements' import { elements, allElement } from '~data/elements'
import { emptyPaginationObject } from '~utils/emptyStates' import { emptyPaginationObject } from '~utils/emptyStates'
import { printError } from '~utils/reportError' import { printError } from '~utils/reportError'
@ -29,6 +31,7 @@ interface Props {
teams?: Party[] teams?: Party[]
meta: PaginationObject meta: PaginationObject
sortedRaids: Raid[][] sortedRaids: Raid[][]
version: AppUpdate
} }
const TeamsRoute: React.FC<Props> = (props: Props) => { const TeamsRoute: React.FC<Props> = (props: Props) => {
@ -97,6 +100,7 @@ const TeamsRoute: React.FC<Props> = (props: Props) => {
setTotalPages(props.meta.totalPages) setTotalPages(props.meta.totalPages)
setRecordCount(props.meta.count) setRecordCount(props.meta.count)
replaceResults(props.meta.count, props.teams) replaceResults(props.meta.count, props.teams)
appState.version = props.version
} }
setCurrentPage(1) setCurrentPage(1)
}, []) }, [])
@ -364,8 +368,11 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
// Set headers for server-side requests // Set headers for server-side requests
setUserToken(req, res) setUserToken(req, res)
// Fetch and organize raids
try { try {
// Fetch latest version
const version = await fetchLatestVersion()
// Fetch and organize raids
let { raids, sortedRaids } = await api.endpoints.raids let { raids, sortedRaids } = await api.endpoints.raids
.getAll() .getAll()
.then((response) => organizeRaids(response.data)) .then((response) => organizeRaids(response.data))
@ -395,6 +402,7 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex
meta: meta, meta: meta,
raids: raids, raids: raids,
sortedRaids: sortedRaids, sortedRaids: sortedRaids,
version: version,
...(await serverSideTranslations(locale, ['common', 'roadmap'])), ...(await serverSideTranslations(locale, ['common', 'roadmap'])),
// Will be passed to the page component as props // Will be passed to the page component as props
}, },