blob: 26736e964104b0d306cecc08f7ca506d4d19b03e [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);
78 // setState({ loaded: true, account: Account.from(result) });
79 })
80 .catch((e) => console.log("YYY 2", e));
81 // return () => controller.abort()
82 // }, [accountId])
83 };
84
85 const [userName, setUserName] = useState("User name");
86 const [userId, setUserId] = useState("User id");
87 const [codeQr, setVodeQr] = useState("QR");
88 const [isSwarm, setIsSwarm] = useState(true);
89
90 const uri = conversation.getId()
91 ? `conversation/${conversation.getId()}`
92 : `addContact/${conversation.getFirstMember().contact.getUri()}`;
93 if (conversation instanceof Conversation) {
94 return (
95 <div>
96 <button onClick={openModal}>Open Modal</button>
97 <Modal
98 isOpen={modalIsOpen}
99 // onAfterOpen={afterOpenModal}
100 onRequestClose={closeModal}
101 style={customStyles}
102 contentLabel="Example Modal"
103 >
104 {/* <h2 ref={(_subtitle) => (subtitle = _subtitle)}>Hello</h2> */}
105 <button onClick={closeModal}>close</button>
106
107 <div>
108 <Person /> Démarrer appel vidéo
109 </div>
110 <br />
111
112 <div>
113 <Person /> Démarrer appel audio
114 </div>
115 <br />
116
117 <div
118 onClick={() => {
119 console.log("open dialog Supprimer: ");
120 closeModal();
121 openModalDelete();
122 }}
123 >
124 <Person /> Supprimer contact
125 </div>
126 <br />
127
128 <div
129 onClick={() => {
130 console.log("open dialog BLOCK: ");
131 closeModal();
132 openModalDelete();
133 }}
134 >
135 <Person /> Bloquer le contact
136 </div>
137 <br />
138
139 <div
140 onClick={() => {
141 console.log("open details contact for: ");
142 closeModal();
143 openModalDetails();
144 getAccountDetails(conversation.getAccountId());
145 }}
146 >
147 <Person /> Détails de la conversation
148 </div>
149 </Modal>
150
151 <Modal
152 isOpen={modalDetailsIsOpen}
153 // onAfterOpen={afterOpenModalDetails}
154 onRequestClose={closeModalDetails}
155 style={customStyles}
156 contentLabel="Détails contact"
157 >
158 <div>
159 <Person /> {userName}
160 </div>
161 <br />
162
163 <div>Nom d'utilisateur {userName}</div>
164 <br />
165
166 <div>Identifiant {userId}</div>
167 <br />
168
169 <div>Code QR {codeQr}</div>
170 <br />
171
172 <div>est un swarm {isSwarm}</div>
173 <br />
174
175 <button onClick={closeModalDetails}>Fermer</button>
176 </Modal>
177
178 <Modal
179 isOpen={modalDeleteIsOpen}
180 // onAfterOpen={afterOpenModalDetails}
181 onRequestClose={closeModalDelete}
182 style={customStyles}
183 contentLabel="Merci de confirmer"
184 >
185 Voulez vous vraiment supprimer ce contact?
186 <button onClick={closeModalDelete}>Bloquer</button>
187 <button onClick={closeModalDelete}>Annuler</button>
188 </Modal>
189
190 <ListItem
191 button
192 alignItems="flex-start"
193 selected={isSelected}
194 onClick={() =>
195 navigate(`/account/${conversation.getAccountId()}/${uri}`)
196 }
197 >
198 <ListItemAvatar>
199 <ConversationAvatar
200 displayName={conversation.getDisplayNameNoFallback()}
201 />
202 </ListItemAvatar>
203 <ListItemText
204 primary={conversation.getDisplayName()}
205 secondary={conversation.getDisplayUri()}
206 />
207 </ListItem>
208 </div>
209 );
210 } else return null;
Adrien Béraud995e8022021-04-08 13:46:51 -0400211}