Skip to content

Commit f7c10d0

Browse files
committed
feature: supports to load avatar from local image and save it to disk
Signed-off-by: leo <[email protected]>
1 parent 25e272f commit f7c10d0

File tree

14 files changed

+145
-31
lines changed

14 files changed

+145
-31
lines changed

src/Models/AvatarManager.cs

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace SourceGit.Models
1717
{
1818
public interface IAvatarHost
1919
{
20-
void OnAvatarResourceChanged(string email);
20+
void OnAvatarResourceChanged(string email, Bitmap image);
2121
}
2222

2323
public partial class AvatarManager
@@ -119,7 +119,7 @@ public void Start()
119119
Dispatcher.UIThread.InvokeAsync(() =>
120120
{
121121
_resources[email] = img;
122-
NotifyResourceChanged(email);
122+
NotifyResourceChanged(email, img);
123123
});
124124
}
125125

@@ -151,7 +151,7 @@ public Bitmap Request(string email, bool forceRefetch)
151151
if (File.Exists(localFile))
152152
File.Delete(localFile);
153153

154-
NotifyResourceChanged(email);
154+
NotifyResourceChanged(email, null);
155155
}
156156
else
157157
{
@@ -186,6 +186,37 @@ public Bitmap Request(string email, bool forceRefetch)
186186
return null;
187187
}
188188

189+
public void SetFromLocal(string email, string file)
190+
{
191+
try
192+
{
193+
Bitmap image = null;
194+
195+
using (var stream = File.OpenRead(file))
196+
{
197+
image = Bitmap.DecodeToWidth(stream, 128);
198+
}
199+
200+
if (image == null)
201+
return;
202+
203+
if (_resources.ContainsKey(email))
204+
_resources[email] = image;
205+
else
206+
_resources.Add(email, image);
207+
208+
_requesting.Remove(email);
209+
210+
var store = Path.Combine(_storePath, GetEmailHash(email));
211+
File.Copy(file, store, true);
212+
NotifyResourceChanged(email, image);
213+
}
214+
catch
215+
{
216+
// ignore
217+
}
218+
}
219+
189220
private void LoadDefaultAvatar(string key, string img)
190221
{
191222
var icon = AssetLoader.Open(new Uri($"avares://SourceGit/Resources/Images/{img}", UriKind.RelativeOrAbsolute));
@@ -203,12 +234,10 @@ private string GetEmailHash(string email)
203234
return builder.ToString();
204235
}
205236

206-
private void NotifyResourceChanged(string email)
237+
private void NotifyResourceChanged(string email, Bitmap image)
207238
{
208239
foreach (var avatar in _avatars)
209-
{
210-
avatar.OnAvatarResourceChanged(email);
211-
}
240+
avatar.OnAvatarResourceChanged(email, image);
212241
}
213242
}
214243
}

src/Resources/Locales/de_DE.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<x:String x:Key="Text.AssumeUnchanged" xml:space="preserve">ALS UNVERÄNDERT ANGENOMMENE DATEIEN</x:String>
4040
<x:String x:Key="Text.AssumeUnchanged.Empty" xml:space="preserve">KEINE ALS UNVERÄNDERT ANGENOMMENEN DATEIEN</x:String>
4141
<x:String x:Key="Text.AssumeUnchanged.Remove" xml:space="preserve">ENTFERNEN</x:String>
42+
<x:String x:Key="Text.Avatar.Refetch" xml:space="preserve">Aktualisieren</x:String>
4243
<x:String x:Key="Text.BinaryNotSupported" xml:space="preserve">BINÄRE DATEI NICHT UNTERSTÜTZT!!!</x:String>
4344
<x:String x:Key="Text.Bisect">Bisect</x:String>
4445
<x:String x:Key="Text.Bisect.Abort">Abbrechen</x:String>
@@ -550,7 +551,6 @@
550551
<x:String x:Key="Text.Rebase.AutoStash" xml:space="preserve">Lokale Änderungen stashen &amp; wieder anwenden</x:String>
551552
<x:String x:Key="Text.Rebase.On" xml:space="preserve">Auf:</x:String>
552553
<x:String x:Key="Text.Rebase.Target" xml:space="preserve">Rebase:</x:String>
553-
<x:String x:Key="Text.RefetchAvatar" xml:space="preserve">Aktualisieren</x:String>
554554
<x:String x:Key="Text.Remote.AddTitle" xml:space="preserve">Remote hinzufügen</x:String>
555555
<x:String x:Key="Text.Remote.EditTitle" xml:space="preserve">Remote bearbeiten</x:String>
556556
<x:String x:Key="Text.Remote.Name" xml:space="preserve">Name:</x:String>

src/Resources/Locales/en_US.axaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
<x:String x:Key="Text.AssumeUnchanged" xml:space="preserve">FILES ASSUME UNCHANGED</x:String>
3636
<x:String x:Key="Text.AssumeUnchanged.Empty" xml:space="preserve">NO FILES ASSUMED AS UNCHANGED</x:String>
3737
<x:String x:Key="Text.AssumeUnchanged.Remove" xml:space="preserve">REMOVE</x:String>
38+
<x:String x:Key="Text.Avatar.Load" xml:space="preserve">Load Image...</x:String>
39+
<x:String x:Key="Text.Avatar.Refetch" xml:space="preserve">Refresh</x:String>
3840
<x:String x:Key="Text.BinaryNotSupported" xml:space="preserve">BINARY FILE NOT SUPPORTED!!!</x:String>
3941
<x:String x:Key="Text.Bisect">Bisect</x:String>
4042
<x:String x:Key="Text.Bisect.Abort">Abort</x:String>
@@ -561,7 +563,6 @@
561563
<x:String x:Key="Text.Rebase.AutoStash" xml:space="preserve">Stash &amp; reapply local changes</x:String>
562564
<x:String x:Key="Text.Rebase.On" xml:space="preserve">On:</x:String>
563565
<x:String x:Key="Text.Rebase.Target" xml:space="preserve">Rebase:</x:String>
564-
<x:String x:Key="Text.RefetchAvatar" xml:space="preserve">Refresh</x:String>
565566
<x:String x:Key="Text.Remote.AddTitle" xml:space="preserve">Add Remote</x:String>
566567
<x:String x:Key="Text.Remote.EditTitle" xml:space="preserve">Edit Remote</x:String>
567568
<x:String x:Key="Text.Remote.Name" xml:space="preserve">Name:</x:String>

src/Resources/Locales/es_ES.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<x:String x:Key="Text.AssumeUnchanged" xml:space="preserve">ARCHIVOS ASUMIDOS COMO SIN CAMBIOS</x:String>
4040
<x:String x:Key="Text.AssumeUnchanged.Empty" xml:space="preserve">NO HAY ARCHIVOS ASUMIDOS COMO SIN CAMBIOS</x:String>
4141
<x:String x:Key="Text.AssumeUnchanged.Remove" xml:space="preserve">REMOVER</x:String>
42+
<x:String x:Key="Text.Avatar.Refetch" xml:space="preserve">Refrescar</x:String>
4243
<x:String x:Key="Text.BinaryNotSupported" xml:space="preserve">¡ARCHIVO BINARIO NO SOPORTADO!</x:String>
4344
<x:String x:Key="Text.Bisect">Bisect</x:String>
4445
<x:String x:Key="Text.Bisect.Abort">Abortar</x:String>
@@ -565,7 +566,6 @@
565566
<x:String x:Key="Text.Rebase.AutoStash" xml:space="preserve">Stash &amp; reaplicar cambios locales</x:String>
566567
<x:String x:Key="Text.Rebase.On" xml:space="preserve">En:</x:String>
567568
<x:String x:Key="Text.Rebase.Target" xml:space="preserve">Rebase:</x:String>
568-
<x:String x:Key="Text.RefetchAvatar" xml:space="preserve">Refrescar</x:String>
569569
<x:String x:Key="Text.Remote.AddTitle" xml:space="preserve">Añadir Remoto</x:String>
570570
<x:String x:Key="Text.Remote.EditTitle" xml:space="preserve">Editar Remoto</x:String>
571571
<x:String x:Key="Text.Remote.Name" xml:space="preserve">Nombre:</x:String>

src/Resources/Locales/fr_FR.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<x:String x:Key="Text.AssumeUnchanged" xml:space="preserve">FICHIERS PRÉSUMÉS INCHANGÉS</x:String>
4040
<x:String x:Key="Text.AssumeUnchanged.Empty" xml:space="preserve">PAS DE FICHIERS PRÉSUMÉS INCHANGÉS</x:String>
4141
<x:String x:Key="Text.AssumeUnchanged.Remove" xml:space="preserve">SUPPRIMER</x:String>
42+
<x:String x:Key="Text.Avatar.Refetch" xml:space="preserve">Rafraîchir</x:String>
4243
<x:String x:Key="Text.BinaryNotSupported" xml:space="preserve">FICHIER BINAIRE NON SUPPORTÉ !!!</x:String>
4344
<x:String x:Key="Text.Blame" xml:space="preserve">Blâme</x:String>
4445
<x:String x:Key="Text.BlameTypeNotSupported" xml:space="preserve">LE BLÂME SUR CE FICHIER N'EST PAS SUPPORTÉ!!!</x:String>
@@ -532,7 +533,6 @@
532533
<x:String x:Key="Text.Rebase.AutoStash" xml:space="preserve">Stash &amp; réappliquer changements locaux</x:String>
533534
<x:String x:Key="Text.Rebase.On" xml:space="preserve">Sur :</x:String>
534535
<x:String x:Key="Text.Rebase.Target" xml:space="preserve">Rebase :</x:String>
535-
<x:String x:Key="Text.RefetchAvatar" xml:space="preserve">Rafraîchir</x:String>
536536
<x:String x:Key="Text.Remote.AddTitle" xml:space="preserve">Ajouter dépôt distant</x:String>
537537
<x:String x:Key="Text.Remote.EditTitle" xml:space="preserve">Modifier dépôt distant</x:String>
538538
<x:String x:Key="Text.Remote.Name" xml:space="preserve">Nom :</x:String>

src/Resources/Locales/it_IT.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<x:String x:Key="Text.AssumeUnchanged" xml:space="preserve">FILE ASSUNTI COME INVARIATI</x:String>
4040
<x:String x:Key="Text.AssumeUnchanged.Empty" xml:space="preserve">NESSUN FILE ASSUNTO COME INVARIATO</x:String>
4141
<x:String x:Key="Text.AssumeUnchanged.Remove" xml:space="preserve">RIMUOVI</x:String>
42+
<x:String x:Key="Text.Avatar.Refetch" xml:space="preserve">Aggiorna</x:String>
4243
<x:String x:Key="Text.BinaryNotSupported" xml:space="preserve">FILE BINARIO NON SUPPORTATO!!!</x:String>
4344
<x:String x:Key="Text.Bisect" xml:space="preserve">Biseca</x:String>
4445
<x:String x:Key="Text.Bisect.Abort" xml:space="preserve">Annulla</x:String>
@@ -553,7 +554,6 @@
553554
<x:String x:Key="Text.Rebase.AutoStash" xml:space="preserve">Stasha e Riapplica modifiche locali</x:String>
554555
<x:String x:Key="Text.Rebase.On" xml:space="preserve">Su:</x:String>
555556
<x:String x:Key="Text.Rebase.Target" xml:space="preserve">Riallinea:</x:String>
556-
<x:String x:Key="Text.RefetchAvatar" xml:space="preserve">Aggiorna</x:String>
557557
<x:String x:Key="Text.Remote.AddTitle" xml:space="preserve">Aggiungi Remoto</x:String>
558558
<x:String x:Key="Text.Remote.EditTitle" xml:space="preserve">Modifica Remoto</x:String>
559559
<x:String x:Key="Text.Remote.Name" xml:space="preserve">Nome:</x:String>

src/Resources/Locales/ja_JP.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<x:String x:Key="Text.AssumeUnchanged" xml:space="preserve">変更されていないとみなされるファイル</x:String>
4040
<x:String x:Key="Text.AssumeUnchanged.Empty" xml:space="preserve">変更されていないとみなされるファイルはありません</x:String>
4141
<x:String x:Key="Text.AssumeUnchanged.Remove" xml:space="preserve">削除</x:String>
42+
<x:String x:Key="Text.Avatar.Refetch" xml:space="preserve">更新</x:String>
4243
<x:String x:Key="Text.BinaryNotSupported" xml:space="preserve">バイナリファイルはサポートされていません!!!</x:String>
4344
<x:String x:Key="Text.Blame" xml:space="preserve">Blame</x:String>
4445
<x:String x:Key="Text.BlameTypeNotSupported" xml:space="preserve">BLAMEではこのファイルはサポートされていません!!!</x:String>
@@ -531,7 +532,6 @@
531532
<x:String x:Key="Text.Rebase.AutoStash" xml:space="preserve">ローカルの変更をスタッシュして再適用</x:String>
532533
<x:String x:Key="Text.Rebase.On" xml:space="preserve">On:</x:String>
533534
<x:String x:Key="Text.Rebase.Target" xml:space="preserve">リベース:</x:String>
534-
<x:String x:Key="Text.RefetchAvatar" xml:space="preserve">更新</x:String>
535535
<x:String x:Key="Text.Remote.AddTitle" xml:space="preserve">リモートを追加</x:String>
536536
<x:String x:Key="Text.Remote.EditTitle" xml:space="preserve">リモートを編集</x:String>
537537
<x:String x:Key="Text.Remote.Name" xml:space="preserve">名前:</x:String>

src/Resources/Locales/pt_BR.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
<x:String x:Key="Text.AssumeUnchanged" xml:space="preserve">ARQUIVOS CONSIDERADOS SEM ALTERAÇÕES</x:String>
3434
<x:String x:Key="Text.AssumeUnchanged.Empty" xml:space="preserve">NENHUM ARQUIVO CONSIDERADO SEM ALTERAÇÕES</x:String>
3535
<x:String x:Key="Text.AssumeUnchanged.Remove" xml:space="preserve">REMOVER</x:String>
36+
<x:String x:Key="Text.Avatar.Refetch" xml:space="preserve">Atualizar</x:String>
3637
<x:String x:Key="Text.BinaryNotSupported" xml:space="preserve">ARQUIVO BINÁRIO NÃO SUPORTADO!!!</x:String>
3738
<x:String x:Key="Text.Blame" xml:space="preserve">Blame</x:String>
3839
<x:String x:Key="Text.BlameTypeNotSupported" xml:space="preserve">BLAME NESTE ARQUIVO NÃO É SUPORTADO!!!</x:String>
@@ -488,7 +489,6 @@
488489
<x:String x:Key="Text.Rebase.AutoStash" xml:space="preserve">Guardar &amp; reaplicar alterações locais</x:String>
489490
<x:String x:Key="Text.Rebase.On" xml:space="preserve">Em:</x:String>
490491
<x:String x:Key="Text.Rebase.Target" xml:space="preserve">Rebase:</x:String>
491-
<x:String x:Key="Text.RefetchAvatar" xml:space="preserve">Atualizar</x:String>
492492
<x:String x:Key="Text.Remote.AddTitle" xml:space="preserve">Adicionar Remoto</x:String>
493493
<x:String x:Key="Text.Remote.EditTitle" xml:space="preserve">Editar Remoto</x:String>
494494
<x:String x:Key="Text.Remote.Name" xml:space="preserve">Nome:</x:String>

src/Resources/Locales/ru_RU.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<x:String x:Key="Text.AssumeUnchanged" xml:space="preserve">НЕОТСЛЕЖИВАЕМЫЕ ФАЙЛЫ</x:String>
4040
<x:String x:Key="Text.AssumeUnchanged.Empty" xml:space="preserve">СПИСОК ПУСТ</x:String>
4141
<x:String x:Key="Text.AssumeUnchanged.Remove" xml:space="preserve">УДАЛИТЬ</x:String>
42+
<x:String x:Key="Text.Avatar.Refetch" xml:space="preserve">Обновить</x:String>
4243
<x:String x:Key="Text.BinaryNotSupported" xml:space="preserve">ДВОИЧНЫЙ ФАЙЛ НЕ ПОДДЕРЖИВАЕТСЯ!!!</x:String>
4344
<x:String x:Key="Text.Bisect">Раздвоить</x:String>
4445
<x:String x:Key="Text.Bisect.Abort">О</x:String>
@@ -564,7 +565,6 @@
564565
<x:String x:Key="Text.Rebase.AutoStash" xml:space="preserve">Отложить и применить повторно локальные изменения</x:String>
565566
<x:String x:Key="Text.Rebase.On" xml:space="preserve">На:</x:String>
566567
<x:String x:Key="Text.Rebase.Target" xml:space="preserve">Переместить:</x:String>
567-
<x:String x:Key="Text.RefetchAvatar" xml:space="preserve">Обновить</x:String>
568568
<x:String x:Key="Text.Remote.AddTitle" xml:space="preserve">Добавить внешний репозиторий</x:String>
569569
<x:String x:Key="Text.Remote.EditTitle" xml:space="preserve">Редактировать внешний репозиторий</x:String>
570570
<x:String x:Key="Text.Remote.Name" xml:space="preserve">Имя:</x:String>

src/Resources/Locales/ta_IN.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<x:String x:Key="Text.AssumeUnchanged" xml:space="preserve">கோப்புகள் மாற்றப்படவில்லை எனக் கருதப்படுகிறது</x:String>
4040
<x:String x:Key="Text.AssumeUnchanged.Empty" xml:space="preserve">எந்த கோப்புகளும் மாற்றப்படவில்லை எனக் கருதப்படுகிறது</x:String>
4141
<x:String x:Key="Text.AssumeUnchanged.Remove" xml:space="preserve">நீக்கு</x:String>
42+
<x:String x:Key="Text.Avatar.Refetch" xml:space="preserve">புதுப்பி</x:String>
4243
<x:String x:Key="Text.BinaryNotSupported" xml:space="preserve">இருமம் கோப்பு ஆதரிக்கப்படவில்லை!!!</x:String>
4344
<x:String x:Key="Text.Blame" xml:space="preserve">குற்றச்சாட்டு</x:String>
4445
<x:String x:Key="Text.BlameTypeNotSupported" xml:space="preserve">இந்த கோப்பில் குற்றம் சாட்ட ஆதரிக்கப்படவில்லை!!!</x:String>
@@ -531,7 +532,6 @@
531532
<x:String x:Key="Text.Rebase.AutoStash" xml:space="preserve">உள்ளக மாற்றங்களை பதுக்கிவை &amp; மீண்டும் இடு</x:String>
532533
<x:String x:Key="Text.Rebase.On" xml:space="preserve">மேல்:</x:String>
533534
<x:String x:Key="Text.Rebase.Target" xml:space="preserve">மறுதளம்:</x:String>
534-
<x:String x:Key="Text.RefetchAvatar" xml:space="preserve">புதுப்பி</x:String>
535535
<x:String x:Key="Text.Remote.AddTitle" xml:space="preserve">தொலையைச் சேர்</x:String>
536536
<x:String x:Key="Text.Remote.EditTitle" xml:space="preserve">தொலையைத் திருத்து</x:String>
537537
<x:String x:Key="Text.Remote.Name" xml:space="preserve">பெயர்:</x:String>

0 commit comments

Comments
 (0)