import * as React from "react"; import { getTasks, getStats } from "./habiticaAPI" import TodoItem from "./TodoItem" let username = "" let credentials = "" class App extends React.Component { constructor(props: any) { super(props) username = this.props.username credentials = this.props.apiToken this.state = { isLoaded: false, user_data: { profile: { name: "", }, stats: { hp: 0, lvl: 0, } }, tasks: [] //gave an error if the the tasks thing was string so better keep it an array for .map to work :) } } componentDidMount() { // getTasks(username, credentials) // .then(res => res.json()) // .then( // result => { // this.setState({ // isLoaded: true, // tasks: result.data // }) // }, // (error) => { // this.setState({ // isLoaded: true, // error // }) // } // ) getStats(username, credentials) .then(res => res.json()) .then( result => { console.log(result) //yup this prints out correctly! since the promise is handled by .then this.setState({ isLoaded: true, user_data: result, tasks: result.tasks.todos }) }, (error) => { this.setState({ isLoaded: true, error }) } ) } render(){ const { error, isLoaded, tasks } = this.state; const user_data = this.state.user_data if (error) { return
Error: {error.message}
; } else if (!isLoaded) { return
Loading...
; } else { const listItems = tasks.map((tasks: any) =>
); return (

{user_data.profile.name}

{"\n"}
HP: {user_data.stats.hp}
XP: {user_data.stats.lvl}
{"\n"}
); } } } export default App