blob: 09885cac2079ca1ae2af1978bbcb657d6829d025 [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())
ervinanoh8e918042022-09-06 10:30:59 -040066 .catch((e) => console.log(`ERROR ${typeOfRemove}ing CONTACT : `, e));
67 closeModalDelete();
68 };
idillon531b6f22022-09-16 14:02:00 -040069
70 useEffect(() => {
71 const controller = new AbortController();
72 authManager
ervinanoh8e918042022-09-06 10:30:59 -040073 .fetch(`/api/accounts/${accountId}/contacts`, {
ervinanoh99655642022-09-01 15:11:31 -040074 signal: controller.signal,
idillon531b6f22022-09-16 14:02:00 -040075 })
ervinanoh99655642022-09-01 15:11:31 -040076 .then((res) => res.json())
idillon531b6f22022-09-16 14:02:00 -040077 .then((result) => {
simond47ef9e2022-09-28 22:24:28 -040078 console.log('CONTACTS: ', result);
ervinanoh99655642022-09-01 15:11:31 -040079 setContacts(result);
idillon531b6f22022-09-16 14:02:00 -040080 });
81 return () => controller.abort();
simon80b7b3b2022-09-28 17:50:10 -040082 }, [accountId, blockOrRemove]);
idillon531b6f22022-09-16 14:02:00 -040083
84 return (
85 <div className="rooms-list">
ervinanoh99655642022-09-01 15:11:31 -040086 <Modal
87 isOpen={modalIsOpen}
88 // onAfterOpen={afterOpenModal}
89 onRequestClose={closeModal}
90 style={customStyles}
91 contentLabel="Example Modal"
92 >
93 {/* <h2 ref={(_subtitle) => (subtitle = _subtitle)}>Hello</h2> */}
94 <button onClick={closeModal}>close</button>
95
96 {/* <div>
97 <Person /> Démarrer appel vidéo
98 </div>
99 <br />
100
101 <div>
102 <Person /> Démarrer appel audio
103 </div> */}
104 <br />
105
106 <div
107 onClick={() => {
simond47ef9e2022-09-28 22:24:28 -0400108 console.log('open dialog Supprimer: ');
ervinanoh8e918042022-09-06 10:30:59 -0400109 setBlockOrRemove(false);
ervinanoh99655642022-09-01 15:11:31 -0400110 closeModal();
111 openModalDelete();
112 }}
113 >
114 <Person /> Supprimer contact
115 </div>
116 <br />
117
118 <div
119 onClick={() => {
simond47ef9e2022-09-28 22:24:28 -0400120 console.log('open dialog BLOCK: ');
ervinanoh8e918042022-09-06 10:30:59 -0400121 setBlockOrRemove(true);
ervinanoh99655642022-09-01 15:11:31 -0400122 closeModal();
123 openModalDelete();
124 }}
125 >
126 <Person /> Bloquer le contact
127 </div>
128 <br />
129
130 <div
131 onClick={() => {
simond47ef9e2022-09-28 22:24:28 -0400132 console.log('open details contact for: ');
ervinanoh99655642022-09-01 15:11:31 -0400133 closeModal();
134 openModalDetails();
135 getContactDetails();
136 }}
137 >
138 <Person /> Détails du contact
139 </div>
140 </Modal>
141 <Modal
142 isOpen={modalDeleteIsOpen}
143 // onAfterOpen={afterOpenModalDetails}
144 onRequestClose={closeModalDelete}
145 style={customStyles}
146 contentLabel="Merci de confirmer"
147 >
simond47ef9e2022-09-28 22:24:28 -0400148 Voulez vous vraiment {blockOrRemove ? 'bloquer' : 'supprimer'} ce contact?
ervinanoh8e918042022-09-06 10:30:59 -0400149 <br />
150 {blockOrRemove ? (
simond47ef9e2022-09-28 22:24:28 -0400151 <button onClick={() => removeOrBlock('block')}>Bloquer</button>
ervinanoh8e918042022-09-06 10:30:59 -0400152 ) : (
simond47ef9e2022-09-28 22:24:28 -0400153 <button onClick={() => removeOrBlock('remove')}>Supprimer</button>
ervinanoh8e918042022-09-06 10:30:59 -0400154 )}
ervinanoh99655642022-09-01 15:11:31 -0400155 <button onClick={closeModalDelete}>Annuler</button>
156 </Modal>
157
158 <List>
ervinanoh8e918042022-09-06 10:30:59 -0400159 {contacts?.map((contact) => (
ervinanoh99655642022-09-01 15:11:31 -0400160 <ListItem
161 button
162 alignItems="flex-start"
ervinanoh8e918042022-09-06 10:30:59 -0400163 key={contact.id}
ervinanoh99655642022-09-01 15:11:31 -0400164 // selected={isSelected}
165 onClick={() => {
166 setCurrentContact(contact);
167 openModal();
168 }}
169 >
170 <ListItemAvatar>
171 <ConversationAvatar
172 // displayName={conversation.getDisplayNameNoFallback()}
173 // displayName={`${contact.id}`}
174 />
175 </ListItemAvatar>
176 <ListItemText primary={contact.id} secondary={contact.id} />
177 </ListItem>
178 ))}
179 </List>
idillon531b6f22022-09-16 14:02:00 -0400180 </div>
181 );
Larbi Gharibe9af9732021-03-31 15:08:01 +0100182}