import React from "react"; import { useState } from "react"; import PropTypes from "prop-types"; import Stats from "./stats"; import Quests from "./quests"; import QuestGen from "./quest"; import AddQuest from "./addquest"; export default (player, quest, sideQuest) => { function MainApp(props) { const [ playerStats, setPlayerStats ] = useState(null); const [ quests, setQuests ] = useState(null); const [ sideQuests, setSideQuests ] = useState(null); // Possible values of display.type // main: The main display with stats, buttons for list/add // quests: Shows all quests // sideQuests: Shows all side quests // quest: Shows a specific quest // sideQuest: Shows a specific side quest // addQuest: Add quest screen // addSideQuest: Add side quest screen const [ display, setDisplay ] = useState({ type: "main"}); const token = localStorage.getItem("token"); const Quest = QuestGen(quest, sideQuest); if (playerStats === null) player.player(token).then((res) => setPlayerStats(res)); if (quests === null) quest.getQuests(token).then((res) => setQuests(res)); if (sideQuests === null) sideQuest.getSideQuests(token).then((res) => setSideQuests(res)); let body; switch(display.type) { case "main": body = (<>

Quests

Side Quests

); break; case "quests": body = ( ); break; case "sideQuests": body = ( ); break; case "quest": case "sideQuest": body = ( ); break; case "addQuest": case "addSideQuest": body = ( ); } return (

Questable

{body}
); } MainApp.propTypes = { setLoggedIn: PropTypes.func, }; return MainApp; };