feature: supports get avatar from avatars.githubusercontent.com

* move all images to `src/Resources/Images` folder
This commit is contained in:
leo 2024-08-02 18:06:45 +08:00
parent 1729a64788
commit cd9196bb84
No known key found for this signature in database
42 changed files with 71 additions and 49 deletions

View file

@ -1,7 +1,5 @@
using System;
using System.Globalization;
using System.Security.Cryptography;
using System.Text;
using Avalonia;
using Avalonia.Controls;
@ -42,7 +40,7 @@ namespace SourceGit.Views
{
if (User != null)
{
Models.AvatarManager.Request(_emailMD5, true);
Models.AvatarManager.Request(User.Email, true);
InvalidateVisual();
}
};
@ -59,7 +57,7 @@ namespace SourceGit.Views
return;
var corner = (float)Math.Max(2, Bounds.Width / 16);
var img = Models.AvatarManager.Request(_emailMD5);
var img = Models.AvatarManager.Request(User.Email, false);
if (img != null)
{
var rect = new Rect(0, 0, Bounds.Width, Bounds.Height);
@ -74,9 +72,9 @@ namespace SourceGit.Views
}
}
public void OnAvatarResourceChanged(string md5)
public void OnAvatarResourceChanged(string email)
{
if (_emailMD5 == md5)
if (User.Email.Equals(email, StringComparison.Ordinal))
{
InvalidateVisual();
}
@ -97,10 +95,7 @@ namespace SourceGit.Views
private static void OnUserPropertyChanged(Avatar avatar, AvaloniaPropertyChangedEventArgs e)
{
if (avatar.User == null)
{
avatar._emailMD5 = null;
return;
}
var placeholder = string.IsNullOrWhiteSpace(avatar.User.Name) ? "?" : avatar.User.Name.Substring(0, 1);
var chars = placeholder.ToCharArray();
@ -108,15 +103,6 @@ namespace SourceGit.Views
foreach (var c in chars)
sum += Math.Abs(c);
var lowered = avatar.User.Email.ToLower(CultureInfo.CurrentCulture).Trim();
var hash = MD5.Create().ComputeHash(Encoding.Default.GetBytes(lowered));
var builder = new StringBuilder();
foreach (var c in hash)
builder.Append(c.ToString("x2"));
var md5 = builder.ToString();
if (avatar._emailMD5 == null || avatar._emailMD5 != md5)
avatar._emailMD5 = md5;
avatar._fallbackBrush = new LinearGradientBrush
{
GradientStops = FALLBACK_GRADIENTS[sum % FALLBACK_GRADIENTS.Length],
@ -139,6 +125,5 @@ namespace SourceGit.Views
private FormattedText _fallbackLabel = null;
private LinearGradientBrush _fallbackBrush = null;
private string _emailMD5 = null;
}
}