Hoist planet fetch to root and add totals calculation
This commit is contained in:
@@ -4,7 +4,7 @@ import "@fontsource/roboto/400.css";
|
||||
import "@fontsource/roboto/500.css";
|
||||
import "@fontsource/roboto/700.css";
|
||||
import { memo, useCallback, useEffect, useState } from "react";
|
||||
import { AccessToken, CharacterUpdate, Env } from "../types";
|
||||
import { AccessToken, CharacterUpdate, Env, PlanetWithInfo } from "../types";
|
||||
import { MainGrid } from "./components/MainGrid";
|
||||
import { refreshToken } from "@/esi-sso";
|
||||
import {
|
||||
@@ -16,6 +16,7 @@ import {
|
||||
} from "./context/Context";
|
||||
import { useSearchParams } from "next/navigation";
|
||||
import { EvePraisalResult, fetchAllPrices } from "@/eve-praisal";
|
||||
import { getPlanet, getPlanetUniverse, getPlanets } from "@/planets";
|
||||
|
||||
const Home = () => {
|
||||
const [characters, setCharacters] = useState<AccessToken[]>([]);
|
||||
@@ -31,8 +32,6 @@ const Home = () => {
|
||||
const searchParams = useSearchParams();
|
||||
const code = searchParams && searchParams.get("code");
|
||||
|
||||
// Memoize chracter state manipulations
|
||||
|
||||
const deleteCharacter = (character: AccessToken) => {
|
||||
const charactersToSave = characters.filter(
|
||||
(c) => character.character.characterId !== c.character.characterId,
|
||||
@@ -83,6 +82,26 @@ const Home = () => {
|
||||
return [];
|
||||
}, []);
|
||||
|
||||
const initializeCharacterPlanets = (
|
||||
characters: AccessToken[],
|
||||
): Promise<AccessToken[]> =>
|
||||
Promise.all(
|
||||
characters.map(async (c) => {
|
||||
const planets = await getPlanets(c);
|
||||
const planetsWithInfo: PlanetWithInfo[] = await Promise.all(
|
||||
planets.map(async (p) => ({
|
||||
...p,
|
||||
info: await getPlanet(c, p),
|
||||
infoUniverse: await getPlanetUniverse(p),
|
||||
})),
|
||||
);
|
||||
return {
|
||||
...c,
|
||||
planets: planetsWithInfo,
|
||||
};
|
||||
}),
|
||||
);
|
||||
|
||||
const saveCharacters = (characters: AccessToken[]): AccessToken[] => {
|
||||
localStorage.setItem("characters", JSON.stringify(characters));
|
||||
return characters;
|
||||
@@ -148,6 +167,7 @@ const Home = () => {
|
||||
.then(refreshSession)
|
||||
.then(handleCallback)
|
||||
.then(saveCharacters)
|
||||
.then(initializeCharacterPlanets)
|
||||
.then(setCharacters)
|
||||
.then(() => setSessionReady(true));
|
||||
}, []);
|
||||
|
||||
Reference in New Issue
Block a user