Avatare von Mitgliedern in Gruppenchats mit Default-Avatar werden jetzt angezeigt

This commit is contained in:
2023-08-16 14:09:53 +02:00
parent 0f0ae7e858
commit 4778544b5e

View File

@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Windows.Media;
using ChatController.Extensions;
@@ -52,6 +51,9 @@ namespace ChatController.Core
private List<ProfilePictureObject> _AvatarCache = new List<ProfilePictureObject>();
private List<long> EmployeesWithDefaultAvatar = new List<long>();
private List<long> ClientsWithDefaultAvatar = new List<long>();
public void AddAvatar(string uri, ImageSource avatar, long? userId, int? groupId)
{
lock(_Lock)
@@ -76,6 +78,10 @@ namespace ChatController.Core
if(uri.Equals($"{BaseUri}/ownChat_avatar_employee.png"))
{
_DefaultAvatars.AddAndIgnoreDuplicates(DefaultAvatarType.Employee, avatar);
if(userId.HasValue)
{
EmployeesWithDefaultAvatar.AddIfNotIn(userId.Value);
}
}
if(uri.Equals($"{BaseUri}/ownChat_avatar_employee_group.png"))
@@ -86,6 +92,10 @@ namespace ChatController.Core
if(uri.Equals($"{BaseUri}/ownChat_avatar_client.png"))
{
_DefaultAvatars.AddAndIgnoreDuplicates(DefaultAvatarType.Client, avatar);
if(userId.HasValue)
{
ClientsWithDefaultAvatar.AddIfNotIn(userId.Value);
}
}
if(uri.Equals($"{BaseUri}/ownChat_avatar_client_group.png"))
@@ -119,6 +129,11 @@ namespace ChatController.Core
if(uri.Equals($"{BaseUri}/ownChat_avatar_employee.png"))
{
if(userId.HasValue)
{
EmployeesWithDefaultAvatar.AddIfNotIn(userId.Value);
}
return _DefaultAvatars[DefaultAvatarType.Employee];
}
@@ -129,6 +144,11 @@ namespace ChatController.Core
if(uri.Equals($"{BaseUri}/ownChat_avatar_client.png"))
{
if(userId.HasValue)
{
ClientsWithDefaultAvatar.AddIfNotIn(userId.Value);
}
return _DefaultAvatars[DefaultAvatarType.Client];
}
@@ -151,7 +171,24 @@ namespace ChatController.Core
{
lock(_Lock)
{
return _AvatarCache.FirstOrDefault(f => f.UserId.HasValue && f.UserId.Value.Equals(userId))?.ProfilePicture;
var profilePicture = _AvatarCache.FirstOrDefault(f => f.UserId.HasValue && f.UserId.Value.Equals(userId))?.ProfilePicture;
if(!(profilePicture is null))
{
return profilePicture;
}
if(EmployeesWithDefaultAvatar.Contains(userId))
{
profilePicture = _DefaultAvatars[DefaultAvatarType.Employee];
}
if(ClientsWithDefaultAvatar.Contains(userId))
{
profilePicture = _DefaultAvatars[DefaultAvatarType.Client];
}
return profilePicture;
}
}