blob: 140ede2c23980d9cf2c1d9e3d23e9ddda4f32119 [file] [log] [blame]
idillon531b6f22022-09-16 14:02:00 -04001import React from 'react';
2import ReactDOM from 'react-dom';
3import Modal from 'react-modal';
idillon531b6f22022-09-16 14:02:00 -04004import authManager from '../AuthManager'
ervinanoh8e918042022-09-06 10:30:59 -04005import ConversationAvatar from './ConversationAvatar'
6import Conversation from '../../../model/Conversation'
7import React, { useState } from "react";
8import { useNavigate, useParams } from "react-router-dom"
9import { Person } from "@mui/icons-material";
10import { ListItem, ListItemAvatar, ListItemText } from '@mui/material'
11import { Button, Stack, Switch, ThemeProvider, Typography } from "@mui/material"
12import { CloseButton } from './buttons';
13import { AudioCallIcon, BlockContactIcon, ContactDetailsIcon, CrossIcon, MessageIcon, RemoveContactIcon, VideoCallIcon } from './svgIcons';
idillon531b6f22022-09-16 14:02:00 -040014
15const customStyles = {
16 content: {
ervinanoh8e918042022-09-06 10:30:59 -040017 // top: "50%",
18 // left: "50%",
19 // right: "auto",
20 // bottom: "auto",
21 // // marginRight: "-50%",
22 // transform: "translate(-50%, -50%)",
23 // borderRadius: "5px 20px 20px 5px",
24 // boxShadow; ""
25 // fontSize: "12px",
26 // padding: "16px"
27
28 // top: "1364px",
29 left: "94px",
30 width: "164px",
31 height: "262px",
32 background: "#FFFFFF 0% 0% no-repeat padding-box",
33 boxShadow: "3px 3px 7px #00000029",
34 borderRadius: "5px 20px 20px 20px",
35 opacity: "1",
36
37 textAlign: "left",
38 font: "normal normal normal 12px/36px Ubuntu",
39 letterSpacing: "0px",
40 color: "#000000",
idillon531b6f22022-09-16 14:02:00 -040041 },
42};
Adrien Béraud995e8022021-04-08 13:46:51 -040043
ervinanoh8e918042022-09-06 10:30:59 -040044const stackStyles = {
45 flexDirection: "row",
46 marginBottom: "5px",
47 // spacing: "10px",
48 flex: 1,
49 alignItems: "center",
50 // justifyContent: "space-around"
51};
52
Adrien Béraudaf09a462021-04-15 18:02:29 -040053export default function ConversationListItem(props) {
idillon531b6f22022-09-16 14:02:00 -040054 const { conversationId, contactId } = useParams();
55 const conversation = props.conversation;
56 console.log(
57 "XXX",
58 conversation,
59 conversation.id,
60 conversation.getAccountId()
61 );
Adrien Béraud995e8022021-04-08 13:46:51 -040062
idillon531b6f22022-09-16 14:02:00 -040063 const pathId = conversationId || contactId;
64 const isSelected = conversation.getDisplayUri() === pathId;
65 const navigate = useNavigate();
66
67 let subtitle;
68 const [modalIsOpen, setIsOpen] = useState(false);
69 const [modalDetailsIsOpen, setModalDetailsIsOpen] = useState(false);
70 const [modalDeleteIsOpen, setModalDeleteIsOpen] = useState(false);
71
72 const openModal = () => setIsOpen(true);
73 const openModalDetails = () => setModalDetailsIsOpen(true);
74 const openModalDelete = () => setModalDeleteIsOpen(true);
75
76 const closeModal = () => setIsOpen(false);
77
78 const closeModalDetails = () => setModalDetailsIsOpen(false);
79 const closeModalDelete = () => setModalDeleteIsOpen(false);
80
81 function afterOpenModal() {
82 // references are now sync'd and can be accessed.
83 subtitle.style.color = "#f00";
84 }
85
86 const getAccountDetails = (accountId) => {
87 // useEffect(() => {
88 const controller = new AbortController();
89 authManager
90 .fetch(`/api/accounts/${conversation.getAccountId()}`, {
91 method: "GET",
92 headers: {
93 Accept: "application/json",
94 "Content-Type": "application/json",
95 },
96 // body: JSON.stringify(newDetails)
97 // {
98 // uri: conversation.getFirstMember()?.contact?.getUri(),
99 // signal: controller.signal,
100 // },
101 })
102 .then((res) => {
103 console.log("YYY 0", res);
104 res.json();
105 })
106 .then((result) => {
107 console.log("YYY 1", result);
idillon531b6f22022-09-16 14:02:00 -0400108 })
109 .catch((e) => console.log("YYY 2", e));
110 // return () => controller.abort()
111 // }, [accountId])
112 };
113
114 const [userName, setUserName] = useState("User name");
115 const [userId, setUserId] = useState("User id");
116 const [codeQr, setVodeQr] = useState("QR");
117 const [isSwarm, setIsSwarm] = useState(true);
118
119 const uri = conversation.getId()
120 ? `conversation/${conversation.getId()}`
121 : `addContact/${conversation.getFirstMember().contact.getUri()}`;
122 if (conversation instanceof Conversation) {
123 return (
124 <div>
125 <button onClick={openModal}>Open Modal</button>
126 <Modal
127 isOpen={modalIsOpen}
128 // onAfterOpen={afterOpenModal}
129 onRequestClose={closeModal}
130 style={customStyles}
131 contentLabel="Example Modal"
132 >
133 {/* <h2 ref={(_subtitle) => (subtitle = _subtitle)}>Hello</h2> */}
ervinanoh8e918042022-09-06 10:30:59 -0400134 {/* <button onClick={closeModal}>close</button> */}
135 <Stack
idillon531b6f22022-09-16 14:02:00 -0400136 onClick={() => {
ervinanoh8e918042022-09-06 10:30:59 -0400137 navigate(`/account/${conversation.getAccountId()}/${uri}`);
idillon531b6f22022-09-16 14:02:00 -0400138 closeModal();
idillon531b6f22022-09-16 14:02:00 -0400139 }}
ervinanoh8e918042022-09-06 10:30:59 -0400140 {...stackStyles}
idillon531b6f22022-09-16 14:02:00 -0400141 >
ervinanoh8e918042022-09-06 10:30:59 -0400142 <div
143 style={{
144 marginTop: "24px",
145 }}
146 >
147 <MessageIcon />
148 </div>
149 <div>Message</div>
150 </Stack>
151 <Stack {...stackStyles}>
152 <AudioCallIcon />
153 <div>
154 Démarrer appel audio
idillon531b6f22022-09-16 14:02:00 -0400155
ervinanoh8e918042022-09-06 10:30:59 -0400156 </div>
157 </Stack>
idillon531b6f22022-09-16 14:02:00 -0400158
ervinanoh8e918042022-09-06 10:30:59 -0400159 <Stack {...stackStyles}>
160 <VideoCallIcon /> Démarrer appel vidéo
161 </Stack>
162
163 <Stack {...stackStyles}>
164 <CrossIcon /> Fermer la conversation
165 </Stack>
166
167 <Stack
idillon531b6f22022-09-16 14:02:00 -0400168 onClick={() => {
169 console.log("open details contact for: ");
170 closeModal();
171 openModalDetails();
172 getAccountDetails(conversation.getAccountId());
173 }}
ervinanoh8e918042022-09-06 10:30:59 -0400174 {...stackStyles}
idillon531b6f22022-09-16 14:02:00 -0400175 >
ervinanoh8e918042022-09-06 10:30:59 -0400176 <ContactDetailsIcon /> Détails de la conversation
177 </Stack>
178
179 <Stack
180 onClick={() => {
181 console.log("open dialog BLOCK: ");
182 closeModal();
183 openModalDelete();
184 }}
185 {...stackStyles}
186 >
187 <BlockContactIcon /> Bloquer le contact
188 </Stack>
189
190 <Stack
191 onClick={() => {
192 console.log("open dialog Supprimer: ");
193 closeModal();
194 openModalDelete();
195 }}
196 {...stackStyles}
197 >
198 <RemoveContactIcon /> Supprimer contact
199 </Stack>
idillon531b6f22022-09-16 14:02:00 -0400200 </Modal>
201
202 <Modal
203 isOpen={modalDetailsIsOpen}
204 // onAfterOpen={afterOpenModalDetails}
205 onRequestClose={closeModalDetails}
206 style={customStyles}
207 contentLabel="Détails contact"
208 >
209 <div>
210 <Person /> {userName}
211 </div>
212 <br />
213
214 <div>Nom d'utilisateur {userName}</div>
215 <br />
216
217 <div>Identifiant {userId}</div>
218 <br />
219
220 <div>Code QR {codeQr}</div>
221 <br />
222
223 <div>est un swarm {isSwarm}</div>
224 <br />
225
226 <button onClick={closeModalDetails}>Fermer</button>
227 </Modal>
228
229 <Modal
230 isOpen={modalDeleteIsOpen}
231 // onAfterOpen={afterOpenModalDetails}
232 onRequestClose={closeModalDelete}
233 style={customStyles}
234 contentLabel="Merci de confirmer"
235 >
236 Voulez vous vraiment supprimer ce contact?
237 <button onClick={closeModalDelete}>Bloquer</button>
238 <button onClick={closeModalDelete}>Annuler</button>
239 </Modal>
240
241 <ListItem
242 button
243 alignItems="flex-start"
244 selected={isSelected}
ervinanoh8e918042022-09-06 10:30:59 -0400245 // onClick={() =>
246 // navigate(`/account/${conversation.getAccountId()}/${uri}`)
247 // }
idillon531b6f22022-09-16 14:02:00 -0400248 >
249 <ListItemAvatar>
250 <ConversationAvatar
251 displayName={conversation.getDisplayNameNoFallback()}
252 />
253 </ListItemAvatar>
254 <ListItemText
255 primary={conversation.getDisplayName()}
256 secondary={conversation.getDisplayUri()}
257 />
258 </ListItem>
259 </div>
260 );
261 } else return null;
Adrien Béraud995e8022021-04-08 13:46:51 -0400262}