From dd479ec289df049b3e85fa01f63f88cbd31e79a0 Mon Sep 17 00:00:00 2001
From: Rodrigo Pedroso <>
Date: Wed, 26 Jun 2019 14:36:57 -0400
Subject: [PATCH] Fetching users
---
src/components/Team.jsx | 4 +--
src/views/Home.jsx | 67 +++++++++++++++++++++++++++++++++--------
src/views/User.jsx | 38 +++++++++++++++++++++++
3 files changed, 94 insertions(+), 15 deletions(-)
create mode 100644 src/views/User.jsx
diff --git a/src/components/Team.jsx b/src/components/Team.jsx
index dff65c5..063477e 100644
--- a/src/components/Team.jsx
+++ b/src/components/Team.jsx
@@ -1,12 +1,12 @@
import React from 'react'
-export default function Team({ teams, select }) {
+export default function Team({ teams, users, selectTeam, selectUser }) {
return (
{teams.map(team => (
-
-
diff --git a/src/views/Home.jsx b/src/views/Home.jsx
index 43528e0..86cb3f0 100644
--- a/src/views/Home.jsx
+++ b/src/views/Home.jsx
@@ -7,19 +7,21 @@ export default function Home() {
// MARK: State
let [loading, setLoading] = useState(true)
let [loadingDetails, setLoadingDetails] = useState(true)
+ let [loadingUsers, setLoadingUsers] = useState(true)
let [teams, setTeams] = useState([])
- let [members, setMembers] = useState([])
+ let [users, setUsers] = useState([])
let [teamDetails, setTeamDetails] = useState([])
// MARK: Effects
- // MAKR: - Load teams from Tempo backend on initialization
+ // MARK: - Load teams from Tempo backend on initialization
useEffect(() => {
let fetchData = async() => {
setLoading(true)
try {
let result = await axios(config.api + '/team/')
if (result.data) {
+ console.log('teams fetched')
setTeams(result.data)
}
setLoading(false)
@@ -33,45 +35,84 @@ export default function Home() {
fetchData()
}, [])
- // MARK: Callbacks
-
- let select = (selected) => {
- console.log('Selected ' + selected)
- }
-
// MARK: - Load teams' details
useEffect(() => {
+ let fetched = 0
+
teams.map(team => {
let fetchData = async() => {
try {
setLoadingDetails(true)
let result = await axios(config.api + '/team/' + team.id)
if (result.data) {
+ fetched++
setTeamDetails(t => [...t, result.data])
+ if (fetched === teams.length) {
+ setLoadingDetails(false)
+ }
}
- setLoadingDetails(false)
}
catch(err) {
- setLoadingDetails(false)
+ fetched++
+ if (fetched === teams.length) {
+ setLoadingDetails(false)
+ }
console.log('Fetch data error: ' + err)
}
}
fetchData()
+
+ return null
})
}, [teams])
+ // MARK: - Load users
+ useEffect(() => {
+ let fetchData = async() => {
+ setLoadingUsers(true)
+ try {
+ let result = await axios(config.api + '/user/')
+ if (result.data) {
+ setUsers(result.data)
+ }
+ setLoadingUsers(false)
+ }
+ catch(err) {
+ setLoadingUsers(false)
+ console.log('Fetch data error: ' + err)
+ }
+ }
+
+ fetchData()
+ }, [])
+
+ // MARK: Callbacks
+
+ let selectTeam = (selectedTeam) => {
+ console.log('Selected team ' + selectedTeam)
+ }
+
+ let selectUser = (selectedUser) => {
+ console.log('Selected user ' + selectedUser)
+ }
+
// MARK: Return
return (
Tempo
- {loading ? (
Loading...
) : (
+ {loading || loadingUsers ? (
Loading...
) : (
teams !== undefined &&
-
+
)}
- {loadingDetails ? (
Loading...
) : (
+ {loadingDetails || loadingUsers ? (
Loading...
) : (
teamDetails !== undefined &&
diff --git a/src/views/User.jsx b/src/views/User.jsx
new file mode 100644
index 0000000..4e49c46
--- /dev/null
+++ b/src/views/User.jsx
@@ -0,0 +1,38 @@
+import React, { useState, useEffect } from 'react'
+import axios from 'axios'
+import config from '../config.json'
+
+export default function User({ userId }) {
+ // MARK: State
+ let [loading, setLoading] = useState(true)
+ let [user, setUser] = useState([])
+
+ // MARK: Effect
+
+ // MARK: - Load user info from Tempo backend on initialization
+ useEffect(() => {
+ let fetchData = async() => {
+ setLoading(true)
+ try {
+ let result = await axios(config.api + '/user/' + userId)
+ if (result.data) {
+ setUser(result.data)
+ }
+ setLoading(false)
+ }
+ catch(err) {
+ setLoading(false)
+ console.log('Fetch data error: ' + err)
+ }
+ }
+
+ fetchData()
+ }, [])
+
+ // MARK: Return
+ return (
+
+
User { userId }
+
+ )
+}