mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-05-24 05:35:00 +00:00
feature: supports get avatar from avatars.githubusercontent.com
* move all images to `src/Resources/Images` folder
This commit is contained in:
parent
1729a64788
commit
cd9196bb84
42 changed files with 71 additions and 49 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue