blob: d8e6addea7a45f899a581d98ee8404a7099671ad [file] [log] [blame]
simon07b4eb02022-09-29 17:50:26 -04001import { Person } from '@mui/icons-material';
2import { ListItem, ListItemAvatar, ListItemText } from '@mui/material';
simond47ef9e2022-09-28 22:24:28 -04003import List from '@mui/material/List';
simon07b4eb02022-09-29 17:50:26 -04004import { useEffect, useState } from 'react';
5import Modal from 'react-modal';
6
7import { useAppDispatch, useAppSelector } from '../../redux/hooks';
simond47ef9e2022-09-28 22:24:28 -04008import authManager from '../AuthManager';
9import ConversationAvatar from './ConversationAvatar';
idillon531b6f22022-09-16 14:02:00 -040010
ervinanoh99655642022-09-01 15:11:31 -040011const customStyles = {
12 content: {
simond47ef9e2022-09-28 22:24:28 -040013 top: '50%',
14 left: '50%',
15 right: 'auto',
16 bottom: 'auto',
17 marginRight: '-50%',
18 transform: 'translate(-50%, -50%)',
ervinanoh99655642022-09-01 15:11:31 -040019 },
20};
Larbi Gharibe9af9732021-03-31 15:08:01 +010021
Adrien Béraud86986032021-04-25 12:04:53 -040022export default function ContactList() {
ervinanoh99655642022-09-01 15:11:31 -040023 const { accountId, accountObject } = useAppSelector((state) => state.app);
idillon531b6f22022-09-16 14:02:00 -040024 const dispatch = useAppDispatch();
Adrien Béraud995e8022021-04-08 13:46:51 -040025
idillon531b6f22022-09-16 14:02:00 -040026 const [contacts, setContacts] = useState([]);
ervinanoh99655642022-09-01 15:11:31 -040027 const [currentContact, setCurrentContact] = useState({});
28
29 const [modalIsOpen, setIsOpen] = useState(false);
30 const [modalDetailsIsOpen, setModalDetailsIsOpen] = useState(false);
31 const [modalDeleteIsOpen, setModalDeleteIsOpen] = useState(false);
ervinanoh8e918042022-09-06 10:30:59 -040032 const [blockOrRemove, setBlockOrRemove] = useState(true);
ervinanoh99655642022-09-01 15:11:31 -040033
34 const openModal = () => setIsOpen(true);
35 const openModalDetails = () => setModalDetailsIsOpen(true);
36 const openModalDelete = () => setModalDeleteIsOpen(true);
37
38 const closeModal = () => setIsOpen(false);
39
40 const closeModalDetails = () => setModalDetailsIsOpen(false);
41 const closeModalDelete = () => setModalDeleteIsOpen(false);
42
43 const getContactDetails = () => {
44 const controller = new AbortController();
45 authManager
ervinanoh8e918042022-09-06 10:30:59 -040046 .fetch(`/api/accounts/${accountId}/contacts/details/${currentContact.id}`, {
ervinanoh99655642022-09-01 15:11:31 -040047 signal: controller.signal,
48 })
49 .then((res) => res.json())
50 .then((result) => {
simond47ef9e2022-09-28 22:24:28 -040051 console.log('CONTACT LIST - DETAILS: ', result);
ervinanoh99655642022-09-01 15:11:31 -040052 })
simond47ef9e2022-09-28 22:24:28 -040053 .catch((e) => console.log('ERROR GET CONTACT DETAILS: ', e));
ervinanoh99655642022-09-01 15:11:31 -040054 };
55
ervinanoh8e918042022-09-06 10:30:59 -040056 const removeOrBlock = (typeOfRemove) => {
simond47ef9e2022-09-28 22:24:28 -040057 console.log('REMOVE');
ervinanoh8e918042022-09-06 10:30:59 -040058 setBlockOrRemove(false);
59 const controller = new AbortController();
60 authManager
simond47ef9e2022-09-28 22:24:28 -040061 .fetch(`/api/accounts/${accountId}/contacts/${typeOfRemove}/${currentContact.id}`, {
62 signal: controller.signal,
63 method: 'DELETE',
64 })
ervinanoh8e918042022-09-06 10:30:59 -040065 .then((res) => res.json())
66 .then((result) => {})
67 .catch((e) => console.log(`ERROR ${typeOfRemove}ing CONTACT : `, e));
68 closeModalDelete();
69 };
idillon531b6f22022-09-16 14:02:00 -040070
71 useEffect(() => {
72 const controller = new AbortController();
73 authManager
ervinanoh8e918042022-09-06 10:30:59 -040074 .fetch(`/api/accounts/${accountId}/contacts`, {
ervinanoh99655642022-09-01 15:11:31 -040075 signal: controller.signal,
idillon531b6f22022-09-16 14:02:00 -040076 })
ervinanoh99655642022-09-01 15:11:31 -040077 .then((res) => res.json())
idillon531b6f22022-09-16 14:02:00 -040078 .then((result) => {
simond47ef9e2022-09-28 22:24:28 -040079 console.log('CONTACTS: ', result);
ervinanoh99655642022-09-01 15:11:31 -040080 setContacts(result);
idillon531b6f22022-09-16 14:02:00 -040081 });
82 return () => controller.abort();
ervinanoh8e918042022-09-06 10:30:59 -040083 }, [blockOrRemove]);
idillon531b6f22022-09-16 14:02:00 -040084
85 return (
86 <div className="rooms-list">
ervinanoh99655642022-09-01 15:11:31 -040087 <Modal
88 isOpen={modalIsOpen}
89 // onAfterOpen={afterOpenModal}
90 onRequestClose={closeModal}
91 style={customStyles}
92 contentLabel="Example Modal"
93 >
94 {/* <h2 ref={(_subtitle) => (subtitle = _subtitle)}>Hello</h2> */}
95 <button onClick={closeModal}>close</button>
96
97 {/* <div>
98 <Person /> Démarrer appel vidéo
99 </div>
100 <br />
101
102 <div>
103 <Person /> Démarrer appel audio
104 </div> */}
105 <br />
106
107 <div
108 onClick={() => {
simond47ef9e2022-09-28 22:24:28 -0400109 console.log('open dialog Supprimer: ');
ervinanoh8e918042022-09-06 10:30:59 -0400110 setBlockOrRemove(false);
ervinanoh99655642022-09-01 15:11:31 -0400111 closeModal();
112 openModalDelete();
113 }}
114 >
115 <Person /> Supprimer contact
116 </div>
117 <br />
118
119 <div
120 onClick={() => {
simond47ef9e2022-09-28 22:24:28 -0400121 console.log('open dialog BLOCK: ');
ervinanoh8e918042022-09-06 10:30:59 -0400122 setBlockOrRemove(true);
ervinanoh99655642022-09-01 15:11:31 -0400123 closeModal();
124 openModalDelete();
125 }}
126 >
127 <Person /> Bloquer le contact
128 </div>
129 <br />
130
131 <div
132 onClick={() => {
simond47ef9e2022-09-28 22:24:28 -0400133 console.log('open details contact for: ');
ervinanoh99655642022-09-01 15:11:31 -0400134 closeModal();
135 openModalDetails();
136 getContactDetails();
137 }}
138 >
139 <Person /> Détails du contact
140 </div>
141 </Modal>
142 <Modal
143 isOpen={modalDeleteIsOpen}
144 // onAfterOpen={afterOpenModalDetails}
145 onRequestClose={closeModalDelete}
146 style={customStyles}
147 contentLabel="Merci de confirmer"
148 >
simond47ef9e2022-09-28 22:24:28 -0400149 Voulez vous vraiment {blockOrRemove ? 'bloquer' : 'supprimer'} ce contact?
ervinanoh8e918042022-09-06 10:30:59 -0400150 <br />
151 {blockOrRemove ? (
simond47ef9e2022-09-28 22:24:28 -0400152 <button onClick={() => removeOrBlock('block')}>Bloquer</button>
ervinanoh8e918042022-09-06 10:30:59 -0400153 ) : (
simond47ef9e2022-09-28 22:24:28 -0400154 <button onClick={() => removeOrBlock('remove')}>Supprimer</button>
ervinanoh8e918042022-09-06 10:30:59 -0400155 )}
ervinanoh99655642022-09-01 15:11:31 -0400156 <button onClick={closeModalDelete}>Annuler</button>
157 </Modal>
158
159 <List>
ervinanoh8e918042022-09-06 10:30:59 -0400160 {contacts?.map((contact) => (
ervinanoh99655642022-09-01 15:11:31 -0400161 <ListItem
162 button
163 alignItems="flex-start"
ervinanoh8e918042022-09-06 10:30:59 -0400164 key={contact.id}
ervinanoh99655642022-09-01 15:11:31 -0400165 // selected={isSelected}
166 onClick={() => {
167 setCurrentContact(contact);
168 openModal();
169 }}
170 >
171 <ListItemAvatar>
172 <ConversationAvatar
173 // displayName={conversation.getDisplayNameNoFallback()}
174 // displayName={`${contact.id}`}
175 />
176 </ListItemAvatar>
177 <ListItemText primary={contact.id} secondary={contact.id} />
178 </ListItem>
179 ))}
180 </List>
idillon531b6f22022-09-16 14:02:00 -0400181 </div>
182 );
Larbi Gharibe9af9732021-03-31 15:08:01 +0100183}