blob: b15238ff0a38f341b3b1c7f0fede8a8a20f3bb8f [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);
31
32 const openModal = () => setIsOpen(true);
33 const openModalDetails = () => setModalDetailsIsOpen(true);
34 const openModalDelete = () => setModalDeleteIsOpen(true);
35
36 const closeModal = () => setIsOpen(false);
37
38 const closeModalDetails = () => setModalDetailsIsOpen(false);
39 const closeModalDelete = () => setModalDeleteIsOpen(false);
40
41 const getContactDetails = () => {
42 const controller = new AbortController();
43 authManager
44 .fetch(`/api/accounts/${accountId}/contacts/${currentContact.id}`, {
45 signal: controller.signal,
46 })
47 .then((res) => res.json())
48 .then((result) => {
49 // setContacts(result);
50 console.log("CONTACT LIST - DETAILS: ", result);
51 })
52 .catch((e) => console.log("ERROR 2", e));
53 };
54
55 const removeContact = () => {};
56
57 const blockContact = () => {};
58
idillon531b6f22022-09-16 14:02:00 -040059
60 useEffect(() => {
61 const controller = new AbortController();
62 authManager
ervinanoh99655642022-09-01 15:11:31 -040063 .fetch(`/api/accounts/${accountId}/conversations`, {
64 signal: controller.signal,
idillon531b6f22022-09-16 14:02:00 -040065 })
ervinanoh99655642022-09-01 15:11:31 -040066 .then((res) => res.json())
idillon531b6f22022-09-16 14:02:00 -040067 .then((result) => {
ervinanoh99655642022-09-01 15:11:31 -040068 setContacts(result);
idillon531b6f22022-09-16 14:02:00 -040069 });
70 return () => controller.abort();
71 }, []);
72
73 return (
74 <div className="rooms-list">
ervinanoh99655642022-09-01 15:11:31 -040075 <Modal
76 isOpen={modalIsOpen}
77 // onAfterOpen={afterOpenModal}
78 onRequestClose={closeModal}
79 style={customStyles}
80 contentLabel="Example Modal"
81 >
82 {/* <h2 ref={(_subtitle) => (subtitle = _subtitle)}>Hello</h2> */}
83 <button onClick={closeModal}>close</button>
84
85 {/* <div>
86 <Person /> Démarrer appel vidéo
87 </div>
88 <br />
89
90 <div>
91 <Person /> Démarrer appel audio
92 </div> */}
93 <br />
94
95 <div
96 onClick={() => {
97 console.log("open dialog Supprimer: ");
98 closeModal();
99 openModalDelete();
100 }}
101 >
102 <Person /> Supprimer contact
103 </div>
104 <br />
105
106 <div
107 onClick={() => {
108 console.log("open dialog BLOCK: ");
109 closeModal();
110 openModalDelete();
111 }}
112 >
113 <Person /> Bloquer le contact
114 </div>
115 <br />
116
117 <div
118 onClick={() => {
119 console.log("open details contact for: ");
120 closeModal();
121 openModalDetails();
122 getContactDetails();
123 }}
124 >
125 <Person /> Détails du contact
126 </div>
127 </Modal>
128 <Modal
129 isOpen={modalDeleteIsOpen}
130 // onAfterOpen={afterOpenModalDetails}
131 onRequestClose={closeModalDelete}
132 style={customStyles}
133 contentLabel="Merci de confirmer"
134 >
135 Voulez vous vraiment supprimer ce contact?
136 <button onClick={closeModalDelete}>Bloquer</button>
137 <button onClick={closeModalDelete}>Annuler</button>
138 </Modal>
139
140 <List>
141 {contacts.map((contact) => (
142 <ListItem
143 button
144 alignItems="flex-start"
145 // selected={isSelected}
146 onClick={() => {
147 setCurrentContact(contact);
148 openModal();
149 }}
150 >
151 <ListItemAvatar>
152 <ConversationAvatar
153 // displayName={conversation.getDisplayNameNoFallback()}
154 // displayName={`${contact.id}`}
155 />
156 </ListItemAvatar>
157 <ListItemText primary={contact.id} secondary={contact.id} />
158 </ListItem>
159 ))}
160 </List>
idillon531b6f22022-09-16 14:02:00 -0400161 </div>
162 );
Larbi Gharibe9af9732021-03-31 15:08:01 +0100163}