blob: 914d697fe26eaf6bbc399d96bbabdd18758b8484 [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
10 const [state, setState] = useState({ loaded: false })
11
12 useEffect(() => {
13 const controller = new AbortController()
14 authManager.fetch(`/api/accounts/${accountId}/conversations`, { signal: controller.signal })
15 .then(res => res.json())
16 .then(result => {
17 console.log(result)
18 setState({ loaded: true, conversations: Object.values(result).map(c => Conversation.from(accountId, c)) })
19 })
20 return () => controller.abort()
Adrien Béraud5e9e19b2021-04-22 01:38:53 -040021 }, [accountId])
Adrien Béraud150b4782021-04-21 19:40:59 -040022
23 return (
Adrien Béraudab519ff2022-05-03 15:34:48 -040024 <Card onClick={() => navigate(`/account/${accountId}`)} >
Adrien Béraud150b4782021-04-21 19:40:59 -040025 <CardActionArea>
26 <CardContent>
idillonfb2af5b2022-09-16 13:40:08 -040027 <Typography color="textSecondary" gutterBottom>
Adrien Béraud150b4782021-04-21 19:40:59 -040028 Conversations
29 </Typography>
30 <Typography gutterBottom variant="h5" component="h2">
31 {state.loaded ? state.conversations.length : <CircularProgress size={24} />}
32 </Typography>
33 </CardContent>
34 </CardActionArea>
35 </Card>
36 )
37}