blob: 96e03f64144ee1c4cbb77940791a77282668202f [file] [log] [blame]
Adrien Béraud150b4782021-04-21 19:40:59 -04001import React, { useEffect, useState } from 'react';
idillon-sfl5d174552022-08-23 14:34:24 -04002import { Card, CardActionArea, CardContent, CircularProgress, Typography } from '@mui/material';
Adrien Béraudab519ff2022-05-03 15:34:48 -04003import makeStyles from '@mui/styles/makeStyles';
4import { useNavigate, useParams } from 'react-router';
Adrien Béraud150b4782021-04-21 19:40:59 -04005import 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()
Adrien Béraudab519ff2022-05-03 15:34:48 -040018 const navigate = useNavigate()
Adrien Béraud150b4782021-04-21 19:40:59 -040019 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()
Adrien Béraud5e9e19b2021-04-22 01:38:53 -040031 }, [accountId])
Adrien Béraud150b4782021-04-21 19:40:59 -040032
33 return (
Adrien Béraudab519ff2022-05-03 15:34:48 -040034 <Card onClick={() => navigate(`/account/${accountId}`)} >
Adrien Béraud150b4782021-04-21 19:40:59 -040035 <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}