From 3494e067682a2d7c1b5a39a647b1cee5e51ca28d Mon Sep 17 00:00:00 2001
From: Giovanni Caruso <gc4117@cloud-vm-36-76.doc.ic.ac.uk>
Date: Wed, 6 Nov 2019 18:06:38 +0000
Subject: [PATCH] Add avatar to user id

---
 public/styles.css |  7 +++++++
 src/app.js        | 23 +++++++++++++++--------
 2 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/public/styles.css b/public/styles.css
index 3efb678..e9f840e 100644
--- a/public/styles.css
+++ b/public/styles.css
@@ -523,3 +523,10 @@ button.selected {
     url("./assets/fonts/martel-v4-latin/martel-v4-latin-regular.svg#Martel")
       format("svg");
 }
+
+.avatar {
+  width: 100px;
+  height: 100px;
+  margin-right: 5px;
+  border-radius: 100px;
+}
diff --git a/src/app.js b/src/app.js
index 473f0df..1561a89 100644
--- a/src/app.js
+++ b/src/app.js
@@ -48,7 +48,7 @@ const onRoomConnect = (room_) => {
     const medium = "/quality-medium.svg"
     const low = "/quality-low.svg"
 
-    const peer = getOrInsertPeerById(humanhash.humanize(id, 2)).children[0]
+    const peer = getOrInsertPeerById(humanhash.humanize(id, 2)).children[2]
     if (quality < 0.33) {
       if (!peer.src.includes(high)) {
         peer.src = high
@@ -65,19 +65,19 @@ const onRoomConnect = (room_) => {
   })
 
   room.addEventListener("weSyncedWithPeer", ({ detail: id }) => {
-    getOrInsertPeerById(humanhash.humanize(id, 2)).children[1].className =
+    getOrInsertPeerById(humanhash.humanize(id, 2)).children[3].className =
       "peer-status upload synced"
     updateOverallStatusIcon()
   })
 
   room.addEventListener("waitingForSyncStep", ({ detail: id }) => {
-    getOrInsertPeerById(humanhash.humanize(id, 2)).children[2].className =
+    getOrInsertPeerById(humanhash.humanize(id, 2)).children[4].className =
       "peer-status download negotiating"
     updateOverallStatusIcon()
   })
 
   room.addEventListener("peerSyncedWithUs", ({ detail: id }) => {
-    getOrInsertPeerById(humanhash.humanize(id, 2)).children[2].className =
+    getOrInsertPeerById(humanhash.humanize(id, 2)).children[4].className =
       "peer-status download synced"
     updateOverallStatusIcon()
   })
@@ -227,13 +227,19 @@ HTML.roomIDElem.addEventListener("keydown", (event) => {
 
 const getOrInsertPeerById = (id) => {
   for (const peerElem of HTML.connectedPeers.children) {
-    const peerId = peerElem.children[3].innerHTML
+    const peerId = peerElem.children[1].innerHTML
     if (peerId == id) {
       return peerElem
     }
   }
 
   const peerElem = document.createElement("li")
+
+  const avatarImage = document.createElement("img")
+  avatarImage.src = "https://robohash.org/" + id + ".png" + "?bgset=bg1"
+  avatarImage.alt = id
+  avatarImage.className = "avatar"
+
   const quality = document.createElement("img")
   quality.src = "/quality-low.svg"
   quality.alt = "Peer quality icon"
@@ -250,10 +256,11 @@ const getOrInsertPeerById = (id) => {
 
   peerId.innerHTML = id
 
+  peerElem.appendChild(avatarImage)
+  peerElem.appendChild(peerId)
   peerElem.appendChild(quality)
   peerElem.appendChild(ourStatus)
   peerElem.appendChild(theirStatus)
-  peerElem.appendChild(peerId)
 
   HTML.connectedPeers.appendChild(peerElem)
 
@@ -263,8 +270,8 @@ const getOrInsertPeerById = (id) => {
 const updateOverallStatusIcon = () => {
   for (const peerElem of HTML.connectedPeers.children) {
     if (
-      !peerElem.children[1].classList.contains("synced") ||
-      !peerElem.children[2].classList.contains("synced")
+      !peerElem.children[3].classList.contains("synced") ||
+      !peerElem.children[4].classList.contains("synced")
     ) {
       HTML.overallStatusIcon.className = "synchronising"
       HTML.overallStatusIconImage.src = "synchronising.svg"
-- 
GitLab