blob: 01b2d7bfc29892c18b08c52d377fa1e56da24601 [file] [log] [blame]
Adrien BĂ©raud150b4782021-04-21 19:40:59 -04001import React, { useEffect, useState } from 'react';
2import { Box, Card, CardActionArea, CardContent, CircularProgress, Typography } from '@material-ui/core';
3import { makeStyles } from '@material-ui/core/styles';
4import { useHistory, useParams } from 'react-router';
5import authManager from '../AuthManager'
6import Conversation from '../../../model/Conversation';
7
8const useStyles = makeStyles({
9 title: {
10 fontSize: 14,
11 }, pos: {
12 fontSize: 14,
13 }
14});
15
16export default function ConversationsOverviewCard(props) {
17 const classes = useStyles()
18 const history = useHistory()
19 const accountId = props.accountId || useParams().accountId
20 const [state, setState] = useState({ loaded: false })
21
22 useEffect(() => {
23 const controller = new AbortController()
24 authManager.fetch(`/api/accounts/${accountId}/conversations`, { signal: controller.signal })
25 .then(res => res.json())
26 .then(result => {
27 console.log(result)
28 setState({ loaded: true, conversations: Object.values(result).map(c => Conversation.from(accountId, c)) })
29 })
30 return () => controller.abort()
31 }, [])
32
33 return (
34 <Card onClick={() => history.push(`/account/${accountId}`)} >
35 <CardActionArea>
36 <CardContent>
37 <Typography className={classes.title} color="textSecondary" gutterBottom>
38 Conversations
39 </Typography>
40 <Typography gutterBottom variant="h5" component="h2">
41 {state.loaded ? state.conversations.length : <CircularProgress size={24} />}
42 </Typography>
43 </CardContent>
44 </CardActionArea>
45 </Card>
46 )
47}