2019-06-27 17:07:02 -04:00
|
|
|
// MARK: Definitions
|
|
|
|
import React, { useState, useEffect } from 'react'
|
|
|
|
import axios from 'axios'
|
|
|
|
import history from '../history.js'
|
2019-07-17 00:14:21 -04:00
|
|
|
// import config from '../config.json'
|
2019-06-28 01:20:29 -04:00
|
|
|
import './Member.scss'
|
2019-06-27 17:07:02 -04:00
|
|
|
|
2019-07-17 00:14:21 -04:00
|
|
|
export default function Member({ props }) {
|
2019-06-27 17:07:02 -04:00
|
|
|
// MARK: State
|
2019-07-17 00:14:21 -04:00
|
|
|
let [user, setUser] = useState(null)
|
2019-06-27 17:07:02 -04:00
|
|
|
let [teamNames, setTeamNames] = useState([])
|
|
|
|
|
2019-06-28 01:20:29 -04:00
|
|
|
// MARK: Effects
|
2019-06-27 17:07:02 -04:00
|
|
|
// MARK: - Load user info from Tempo backend on initialization
|
|
|
|
useEffect(() => {
|
|
|
|
let fetchData = async() => {
|
|
|
|
try {
|
2019-07-17 00:14:21 -04:00
|
|
|
let result = await axios.get(props.url)
|
2019-06-27 17:07:02 -04:00
|
|
|
if (result.data) {
|
|
|
|
setUser(result.data)
|
2019-06-27 18:23:50 -04:00
|
|
|
|
2019-06-27 17:07:02 -04:00
|
|
|
result.data.member_teams.map(teamId => {
|
|
|
|
let arr = props.teams.filter(el => el.id === teamId)
|
|
|
|
setTeamNames(t => [...t, arr[0].name])
|
2019-06-27 18:23:50 -04:00
|
|
|
|
|
|
|
return null
|
2019-06-27 17:07:02 -04:00
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch(err) {
|
2019-06-28 01:20:29 -04:00
|
|
|
history.push('/')
|
2019-06-27 17:07:02 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fetchData()
|
|
|
|
}, [props])
|
|
|
|
|
|
|
|
// MARK: Helpers
|
|
|
|
let navBack = () => {
|
|
|
|
history.push('/team')
|
|
|
|
}
|
|
|
|
|
|
|
|
// MARK: Return
|
|
|
|
return (
|
2019-06-28 01:20:29 -04:00
|
|
|
<div className='member'>
|
2019-06-27 17:07:02 -04:00
|
|
|
|
2019-07-17 00:14:21 -04:00
|
|
|
{user === null ? (<div data-testid='loading'>Loading...</div>) : (
|
2019-06-27 17:07:02 -04:00
|
|
|
user !== undefined &&
|
|
|
|
<div>
|
2019-06-28 01:20:29 -04:00
|
|
|
<div className='header'>
|
2019-07-17 00:14:21 -04:00
|
|
|
<span data-testid='resolved'><h1>Member {user.name}</h1></span>
|
2019-06-28 01:20:29 -04:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<div className='back'>
|
|
|
|
<button className='back-btn' onClick={navBack}>{`< Back to team`}</button>
|
|
|
|
</div>
|
2019-06-27 17:07:02 -04:00
|
|
|
|
|
|
|
<h2>Username:</h2>
|
2019-06-28 01:20:29 -04:00
|
|
|
<div className='username'>
|
|
|
|
<p>{user.username}</p>
|
|
|
|
</div>
|
2019-06-27 17:07:02 -04:00
|
|
|
|
|
|
|
<h2>Member of:</h2>
|
|
|
|
<ul className='list'>
|
|
|
|
{teamNames.map((name, index) => (
|
2019-06-28 01:20:29 -04:00
|
|
|
<li className='list-item' key={index}>
|
|
|
|
<div className='username'>
|
|
|
|
{name}
|
|
|
|
</div>
|
2019-06-27 17:07:02 -04:00
|
|
|
</li>
|
|
|
|
))}
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
)}
|
|
|
|
|
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}
|