blob: 89f857671344cae9979dae339bf7af08c8e88a8d [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 { useNavigate, useParams } from 'react-router';
Adrien Béraud150b4782021-04-21 19:40:59 -04004import authManager from '../AuthManager'
5import Conversation from '../../../model/Conversation';
6
Adrien Béraud150b4782021-04-21 19:40:59 -04007export default function ConversationsOverviewCard(props) {
Adrien Béraudab519ff2022-05-03 15:34:48 -04008 const navigate = useNavigate()
Adrien Béraud150b4782021-04-21 19:40:59 -04009 const accountId = props.accountId || useParams().accountId
idillon28996962022-09-06 17:49:41 -040010 const [loaded, setLoaded] = useState(false)
11 const [conversations, setConversations] = useState([])
Adrien Béraud150b4782021-04-21 19:40:59 -040012
13 useEffect(() => {
14 const controller = new AbortController()
15 authManager.fetch(`/api/accounts/${accountId}/conversations`, { signal: controller.signal })
16 .then(res => res.json())
17 .then(result => {
18 console.log(result)
idillon28996962022-09-06 17:49:41 -040019 setLoaded(true)
20 setConversations(Object.values(result).map(c => Conversation.from(accountId, c)))
Adrien Béraud150b4782021-04-21 19:40:59 -040021 })
idillon28996962022-09-06 17:49:41 -040022 // return () => controller.abort() // crash on React18
Adrien Béraud5e9e19b2021-04-22 01:38:53 -040023 }, [accountId])
Adrien Béraud150b4782021-04-21 19:40:59 -040024
25 return (
Adrien Béraudab519ff2022-05-03 15:34:48 -040026 <Card onClick={() => navigate(`/account/${accountId}`)} >
Adrien Béraud150b4782021-04-21 19:40:59 -040027 <CardActionArea>
28 <CardContent>
idillonfb2af5b2022-09-16 13:40:08 -040029 <Typography color="textSecondary" gutterBottom>
Adrien Béraud150b4782021-04-21 19:40:59 -040030 Conversations
31 </Typography>
32 <Typography gutterBottom variant="h5" component="h2">
idillon28996962022-09-06 17:49:41 -040033 {loaded ? conversations.length : <CircularProgress size={24} />}
Adrien Béraud150b4782021-04-21 19:40:59 -040034 </Typography>
35 </CardContent>
36 </CardActionArea>
37 </Card>
38 )
39}