blob: 8acaf52742b903615cede16d88fc869d8ad31125 [file] [log] [blame]
idillon-sfl5d174552022-08-23 14:34:24 -04001import { Card, CardActionArea, CardContent, CircularProgress, Typography } from '@mui/material';
simon07b4eb02022-09-29 17:50:26 -04002import { useEffect, useState } from 'react';
Adrien Béraudab519ff2022-05-03 15:34:48 -04003import { useNavigate, useParams } from 'react-router';
simon07b4eb02022-09-29 17:50:26 -04004
Adrien Béraud150b4782021-04-21 19:40:59 -04005import Conversation from '../../../model/Conversation';
simon07b4eb02022-09-29 17:50:26 -04006import authManager from '../AuthManager';
Adrien Béraud150b4782021-04-21 19:40:59 -04007
Adrien Béraud150b4782021-04-21 19:40:59 -04008export default function ConversationsOverviewCard(props) {
simond47ef9e2022-09-28 22:24:28 -04009 const navigate = useNavigate();
10 const accountId = props.accountId || useParams().accountId;
11 const [loaded, setLoaded] = useState(false);
12 const [conversations, setConversations] = useState([]);
Adrien Béraud150b4782021-04-21 19:40:59 -040013
14 useEffect(() => {
simond47ef9e2022-09-28 22:24:28 -040015 const controller = new AbortController();
16 authManager
17 .fetch(`/api/accounts/${accountId}/conversations`, { signal: controller.signal })
18 .then((res) => res.json())
19 .then((result) => {
20 console.log(result);
21 setLoaded(true);
22 setConversations(Object.values(result).map((c) => Conversation.from(accountId, c)));
23 });
idillon28996962022-09-06 17:49:41 -040024 // return () => controller.abort() // crash on React18
simond47ef9e2022-09-28 22:24:28 -040025 }, [accountId]);
Adrien Béraud150b4782021-04-21 19:40:59 -040026
27 return (
simond47ef9e2022-09-28 22:24:28 -040028 <Card onClick={() => navigate(`/account/${accountId}`)}>
Adrien Béraud150b4782021-04-21 19:40:59 -040029 <CardActionArea>
30 <CardContent>
idillonfb2af5b2022-09-16 13:40:08 -040031 <Typography color="textSecondary" gutterBottom>
Adrien Béraud150b4782021-04-21 19:40:59 -040032 Conversations
33 </Typography>
34 <Typography gutterBottom variant="h5" component="h2">
idillon28996962022-09-06 17:49:41 -040035 {loaded ? conversations.length : <CircularProgress size={24} />}
Adrien Béraud150b4782021-04-21 19:40:59 -040036 </Typography>
37 </CardContent>
38 </CardActionArea>
39 </Card>
simond47ef9e2022-09-28 22:24:28 -040040 );
Adrien Béraud150b4782021-04-21 19:40:59 -040041}