Skip to content

Commit f2de7a0

Browse files
committed
refactor: new avatar fallback string generator
1 parent a3b0fec commit f2de7a0

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

src/Views/Avatar.cs

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Globalization;
34

45
using Avalonia;
@@ -92,8 +93,8 @@ private static void OnUserPropertyChanged(Avatar avatar, AvaloniaPropertyChanged
9293
if (avatar.User == null)
9394
return;
9495

95-
var placeholder = string.IsNullOrWhiteSpace(avatar.User.Name) ? "?" : avatar.User.Name.Substring(0, 1);
96-
var chars = placeholder.ToCharArray();
96+
var fallback = GetFallbackString(avatar.User.Name);
97+
var chars = fallback.ToCharArray();
9798
var sum = 0;
9899
foreach (var c in chars)
99100
sum += Math.Abs(c);
@@ -105,11 +106,9 @@ private static void OnUserPropertyChanged(Avatar avatar, AvaloniaPropertyChanged
105106
EndPoint = new RelativePoint(0, 1, RelativeUnit.Relative),
106107
};
107108

108-
var fontFamily = avatar.FindResource("Fonts.Monospace") as FontFamily;
109-
var typeface = new Typeface(fontFamily);
110-
109+
var typeface = new Typeface("fonts:SourceGit#JetBrains Mono");
111110
avatar._fallbackLabel = new FormattedText(
112-
placeholder,
111+
fallback,
113112
CultureInfo.CurrentCulture,
114113
FlowDirection.LeftToRight,
115114
typeface,
@@ -119,6 +118,23 @@ private static void OnUserPropertyChanged(Avatar avatar, AvaloniaPropertyChanged
119118
avatar.InvalidateVisual();
120119
}
121120

121+
private static string GetFallbackString(string name)
122+
{
123+
if (string.IsNullOrWhiteSpace(name))
124+
return "?";
125+
126+
var parts = name.Split(' ', StringSplitOptions.RemoveEmptyEntries);
127+
var chars = new List<char>();
128+
foreach (var part in parts)
129+
chars.Add(part[0]);
130+
131+
if (chars.Count >= 2)
132+
return string.Format("{0}{1}", chars[0], chars[^1]);
133+
if (chars.Count == 1)
134+
return string.Format("{0}", chars[0]);
135+
return name.Substring(0, 1);
136+
}
137+
122138
private FormattedText _fallbackLabel = null;
123139
private LinearGradientBrush _fallbackBrush = null;
124140
}

0 commit comments

Comments
 (0)