blob: ec04cefa87c6749b4efaf181eb02324c7fb0d544 [file] [log] [blame]
idillon531b6f22022-09-16 14:02:00 -04001import List from "@mui/material/List";
2import authManager from "../AuthManager";
ervinanoh99655642022-09-01 15:11:31 -04003import ConversationAvatar from "./ConversationAvatar";
4import Modal from 'react-modal';
idillon531b6f22022-09-16 14:02:00 -04005import React, { useState, useEffect } from "react";
ervinanoh99655642022-09-01 15:11:31 -04006import { Person } from "@mui/icons-material";
idillon531b6f22022-09-16 14:02:00 -04007import { useAppDispatch, useAppSelector } from "../../redux/hooks";
ervinanoh99655642022-09-01 15:11:31 -04008import { ListItem, ListItemAvatar, ListItemText } from "@mui/material";
idillon531b6f22022-09-16 14:02:00 -04009
ervinanoh99655642022-09-01 15:11:31 -040010const customStyles = {
11 content: {
12 top: "50%",
13 left: "50%",
14 right: "auto",
15 bottom: "auto",
16 marginRight: "-50%",
17 transform: "translate(-50%, -50%)",
18 },
19};
Larbi Gharibe9af9732021-03-31 15:08:01 +010020
Adrien Béraud86986032021-04-25 12:04:53 -040021export default function ContactList() {
ervinanoh99655642022-09-01 15:11:31 -040022 const { accountId, accountObject } = useAppSelector((state) => state.app);
idillon531b6f22022-09-16 14:02:00 -040023 const dispatch = useAppDispatch();
Adrien Béraud995e8022021-04-08 13:46:51 -040024
idillon531b6f22022-09-16 14:02:00 -040025 const [contacts, setContacts] = useState([]);
ervinanoh99655642022-09-01 15:11:31 -040026 const [currentContact, setCurrentContact] = useState({});
27
28 const [modalIsOpen, setIsOpen] = useState(false);
29 const [modalDetailsIsOpen, setModalDetailsIsOpen] = useState(false);
30 const [modalDeleteIsOpen, setModalDeleteIsOpen] = useState(false);
ervinanoh8e918042022-09-06 10:30:59 -040031 const [blockOrRemove, setBlockOrRemove] = useState(true);
ervinanoh99655642022-09-01 15:11:31 -040032
33 const openModal = () => setIsOpen(true);
34 const openModalDetails = () => setModalDetailsIsOpen(true);
35 const openModalDelete = () => setModalDeleteIsOpen(true);
36
37 const closeModal = () => setIsOpen(false);
38
39 const closeModalDetails = () => setModalDetailsIsOpen(false);
40 const closeModalDelete = () => setModalDeleteIsOpen(false);
41
42 const getContactDetails = () => {
43 const controller = new AbortController();
44 authManager
ervinanoh8e918042022-09-06 10:30:59 -040045 .fetch(`/api/accounts/${accountId}/contacts/details/${currentContact.id}`, {
ervinanoh99655642022-09-01 15:11:31 -040046 signal: controller.signal,
47 })
48 .then((res) => res.json())
49 .then((result) => {
ervinanoh99655642022-09-01 15:11:31 -040050 console.log("CONTACT LIST - DETAILS: ", result);
51 })
ervinanoh8e918042022-09-06 10:30:59 -040052 .catch((e) => console.log("ERROR GET CONTACT DETAILS: ", e));
ervinanoh99655642022-09-01 15:11:31 -040053 };
54
ervinanoh8e918042022-09-06 10:30:59 -040055 const removeOrBlock = (typeOfRemove) => {
56 console.log("REMOVE");
57 setBlockOrRemove(false);
58 const controller = new AbortController();
59 authManager
60 .fetch(
61 `/api/accounts/${accountId}/contacts/${typeOfRemove}/${currentContact.id}`,
62 {
63 signal: controller.signal,
64 method: "DELETE",
65 }
66 )
67 .then((res) => res.json())
68 .then((result) => {})
69 .catch((e) => console.log(`ERROR ${typeOfRemove}ing CONTACT : `, e));
70 closeModalDelete();
71 };
idillon531b6f22022-09-16 14:02:00 -040072
73 useEffect(() => {
74 const controller = new AbortController();
75 authManager
ervinanoh8e918042022-09-06 10:30:59 -040076 .fetch(`/api/accounts/${accountId}/contacts`, {
ervinanoh99655642022-09-01 15:11:31 -040077 signal: controller.signal,
idillon531b6f22022-09-16 14:02:00 -040078 })
ervinanoh99655642022-09-01 15:11:31 -040079 .then((res) => res.json())
idillon531b6f22022-09-16 14:02:00 -040080 .then((result) => {
ervinanoh8e918042022-09-06 10:30:59 -040081 console.log("CONTACTS: ", result)
ervinanoh99655642022-09-01 15:11:31 -040082 setContacts(result);
idillon531b6f22022-09-16 14:02:00 -040083 });
84 return () => controller.abort();
ervinanoh8e918042022-09-06 10:30:59 -040085 }, [blockOrRemove]);
idillon531b6f22022-09-16 14:02:00 -040086
87 return (
88 <div className="rooms-list">
ervinanoh99655642022-09-01 15:11:31 -040089 <Modal
90 isOpen={modalIsOpen}
91 // onAfterOpen={afterOpenModal}
92 onRequestClose={closeModal}
93 style={customStyles}
94 contentLabel="Example Modal"
95 >
96 {/* <h2 ref={(_subtitle) => (subtitle = _subtitle)}>Hello</h2> */}
97 <button onClick={closeModal}>close</button>
98
99 {/* <div>
100 <Person /> Démarrer appel vidéo
101 </div>
102 <br />
103
104 <div>
105 <Person /> Démarrer appel audio
106 </div> */}
107 <br />
108
109 <div
110 onClick={() => {
111 console.log("open dialog Supprimer: ");
ervinanoh8e918042022-09-06 10:30:59 -0400112 setBlockOrRemove(false);
ervinanoh99655642022-09-01 15:11:31 -0400113 closeModal();
114 openModalDelete();
115 }}
116 >
117 <Person /> Supprimer contact
118 </div>
119 <br />
120
121 <div
122 onClick={() => {
123 console.log("open dialog BLOCK: ");
ervinanoh8e918042022-09-06 10:30:59 -0400124 setBlockOrRemove(true);
ervinanoh99655642022-09-01 15:11:31 -0400125 closeModal();
126 openModalDelete();
127 }}
128 >
129 <Person /> Bloquer le contact
130 </div>
131 <br />
132
133 <div
134 onClick={() => {
135 console.log("open details contact for: ");
136 closeModal();
137 openModalDetails();
138 getContactDetails();
139 }}
140 >
141 <Person /> Détails du contact
142 </div>
143 </Modal>
144 <Modal
145 isOpen={modalDeleteIsOpen}
146 // onAfterOpen={afterOpenModalDetails}
147 onRequestClose={closeModalDelete}
148 style={customStyles}
149 contentLabel="Merci de confirmer"
150 >
ervinanoh8e918042022-09-06 10:30:59 -0400151 Voulez vous vraiment {blockOrRemove ? "bloquer" : "supprimer"} ce
152 contact?
153 <br />
154 {blockOrRemove ? (
155 <button onClick={() => removeOrBlock("block")}>Bloquer</button>
156 ) : (
157 <button onClick={() => removeOrBlock("remove")}>Supprimer</button>
158 )}
ervinanoh99655642022-09-01 15:11:31 -0400159 <button onClick={closeModalDelete}>Annuler</button>
160 </Modal>
161
162 <List>
ervinanoh8e918042022-09-06 10:30:59 -0400163 {contacts?.map((contact) => (
ervinanoh99655642022-09-01 15:11:31 -0400164 <ListItem
165 button
166 alignItems="flex-start"
ervinanoh8e918042022-09-06 10:30:59 -0400167 key={contact.id}
ervinanoh99655642022-09-01 15:11:31 -0400168 // selected={isSelected}
169 onClick={() => {
170 setCurrentContact(contact);
171 openModal();
172 }}
173 >
174 <ListItemAvatar>
175 <ConversationAvatar
176 // displayName={conversation.getDisplayNameNoFallback()}
177 // displayName={`${contact.id}`}
178 />
179 </ListItemAvatar>
180 <ListItemText primary={contact.id} secondary={contact.id} />
181 </ListItem>
182 ))}
183 </List>
idillon531b6f22022-09-16 14:02:00 -0400184 </div>
185 );
Larbi Gharibe9af9732021-03-31 15:08:01 +0100186}