blob: b45f562bb286584a18739431a92da71ef4c84963 [file] [log] [blame]
Adrien Béraudab519ff2022-05-03 15:34:48 -04001import { ListItem, ListItemAvatar, ListItemText } from '@mui/material'
idillon531b6f22022-09-16 14:02:00 -04002import React, { useState } from "react";
Adrien Béraud35e7d7c2021-04-13 03:28:39 -04003import Conversation from '../../../model/Conversation'
Adrien Béraudab519ff2022-05-03 15:34:48 -04004import { useNavigate, useParams } from "react-router-dom"
Adrien Béraud150b4782021-04-21 19:40:59 -04005import ConversationAvatar from './ConversationAvatar'
idillon531b6f22022-09-16 14:02:00 -04006import React from 'react';
7import ReactDOM from 'react-dom';
8import Modal from 'react-modal';
9import { Person } from "@mui/icons-material";
10import authManager from '../AuthManager'
11
12const customStyles = {
13 content: {
14 top: "50%",
15 left: "50%",
16 right: "auto",
17 bottom: "auto",
18 marginRight: "-50%",
19 transform: "translate(-50%, -50%)",
20 },
21};
Adrien Béraud995e8022021-04-08 13:46:51 -040022
Adrien Béraudaf09a462021-04-15 18:02:29 -040023export default function ConversationListItem(props) {
idillon531b6f22022-09-16 14:02:00 -040024 const { conversationId, contactId } = useParams();
25 const conversation = props.conversation;
26 console.log(
27 "XXX",
28 conversation,
29 conversation.id,
30 conversation.getAccountId()
31 );
Adrien Béraud995e8022021-04-08 13:46:51 -040032
idillon531b6f22022-09-16 14:02:00 -040033 const pathId = conversationId || contactId;
34 const isSelected = conversation.getDisplayUri() === pathId;
35 const navigate = useNavigate();
36
37 let subtitle;
38 const [modalIsOpen, setIsOpen] = useState(false);
39 const [modalDetailsIsOpen, setModalDetailsIsOpen] = useState(false);
40 const [modalDeleteIsOpen, setModalDeleteIsOpen] = useState(false);
41
42 const openModal = () => setIsOpen(true);
43 const openModalDetails = () => setModalDetailsIsOpen(true);
44 const openModalDelete = () => setModalDeleteIsOpen(true);
45
46 const closeModal = () => setIsOpen(false);
47
48 const closeModalDetails = () => setModalDetailsIsOpen(false);
49 const closeModalDelete = () => setModalDeleteIsOpen(false);
50
51 function afterOpenModal() {
52 // references are now sync'd and can be accessed.
53 subtitle.style.color = "#f00";
54 }
55
56 const getAccountDetails = (accountId) => {
57 // useEffect(() => {
58 const controller = new AbortController();
59 authManager
60 .fetch(`/api/accounts/${conversation.getAccountId()}`, {
61 method: "GET",
62 headers: {
63 Accept: "application/json",
64 "Content-Type": "application/json",
65 },
66 // body: JSON.stringify(newDetails)
67 // {
68 // uri: conversation.getFirstMember()?.contact?.getUri(),
69 // signal: controller.signal,
70 // },
71 })
72 .then((res) => {
73 console.log("YYY 0", res);
74 res.json();
75 })
76 .then((result) => {
77 console.log("YYY 1", result);
idillon531b6f22022-09-16 14:02:00 -040078 })
79 .catch((e) => console.log("YYY 2", e));
80 // return () => controller.abort()
81 // }, [accountId])
82 };
83
84 const [userName, setUserName] = useState("User name");
85 const [userId, setUserId] = useState("User id");
86 const [codeQr, setVodeQr] = useState("QR");
87 const [isSwarm, setIsSwarm] = useState(true);
88
89 const uri = conversation.getId()
90 ? `conversation/${conversation.getId()}`
91 : `addContact/${conversation.getFirstMember().contact.getUri()}`;
92 if (conversation instanceof Conversation) {
93 return (
94 <div>
95 <button onClick={openModal}>Open Modal</button>
96 <Modal
97 isOpen={modalIsOpen}
98 // onAfterOpen={afterOpenModal}
99 onRequestClose={closeModal}
100 style={customStyles}
101 contentLabel="Example Modal"
102 >
103 {/* <h2 ref={(_subtitle) => (subtitle = _subtitle)}>Hello</h2> */}
104 <button onClick={closeModal}>close</button>
105
106 <div>
107 <Person /> Démarrer appel vidéo
108 </div>
109 <br />
110
111 <div>
112 <Person /> Démarrer appel audio
113 </div>
114 <br />
115
116 <div
117 onClick={() => {
118 console.log("open dialog Supprimer: ");
119 closeModal();
120 openModalDelete();
121 }}
122 >
123 <Person /> Supprimer contact
124 </div>
125 <br />
126
127 <div
128 onClick={() => {
129 console.log("open dialog BLOCK: ");
130 closeModal();
131 openModalDelete();
132 }}
133 >
134 <Person /> Bloquer le contact
135 </div>
136 <br />
137
138 <div
139 onClick={() => {
140 console.log("open details contact for: ");
141 closeModal();
142 openModalDetails();
143 getAccountDetails(conversation.getAccountId());
144 }}
145 >
146 <Person /> Détails de la conversation
147 </div>
148 </Modal>
149
150 <Modal
151 isOpen={modalDetailsIsOpen}
152 // onAfterOpen={afterOpenModalDetails}
153 onRequestClose={closeModalDetails}
154 style={customStyles}
155 contentLabel="Détails contact"
156 >
157 <div>
158 <Person /> {userName}
159 </div>
160 <br />
161
162 <div>Nom d'utilisateur {userName}</div>
163 <br />
164
165 <div>Identifiant {userId}</div>
166 <br />
167
168 <div>Code QR {codeQr}</div>
169 <br />
170
171 <div>est un swarm {isSwarm}</div>
172 <br />
173
174 <button onClick={closeModalDetails}>Fermer</button>
175 </Modal>
176
177 <Modal
178 isOpen={modalDeleteIsOpen}
179 // onAfterOpen={afterOpenModalDetails}
180 onRequestClose={closeModalDelete}
181 style={customStyles}
182 contentLabel="Merci de confirmer"
183 >
184 Voulez vous vraiment supprimer ce contact?
185 <button onClick={closeModalDelete}>Bloquer</button>
186 <button onClick={closeModalDelete}>Annuler</button>
187 </Modal>
188
189 <ListItem
190 button
191 alignItems="flex-start"
192 selected={isSelected}
193 onClick={() =>
194 navigate(`/account/${conversation.getAccountId()}/${uri}`)
195 }
196 >
197 <ListItemAvatar>
198 <ConversationAvatar
199 displayName={conversation.getDisplayNameNoFallback()}
200 />
201 </ListItemAvatar>
202 <ListItemText
203 primary={conversation.getDisplayName()}
204 secondary={conversation.getDisplayUri()}
205 />
206 </ListItem>
207 </div>
208 );
209 } else return null;
Adrien Béraud995e8022021-04-08 13:46:51 -0400210}