use first letter to draw tiles for avatars

Daniel Gultsch created

some users or conferences might have emojis in their names

Change summary

src/main/java/eu/siacs/conversations/services/AvatarService.java | 11 +
1 file changed, 10 insertions(+), 1 deletion(-)

Detailed changes

src/main/java/eu/siacs/conversations/services/AvatarService.java 🔗

@@ -370,7 +370,7 @@ public class AvatarService implements OnAdvancedStreamFeaturesLoaded {
 
 	private boolean drawTile(Canvas canvas, String name, int left, int top, int right, int bottom) {
 		if (name != null) {
-			final String letter = name.isEmpty() ? "X" : name.substring(0, 1);
+			final String letter = getFirstLetter(name);
 			final int color = UIHelper.getColorForName(name);
 			drawTile(canvas, letter, color, left, top, right, bottom);
 			return true;
@@ -378,6 +378,15 @@ public class AvatarService implements OnAdvancedStreamFeaturesLoaded {
 		return false;
 	}
 
+	private static String getFirstLetter(String name) {
+		for(Character c : name.toCharArray()) {
+			if (Character.isLetterOrDigit(c)) {
+				return c.toString();
+			}
+		}
+		return "X";
+	}
+
 	private boolean drawTile(Canvas canvas, Uri uri, int left, int top, int right, int bottom) {
 		if (uri != null) {
 			Bitmap bitmap = mXmppConnectionService.getFileBackend()