Работа на новой архитектуре
This commit is contained in:
@@ -10,7 +10,7 @@ public class MediaMessage : Message
|
||||
public string? Caption { get => Content; private set => Content = value; }
|
||||
public MediaType MediaType { get; private set; } // image, video, file, voice
|
||||
|
||||
private readonly List<Media> _media = new();
|
||||
private List<Media> _media = new();
|
||||
public override IReadOnlyCollection<Media> Media => _media.AsReadOnly();
|
||||
|
||||
private MediaMessage() : base()
|
||||
|
||||
@@ -36,13 +36,13 @@ public abstract class Message : AggregateRoot<Guid>
|
||||
public bool IsDeletedForUser(Guid userId) => _deletedFor.Exists(d => d.UserId == userId);
|
||||
|
||||
// ================== Связанные коллекции (общего назначения) ==================
|
||||
protected readonly List<ReadReceipt> _readBy = new();
|
||||
protected List<ReadReceipt> _readBy = new();
|
||||
public IReadOnlyCollection<ReadReceipt> ReadBy => _readBy.AsReadOnly();
|
||||
|
||||
protected readonly List<DeletedMessage> _deletedFor = new();
|
||||
protected List<DeletedMessage> _deletedFor = new();
|
||||
public IReadOnlyCollection<DeletedMessage> DeletedFor => _deletedFor.AsReadOnly();
|
||||
|
||||
protected readonly List<Reaction> _reactions = new();
|
||||
protected List<Reaction> _reactions = new();
|
||||
public IReadOnlyCollection<Reaction> Reactions => _reactions.AsReadOnly();
|
||||
|
||||
// ================== Инфраструктурный конструктор EF ==================
|
||||
|
||||
+22
-22
@@ -74,30 +74,30 @@ public sealed class MessageSentDomainEventHandler : INotificationHandler<Message
|
||||
await _hubContext.Clients.Group(notification.ChatId.ToString())
|
||||
.SendAsync("new_message", new
|
||||
{
|
||||
message.Id,
|
||||
message.ChatId,
|
||||
message.SenderId,
|
||||
Content = message.Content,
|
||||
Type = message.Type,
|
||||
message.CreatedAt,
|
||||
message.ForwardedFromId,
|
||||
ForwardedFrom = forwardedFromObj,
|
||||
message.ReplyToId,
|
||||
ReplyTo = replyToObj,
|
||||
Quote = message.Quote,
|
||||
Media = message.Media.Select(m => new
|
||||
id = message.Id,
|
||||
chatId = message.ChatId,
|
||||
senderId = message.SenderId,
|
||||
content = message.Content,
|
||||
type = message.Type,
|
||||
createdAt = message.CreatedAt,
|
||||
forwardedFromId = message.ForwardedFromId,
|
||||
forwardedFrom = forwardedFromObj,
|
||||
replyToId = message.ReplyToId,
|
||||
replyTo = replyToObj,
|
||||
quote = message.Quote,
|
||||
media = message.Media.Select(m => new
|
||||
{
|
||||
m.Id,
|
||||
m.Type,
|
||||
m.Url,
|
||||
Filename = m.Filename,
|
||||
Size = m.Size
|
||||
id = m.Id,
|
||||
type = m.Type,
|
||||
url = m.Url,
|
||||
filename = m.Filename,
|
||||
size = m.Size
|
||||
}).ToList(),
|
||||
Sender = senderObj,
|
||||
ReadBy = new List<object>(),
|
||||
StoryId = message.StoryId,
|
||||
StoryMediaUrl = message.StoryMediaUrl,
|
||||
StoryMediaType = message.StoryMediaType
|
||||
sender = senderObj,
|
||||
readBy = new List<object>(),
|
||||
storyId = message.StoryId,
|
||||
storyMediaUrl = message.StoryMediaUrl,
|
||||
storyMediaType = message.StoryMediaType
|
||||
}, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,7 +114,9 @@ public sealed class MessageRepository : IMessageRepository
|
||||
if (!msg.ReadBy.Any(r => r.UserId == userId))
|
||||
{
|
||||
var receipt = new ReadReceipt(msg.Id, userId);
|
||||
|
||||
var pushUpdate = Builders<Message>.Update.Push("ReadBy", receipt);
|
||||
|
||||
var updateModel = new UpdateOneModel<Message>(Builders<Message>.Filter.Eq(m => m.Id, msg.Id), pushUpdate);
|
||||
writes.Add(updateModel);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user