From 0ffd48212afda09566be4abd0b6a0f122eb8fc9f Mon Sep 17 00:00:00 2001
From: RMidhunSuresh <hi@midhun.dev>
Date: Mon, 23 May 2022 12:11:52 +0530
Subject: [PATCH] Allow configuring avatar from config

- Also don't show the letter in avatar
---
 public/config.json             |  3 ++-
 src/types/IChatterboxConfig.ts |  2 ++
 src/viewmodels/tiles.ts        | 48 ++++++++++++++++++++++++++++++++++
 3 files changed, 52 insertions(+), 1 deletion(-)

diff --git a/public/config.json b/public/config.json
index 38a792e..fad29ef 100644
--- a/public/config.json
+++ b/public/config.json
@@ -8,5 +8,6 @@
     },
     "token": "k9SL1R~GcdbjiFjC",
     "invite_user": "@botuser:matrix.midhun.dev",
-    "encrypt_room": true 
+    "encrypt_room": true,
+    "avatar": "https://i.imgur.com/FD1z37K.png"
 }
diff --git a/src/types/IChatterboxConfig.ts b/src/types/IChatterboxConfig.ts
index 6fab8ee..c555e79 100644
--- a/src/types/IChatterboxConfig.ts
+++ b/src/types/IChatterboxConfig.ts
@@ -13,6 +13,8 @@ export interface IChatterboxConfig {
     header: IHeader;
     // Token needed for token-authenticated registration
     token: string;
+    // URL of the image that should be used as the users avatar
+    avatar: string;
 }
 
 interface IHeader {
diff --git a/src/viewmodels/tiles.ts b/src/viewmodels/tiles.ts
index b91ae02..ec62735 100644
--- a/src/viewmodels/tiles.ts
+++ b/src/viewmodels/tiles.ts
@@ -5,36 +5,84 @@ class ChatterboxTextTile extends TextTile {
     get displayName() {
         return this.isOwn? "me" : super.displayName;
     }
+
+    get avatarLetter() { 
+        return "";
+    }
+
+    avatarUrl() {
+        return this.isOwn? this._options.config["avatar"]: null;
+    }
 }
 
 class ChatterboxImageTile extends ImageTile {
     get displayName() {
         return this.isOwn? "me" : super.displayName;
     }
+    
+    get avatarLetter() { 
+        return "";
+    }
+
+    avatarUrl() {
+        return this.isOwn? this._options.config["avatar"]: null;
+    }
 }
 
 class ChatterboxVideoTile extends VideoTile {
     get displayName() {
         return this.isOwn? "me" : super.displayName;
     }
+    
+    get avatarLetter() { 
+        return "";
+    }
+
+    avatarUrl() {
+        return this.isOwn? this._options.config["avatar"]: null;
+    }
 }
 
 class ChatterboxFileTile extends FileTile {
     get displayName() {
         return this.isOwn? "me" : super.displayName;
     }
+    
+    get avatarLetter() { 
+        return "";
+    }
+
+    avatarUrl() {
+        return this.isOwn? this._options.config["avatar"]: null;
+    }
 }
 
 class ChatterboxLocationTile extends LocationTile {
     get displayName() {
         return this.isOwn? "me" : super.displayName;
     }
+    
+    get avatarLetter() { 
+        return "";
+    }
+
+    avatarUrl() {
+        return this.isOwn? this._options.config["avatar"]: null;
+    }
 }
 
 class ChatterboxRedactedTile extends RedactedTile {
     get displayName() {
         return this.isOwn? "me" : super.displayName;
     }
+    
+    get avatarLetter() { 
+        return "";
+    }
+
+    avatarUrl() {
+        return this._options.config["avatar"];
+    }
 }
 
 // We don't want to show the (long and random) user-id in this announcement! 
-- 
GitLab