diff --git a/apps/server-net/src/Modules/Chats/Application/Messages/Delete/DeleteMessagesCommand.cs b/apps/server-net/src/Modules/Chats/Application/Messages/Delete/DeleteMessagesCommand.cs new file mode 100644 index 0000000..2de27b4 --- /dev/null +++ b/apps/server-net/src/Modules/Chats/Application/Messages/Delete/DeleteMessagesCommand.cs @@ -0,0 +1,75 @@ +using MediatR; +using Microsoft.AspNetCore.SignalR; +using Vortex.Modules.Chats.Domain; +using Vortex.Modules.Chats.Infrastructure.SignalR; +using Vortex.Shared.Kernel; + +namespace Vortex.Modules.Chats.Application.Messages.Delete; + +public sealed record DeleteMessagesCommand( + Guid ChatId, + Guid UserId, + List MessageIds, + bool DeleteForAll) : global::Vortex.Shared.Kernel.ICommand; + +public sealed class DeleteMessagesCommandHandler : global::Vortex.Shared.Kernel.ICommandHandler +{ + private readonly IMessageRepository _messageRepository; + private readonly Vortex.Modules.Chats.Application.Abstractions.IChatsUnitOfWork _unitOfWork; + private readonly IHubContext _hubContext; + + public DeleteMessagesCommandHandler( + IMessageRepository messageRepository, + Vortex.Modules.Chats.Application.Abstractions.IChatsUnitOfWork unitOfWork, + IHubContext hubContext) + { + _messageRepository = messageRepository; + _unitOfWork = unitOfWork; + _hubContext = hubContext; + } + + public async Task Handle(DeleteMessagesCommand request, CancellationToken cancellationToken) + { + foreach (var id in request.MessageIds) + { + var message = await _messageRepository.GetByIdAsync(id, cancellationToken); + if (message is null || message.ChatId != request.ChatId) continue; + + if (request.DeleteForAll) + { + if (message.SenderId == request.UserId) + { + message.Delete(); + } + } + else + { + message.DeleteForUser(request.UserId); + } + } + + await _unitOfWork.SaveChangesAsync(cancellationToken); + + if (request.DeleteForAll) + { + await _hubContext.Clients.Group(request.ChatId.ToString()).SendAsync("messages_deleted", new + { + chatId = request.ChatId, + messageIds = request.MessageIds, + deleteForAll = true + }); + } + else + { + // Уведомляем только самого пользователя (все его текущие сессии) + await _hubContext.Clients.User(request.UserId.ToString()).SendAsync("messages_deleted", new + { + chatId = request.ChatId, + messageIds = request.MessageIds, + deleteForAll = false + }); + } + + return global::Vortex.Shared.Kernel.Result.Success(); + } +} diff --git a/apps/server-net/src/Modules/Chats/Application/Messages/React/AddReactionCommand.cs b/apps/server-net/src/Modules/Chats/Application/Messages/React/AddReactionCommand.cs index b8fddf5..6bc3b6c 100644 --- a/apps/server-net/src/Modules/Chats/Application/Messages/React/AddReactionCommand.cs +++ b/apps/server-net/src/Modules/Chats/Application/Messages/React/AddReactionCommand.cs @@ -34,24 +34,31 @@ public sealed class AddReactionCommandHandler : ICommandHandler Handle(AddReactionCommand request, CancellationToken cancellationToken) { - var message = await _messageRepository.GetByIdAsync(request.MessageId, cancellationToken); - if (message is null) return Result.Failure(new Error("Messages.NotFound", "Message not found.")); - - message.AddReaction(request.UserId, request.Emoji); - - await _unitOfWork.SaveChangesAsync(cancellationToken); - - var username = await _displayNameProvider.GetDisplayNameAsync(request.UserId, cancellationToken); - - await _hubContext.Clients.Group(request.ChatId.ToString()).SendAsync("reaction_added", new + try { - messageId = request.MessageId, - chatId = request.ChatId, - userId = request.UserId, - username = username, - emoji = request.Emoji - }); + var message = await _messageRepository.GetByIdAsync(request.MessageId, cancellationToken); + if (message is null) return Result.Failure(new Error("Messages.NotFound", "Message not found.")); - return Result.Success(); + message.AddReaction(request.UserId, request.Emoji); + + await _unitOfWork.SaveChangesAsync(cancellationToken); + + var username = await _displayNameProvider.GetDisplayNameAsync(request.UserId, cancellationToken); + + await _hubContext.Clients.Group(request.ChatId.ToString()).SendAsync("reaction_added", new + { + messageId = request.MessageId, + chatId = request.ChatId, + userId = request.UserId, + username = username, + emoji = request.Emoji + }); + + return Result.Success(); + } + catch (Exception ex) + { + return Result.Failure(new Error("AddReaction.Error", ex.Message)); + } } } diff --git a/apps/server-net/src/Modules/Chats/Application/Messages/React/RemoveReactionCommand.cs b/apps/server-net/src/Modules/Chats/Application/Messages/React/RemoveReactionCommand.cs index 19ef585..090faeb 100644 --- a/apps/server-net/src/Modules/Chats/Application/Messages/React/RemoveReactionCommand.cs +++ b/apps/server-net/src/Modules/Chats/Application/Messages/React/RemoveReactionCommand.cs @@ -31,21 +31,28 @@ public sealed class RemoveReactionCommandHandler : ICommandHandler Handle(RemoveReactionCommand request, CancellationToken cancellationToken) { - var message = await _messageRepository.GetByIdAsync(request.MessageId, cancellationToken); - if (message is null) return Result.Failure(new Error("Messages.NotFound", "Message not found.")); - - message.RemoveReaction(request.UserId, request.Emoji); - - await _unitOfWork.SaveChangesAsync(cancellationToken); - - await _hubContext.Clients.Group(request.ChatId.ToString()).SendAsync("reaction_removed", new + try { - messageId = request.MessageId, - chatId = request.ChatId, - userId = request.UserId, - emoji = request.Emoji - }); + var message = await _messageRepository.GetByIdAsync(request.MessageId, cancellationToken); + if (message is null) return Result.Failure(new Error("Messages.NotFound", "Message not found.")); - return Result.Success(); + message.RemoveReaction(request.UserId, request.Emoji); + + await _unitOfWork.SaveChangesAsync(cancellationToken); + + await _hubContext.Clients.Group(request.ChatId.ToString()).SendAsync("reaction_removed", new + { + messageId = request.MessageId, + chatId = request.ChatId, + userId = request.UserId, + emoji = request.Emoji + }); + + return Result.Success(); + } + catch (Exception ex) + { + return Result.Failure(new Error("RemoveReaction.Error", ex.Message)); + } } } diff --git a/apps/server-net/src/Modules/Chats/Domain/Chat.cs b/apps/server-net/src/Modules/Chats/Domain/Chat.cs index 8e17b2f..696206d 100644 --- a/apps/server-net/src/Modules/Chats/Domain/Chat.cs +++ b/apps/server-net/src/Modules/Chats/Domain/Chat.cs @@ -2,6 +2,9 @@ using Vortex.Shared.Kernel; namespace Vortex.Modules.Chats.Domain; +public sealed record ChatCreatedDomainEvent(Chat Chat) : IDomainEvent; +public sealed record ChatMemberAddedDomainEvent(Guid ChatId, Guid UserId) : IDomainEvent; + /// /// Тип чата: личный или групповой. /// @@ -48,7 +51,9 @@ public sealed class Chat : AggregateRoot /// public static Chat CreatePersonal() { - return new Chat(Guid.NewGuid(), ChatType.Personal, null, null); + var chat = new Chat(Guid.NewGuid(), ChatType.Personal, null, null); + chat.RaiseDomainEvent(new ChatCreatedDomainEvent(chat)); + return chat; } /// @@ -56,7 +61,9 @@ public sealed class Chat : AggregateRoot /// public static Chat CreateGroup(string name, string? avatar = null) { - return new Chat(Guid.NewGuid(), ChatType.Group, name, avatar); + var chat = new Chat(Guid.NewGuid(), ChatType.Group, name, avatar); + chat.RaiseDomainEvent(new ChatCreatedDomainEvent(chat)); + return chat; } /// @@ -64,13 +71,16 @@ public sealed class Chat : AggregateRoot /// public static Chat Create(string? name, ChatType type, string? avatar = null) { - return new Chat(Guid.NewGuid(), type, name, avatar); + var chat = new Chat(Guid.NewGuid(), type, name, avatar); + chat.RaiseDomainEvent(new ChatCreatedDomainEvent(chat)); + return chat; } public void AddMember(Guid userId, string role = "member") { if (_members.Any(m => m.UserId == userId)) return; _members.Add(new ChatMember(Id, userId, role)); + RaiseDomainEvent(new ChatMemberAddedDomainEvent(Id, userId)); } public void RemoveMember(Guid userId) diff --git a/apps/server-net/src/Modules/Chats/Domain/Message.cs b/apps/server-net/src/Modules/Chats/Domain/Message.cs index 2fd5e11..d47ee1d 100644 --- a/apps/server-net/src/Modules/Chats/Domain/Message.cs +++ b/apps/server-net/src/Modules/Chats/Domain/Message.cs @@ -29,6 +29,9 @@ public sealed class Message : AggregateRoot private readonly List _readBy = new(); public IReadOnlyCollection ReadBy => _readBy.AsReadOnly(); + private readonly List _deletedByUsers = new(); + public IReadOnlyCollection DeletedByUsers => _deletedByUsers.AsReadOnly(); + private Message(Guid id, Guid chatId, Guid senderId, string? content, string type, Guid? replyToId = null, string? quote = null, Guid? forwardedFromId = null) : base(id) { ChatId = chatId; @@ -84,6 +87,16 @@ public sealed class Message : AggregateRoot { Content = null; IsDeleted = true; + _media.Clear(); + _reactions.Clear(); + } + + public void DeleteForUser(Guid userId) + { + if (!_deletedByUsers.Contains(userId)) + { + _deletedByUsers.Add(userId); + } } } /// @@ -101,6 +114,11 @@ public sealed class Reaction : Entity UserId = userId; Emoji = emoji; } + + private Reaction() : base(Guid.Empty) + { + Emoji = string.Empty; + } } /// @@ -122,4 +140,10 @@ public sealed class Media : Entity Filename = filename; Size = size; } + + private Media() : base(Guid.Empty) + { + Type = string.Empty; + Url = string.Empty; + } } diff --git a/apps/server-net/src/Modules/Chats/Infrastructure/Handlers/ChatCreatedDomainEventHandler.cs b/apps/server-net/src/Modules/Chats/Infrastructure/Handlers/ChatCreatedDomainEventHandler.cs new file mode 100644 index 0000000..6fa3fa1 --- /dev/null +++ b/apps/server-net/src/Modules/Chats/Infrastructure/Handlers/ChatCreatedDomainEventHandler.cs @@ -0,0 +1,91 @@ +using MediatR; +using Microsoft.AspNetCore.SignalR; +using Vortex.Modules.Chats.Domain; +using Vortex.Modules.Chats.Infrastructure.SignalR; +using Vortex.Shared.Kernel; + +namespace Vortex.Modules.Chats.Infrastructure.Handlers; + +/// +/// Обработчик доменного события создания чата. +/// +public sealed class ChatCreatedDomainEventHandler : INotificationHandler, INotificationHandler +{ + private readonly IHubContext _hubContext; + private readonly IChatRepository _chatRepository; + private readonly IUserDisplayNameProvider _displayNameProvider; + + public ChatCreatedDomainEventHandler( + IHubContext hubContext, + IChatRepository chatRepository, + IUserDisplayNameProvider displayNameProvider) + { + _hubContext = hubContext; + _chatRepository = chatRepository; + _displayNameProvider = displayNameProvider; + } + + public async Task Handle(ChatCreatedDomainEvent notification, CancellationToken cancellationToken) + { + await NotifyNewChatAsync(notification.Chat, cancellationToken); + } + + public async Task Handle(ChatMemberAddedDomainEvent notification, CancellationToken cancellationToken) + { + var chat = await _chatRepository.GetByIdAsync(notification.ChatId, cancellationToken); + if (chat != null) + { + // Уведомляем всех участников, что кто-то добавлен (или пользователь сам видит новый чат) + await NotifyNewChatAsync(chat, cancellationToken); + } + } + + private async Task NotifyNewChatAsync(Chat chat, CancellationToken cancellationToken, string? targetUserId = null) + { + var members = new List(); + foreach (var member in chat.Members) + { + var userInfo = await _displayNameProvider.GetUserInfoAsync(member.UserId, cancellationToken); + members.Add(new + { + member.Id, + member.UserId, + member.Role, + member.JoinedAt, + User = userInfo != null + ? new { userInfo.Id, userInfo.Username, userInfo.DisplayName, userInfo.Avatar, isOnline = false } + : new { Id = member.UserId, Username = "unknown", DisplayName = "Unknown", Avatar = (string?)null, isOnline = false } + }); + } + + var payload = new + { + chat.Id, + chat.Type, + chat.Name, + chat.Avatar, + chat.CreatedAt, + Members = members, + Messages = new List(), + UnreadCount = 0 + }; + + if (targetUserId != null) + { + // Отправляем конкретному пользователю (по всем его соединениям) + // Мы можем использовать метод Hub или просто отправить в группу UserId (если она есть) + // В нашем ChatHub мы добавляем пользователя в группы чатов при подключении. + // Но для нового чата он еще не в группе. + // Поэтому отправляем через User ID (SignalR поддерживает Clients.User(id)) + await _hubContext.Clients.User(targetUserId).SendAsync("new_chat", payload, cancellationToken); + } + else + { + // Уведомляем всех текущих участников + foreach (var member in chat.Members) + { + await _hubContext.Clients.User(member.UserId.ToString()).SendAsync("new_chat", payload, cancellationToken); + } + } + } +} diff --git a/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/ChatsDbContext.cs b/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/ChatsDbContext.cs index 45e3a2d..a62e771 100644 --- a/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/ChatsDbContext.cs +++ b/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/ChatsDbContext.cs @@ -1,4 +1,5 @@ using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Diagnostics; using MediatR; using Vortex.Modules.Chats.Domain; using Vortex.Shared.Kernel; @@ -23,6 +24,12 @@ public sealed class ChatsDbContext : DbContext, IChatsUnitOfWork public DbSet Chats => Set(); public DbSet Messages => Set(); public DbSet ReadReceipts => Set(); + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + base.OnConfiguring(optionsBuilder); + optionsBuilder.ConfigureWarnings(w => w.Ignore(RelationalEventId.PendingModelChangesWarning)); + } protected override void OnModelCreating(ModelBuilder modelBuilder) { @@ -40,7 +47,7 @@ public sealed class ChatsDbContext : DbContext, IChatsUnitOfWork mb.HasKey(m => m.Id); mb.WithOwner().HasForeignKey(m => m.ChatId); mb.HasIndex(m => new { m.ChatId, m.UserId }).IsUnique(); - }); + }).Navigation(c => c.Members).UsePropertyAccessMode(PropertyAccessMode.Field); }); modelBuilder.Entity(builder => @@ -51,17 +58,26 @@ public sealed class ChatsDbContext : DbContext, IChatsUnitOfWork builder.OwnsMany(m => m.Media, mb => { mb.ToTable("MessageMedia"); - mb.HasKey(x => x.Id); mb.WithOwner().HasForeignKey(x => x.MessageId); - }); + }).Navigation(m => m.Media).UsePropertyAccessMode(PropertyAccessMode.Field); builder.OwnsMany(m => m.Reactions, mb => { mb.ToTable("MessageReactions"); mb.HasKey(x => x.Id); - mb.WithOwner().HasForeignKey(x => x.MessageId); mb.HasIndex(x => new { x.MessageId, x.UserId, x.Emoji }).IsUnique(); - }); + }).Navigation(m => m.Reactions).UsePropertyAccessMode(PropertyAccessMode.Field); + + builder.PrimitiveCollection(m => m.DeletedByUsers) + .HasColumnName("DeletedByUsers") + .UsePropertyAccessMode(PropertyAccessMode.Field); + + builder.HasMany(m => m.ReadBy) + .WithOne() + .HasForeignKey(r => r.MessageId) + .OnDelete(DeleteBehavior.Cascade); + + builder.Navigation(m => m.ReadBy).UsePropertyAccessMode(PropertyAccessMode.Field); }); modelBuilder.Entity(builder => diff --git a/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/Migrations/20260312174910_UpdateChatsSchema.Designer.cs b/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/Migrations/20260312174910_UpdateChatsSchema.Designer.cs new file mode 100644 index 0000000..78e5ced --- /dev/null +++ b/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/Migrations/20260312174910_UpdateChatsSchema.Designer.cs @@ -0,0 +1,244 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Vortex.Modules.Chats.Infrastructure.Persistence; + +#nullable disable + +namespace Vortex.Modules.Chats.Infrastructure.Persistence.Migrations +{ + [DbContext(typeof(ChatsDbContext))] + [Migration("20260312174910_UpdateChatsSchema")] + partial class UpdateChatsSchema + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("chats") + .HasAnnotation("ProductVersion", "10.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Vortex.Modules.Chats.Domain.Chat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Avatar") + .HasColumnType("text"); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Type") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Chats", "chats"); + }); + + modelBuilder.Entity("Vortex.Modules.Chats.Domain.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ChatId") + .HasColumnType("uuid"); + + b.Property("Content") + .HasColumnType("text"); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone"); + + b.PrimitiveCollection("DeletedByUsers") + .IsRequired() + .HasColumnType("uuid[]") + .HasColumnName("DeletedByUsers"); + + b.Property("ForwardedFromId") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("IsEdited") + .HasColumnType("boolean"); + + b.Property("Quote") + .HasColumnType("text"); + + b.Property("ReplyToId") + .HasColumnType("uuid"); + + b.Property("SenderId") + .HasColumnType("uuid"); + + b.Property("Type") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Messages", "chats"); + }); + + modelBuilder.Entity("Vortex.Modules.Chats.Domain.ReadReceipt", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("MessageId") + .HasColumnType("uuid"); + + b.Property("ReadAt") + .HasColumnType("timestamp with time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("MessageId", "UserId") + .IsUnique(); + + b.ToTable("ReadReceipts", "chats"); + }); + + modelBuilder.Entity("Vortex.Modules.Chats.Domain.Chat", b => + { + b.OwnsMany("Vortex.Modules.Chats.Domain.ChatMember", "Members", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b1.Property("ChatId") + .HasColumnType("uuid"); + + b1.Property("IsMuted") + .HasColumnType("boolean"); + + b1.Property("JoinedAt") + .HasColumnType("timestamp with time zone"); + + b1.Property("Role") + .IsRequired() + .HasColumnType("text"); + + b1.Property("UserId") + .HasColumnType("uuid"); + + b1.HasKey("Id"); + + b1.HasIndex("ChatId", "UserId") + .IsUnique(); + + b1.ToTable("ChatMembers", "chats"); + + b1.WithOwner() + .HasForeignKey("ChatId"); + }); + + b.Navigation("Members"); + }); + + modelBuilder.Entity("Vortex.Modules.Chats.Domain.Message", b => + { + b.OwnsMany("Vortex.Modules.Chats.Domain.Media", "Media", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b1.Property("Filename") + .HasColumnType("text"); + + b1.Property("MessageId") + .HasColumnType("uuid"); + + b1.Property("Size") + .HasColumnType("bigint"); + + b1.Property("Type") + .IsRequired() + .HasColumnType("text"); + + b1.Property("Url") + .IsRequired() + .HasColumnType("text"); + + b1.HasKey("Id"); + + b1.HasIndex("MessageId"); + + b1.ToTable("MessageMedia", "chats"); + + b1.WithOwner() + .HasForeignKey("MessageId"); + }); + + b.OwnsMany("Vortex.Modules.Chats.Domain.Reaction", "Reactions", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b1.Property("Emoji") + .IsRequired() + .HasColumnType("text"); + + b1.Property("MessageId") + .HasColumnType("uuid"); + + b1.Property("UserId") + .HasColumnType("uuid"); + + b1.HasKey("Id"); + + b1.HasIndex("MessageId", "UserId", "Emoji") + .IsUnique(); + + b1.ToTable("MessageReactions", "chats"); + + b1.WithOwner() + .HasForeignKey("MessageId"); + }); + + b.Navigation("Media"); + + b.Navigation("Reactions"); + }); + + modelBuilder.Entity("Vortex.Modules.Chats.Domain.ReadReceipt", b => + { + b.HasOne("Vortex.Modules.Chats.Domain.Message", null) + .WithMany("ReadBy") + .HasForeignKey("MessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Vortex.Modules.Chats.Domain.Message", b => + { + b.Navigation("ReadBy"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/Migrations/20260312174910_UpdateChatsSchema.cs b/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/Migrations/20260312174910_UpdateChatsSchema.cs new file mode 100644 index 0000000..8e57a32 --- /dev/null +++ b/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/Migrations/20260312174910_UpdateChatsSchema.cs @@ -0,0 +1,32 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Vortex.Modules.Chats.Infrastructure.Persistence.Migrations +{ + /// + public partial class UpdateChatsSchema : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "DeletedByUsers", + schema: "chats", + table: "Messages", + type: "uuid[]", + nullable: false, + defaultValue: new Guid[0]); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "DeletedByUsers", + schema: "chats", + table: "Messages"); + } + } +} diff --git a/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/Migrations/ChatsDbContextModelSnapshot.cs b/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/Migrations/ChatsDbContextModelSnapshot.cs index f50297f..46ffaa6 100644 --- a/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/Migrations/ChatsDbContextModelSnapshot.cs +++ b/apps/server-net/src/Modules/Chats/Infrastructure/Persistence/Migrations/ChatsDbContextModelSnapshot.cs @@ -62,6 +62,11 @@ namespace Vortex.Modules.Chats.Infrastructure.Persistence.Migrations b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); + b.PrimitiveCollection("DeletedByUsers") + .IsRequired() + .HasColumnType("uuid[]") + .HasColumnName("DeletedByUsers"); + b.Property("ForwardedFromId") .HasColumnType("uuid"); diff --git a/apps/server-net/src/Modules/Chats/Infrastructure/SignalR/ChatHub.cs b/apps/server-net/src/Modules/Chats/Infrastructure/SignalR/ChatHub.cs index 30d8f90..dc740ec 100644 --- a/apps/server-net/src/Modules/Chats/Infrastructure/SignalR/ChatHub.cs +++ b/apps/server-net/src/Modules/Chats/Infrastructure/SignalR/ChatHub.cs @@ -17,6 +17,8 @@ public sealed class ChatHub : Hub { // Маппинг userId → список connectionId private static readonly ConcurrentDictionary> _userConnections = new(); + // chatId → (userId → ParticipantInfo) + private static readonly ConcurrentDictionary> _groupCallParticipants = new(); private readonly ISender _sender; private readonly IUserContext _userContext; @@ -118,6 +120,22 @@ public sealed class ChatHub : Hub }); } + [HubMethodName("delete_messages")] + public async Task DeleteMessages(DeleteMessagesHubRequest request) + { + var parsedIds = request.MessageIds + .Select(id => Guid.TryParse(id, out var parsed) ? parsed : Guid.Empty) + .Where(id => id != Guid.Empty) + .ToList(); + + if (parsedIds.Any()) + { + var command = new Vortex.Modules.Chats.Application.Messages.Delete.DeleteMessagesCommand( + request.ChatId, _userContext.UserId, parsedIds, request.DeleteForAll); + await _sender.Send(command); + } + } + [HubMethodName("typing_start")] public async Task TypingStart(string chatId) { @@ -130,12 +148,30 @@ public sealed class ChatHub : Hub await Clients.Group(chatId).SendAsync("user_stopped_typing", new { ChatId = chatId, UserId = _userContext.UserId }); } + [HubMethodName("join_chat")] + public async Task JoinChat(string chatId) + { + // Simple security check: check if user is member of chat (optional but recommended) + if (Guid.TryParse(chatId, out var chatGuid)) + { + var userChats = await _chatRepository.GetUserChatsAsync(_userContext.UserId, Context.ConnectionAborted); + if (userChats.Any(c => c.Id == chatGuid)) + { + await Groups.AddToGroupAsync(Context.ConnectionId, chatId); + } + } + } + [HubMethodName("add_reaction")] public async Task AddReaction(AddReactionRequest request) { var command = new Vortex.Modules.Chats.Application.Messages.React.AddReactionCommand( request.MessageId, _userContext.UserId, request.Emoji, request.ChatId); - await _sender.Send(command); + var result = await _sender.Send(command); + if (result.IsFailure) + { + throw new HubException(result.Error.Description); + } } [HubMethodName("remove_reaction")] @@ -143,7 +179,11 @@ public sealed class ChatHub : Hub { var command = new Vortex.Modules.Chats.Application.Messages.React.RemoveReactionCommand( request.MessageId, _userContext.UserId, request.Emoji, request.ChatId); - await _sender.Send(command); + var result = await _sender.Send(command); + if (result.IsFailure) + { + throw new HubException(result.Error.Description); + } } // ──────────────────────────────────────────────────────────────── @@ -255,6 +295,150 @@ public sealed class ChatHub : Hub }); } + // ──────────────────────────────────────────────────────────────── + // Group Call signals + // ──────────────────────────────────────────────────────────────── + + [HubMethodName("group_call_join")] + public async Task GroupCallJoin(GroupCallJoinRequest request) + { + var chatId = request.ChatId; + var userId = _userContext.UserId.ToString(); + + var displayName = Context.User?.FindFirstValue("name") ?? Context.User?.FindFirstValue(ClaimTypes.Name) ?? "User"; + var avatar = Context.User?.FindFirstValue("avatar"); + var username = Context.User?.FindFirstValue("unique_name") ?? Context.User?.Identity?.Name ?? "user"; + + var userInfo = new ParticipantInfo(userId, username, displayName, avatar); + + var participants = _groupCallParticipants.GetOrAdd(chatId, _ => new ConcurrentDictionary()); + participants.TryAdd(userId, userInfo); + + // Notify others + await Clients.Group(chatId).SendAsync("group_call_user_joined", new { + chatId = chatId, + userId = userId, + userInfo = userInfo + }); + + // Send current participants to joiner (excluding self) + var others = participants.Values.Where(p => p.Id != userId).ToList(); + await Clients.Caller.SendAsync("group_call_participants", new { + chatId = chatId, + participants = others + }); + } + + [HubMethodName("group_call_leave")] + public async Task GroupCallLeave(string chatId) + { + var userId = _userContext.UserId.ToString(); + if (_groupCallParticipants.TryGetValue(chatId, out var participants)) + { + participants.TryRemove(userId, out _); + if (participants.IsEmpty) + { + _groupCallParticipants.TryRemove(chatId, out _); + } + } + + await Clients.Group(chatId).SendAsync("group_call_user_left", new { + chatId = chatId, + userId = userId + }); + } + + [HubMethodName("group_call_offer")] + public async Task GroupCallOffer(GroupCallOfferRequest request) + { + await SendToUserAsync(request.TargetUserId, "group_call_offer", new + { + chatId = request.ChatId, + from = _userContext.UserId.ToString(), + offer = request.Offer + }); + } + + [HubMethodName("group_call_answer")] + public async Task GroupCallAnswer(GroupCallAnswerRequest request) + { + await SendToUserAsync(request.TargetUserId, "group_call_answer", new + { + chatId = request.ChatId, + from = _userContext.UserId.ToString(), + answer = request.Answer + }); + } + + [HubMethodName("group_ice_candidate")] + public async Task GroupIceCandidate(GroupIceCandidateRequest request) + { + await SendToUserAsync(request.TargetUserId, "group_ice_candidate", new + { + chatId = request.ChatId, + from = _userContext.UserId.ToString(), + candidate = request.Candidate + }); + } + + [HubMethodName("group_call_renegotiate")] + public async Task GroupRenegotiate(GroupRenegotiateRequest request) + { + await SendToUserAsync(request.TargetUserId, "group_call_renegotiate", new + { + chatId = request.ChatId, + from = _userContext.UserId.ToString(), + offer = request.Offer + }); + } + + [HubMethodName("group_call_renegotiate_answer")] + public async Task GroupRenegotiateAnswer(GroupRenegotiateAnswerRequest request) + { + await SendToUserAsync(request.TargetUserId, "group_call_renegotiate_answer", new + { + chatId = request.ChatId, + from = _userContext.UserId.ToString(), + answer = request.Answer + }); + } + + [HubMethodName("screen_share_started")] + public async Task ScreenShareStarted(string chatId) + { + var userId = _userContext.UserId.ToString(); + if (_groupCallParticipants.TryGetValue(chatId, out var participants)) + { + if (participants.TryGetValue(userId, out var info)) + { + participants[userId] = info with { IsSharingScreen = true }; + } + } + + await Clients.Group(chatId).SendAsync("screen_share_started", new { + chatId = chatId, + userId = userId + }); + } + + [HubMethodName("screen_share_stopped")] + public async Task ScreenShareStopped(string chatId) + { + var userId = _userContext.UserId.ToString(); + if (_groupCallParticipants.TryGetValue(chatId, out var participants)) + { + if (participants.TryGetValue(userId, out var info)) + { + participants[userId] = info with { IsSharingScreen = false }; + } + } + + await Clients.Group(chatId).SendAsync("screen_share_stopped", new { + chatId = chatId, + userId = userId + }); + } + // ──────────────────────────────────────────────────────────────── // Records // ──────────────────────────────────────────────────────────────── @@ -278,4 +462,12 @@ public sealed class ChatHub : Hub public record CallTypeChangedRequest(string TargetUserId, string CallType); public record AddReactionRequest(Guid MessageId, Guid ChatId, string Emoji); public record RemoveReactionRequest(Guid MessageId, Guid ChatId, string Emoji); + public record DeleteMessagesHubRequest(Guid ChatId, List MessageIds, bool DeleteForAll); + public record GroupCallJoinRequest(string ChatId, string CallType); + public record ParticipantInfo(string Id, string Username, string DisplayName, string? Avatar, bool IsSharingScreen = false); + public record GroupCallOfferRequest(string ChatId, string TargetUserId, object Offer); + public record GroupCallAnswerRequest(string ChatId, string TargetUserId, object Answer); + public record GroupIceCandidateRequest(string ChatId, string TargetUserId, object Candidate); + public record GroupRenegotiateRequest(string ChatId, string TargetUserId, object Offer); + public record GroupRenegotiateAnswerRequest(string ChatId, string TargetUserId, object Answer); } diff --git a/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Modules.Chats.dll b/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Modules.Chats.dll index 49bf83b..0411719 100644 Binary files a/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Modules.Chats.dll and b/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Modules.Chats.dll differ diff --git a/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Modules.Chats.pdb b/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Modules.Chats.pdb index 1f6de7d..954bc5b 100644 Binary files a/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Modules.Chats.pdb and b/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Modules.Chats.pdb differ diff --git a/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Shared.Kernel.dll b/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Shared.Kernel.dll index 028e242..e19c169 100644 Binary files a/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Shared.Kernel.dll and b/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Shared.Kernel.dll differ diff --git a/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb b/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb index 39cd861..2745893 100644 Binary files a/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb and b/apps/server-net/src/Modules/Chats/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb differ diff --git a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.AssemblyInfo.cs b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.AssemblyInfo.cs index 427ecc5..f4db4e1 100644 --- a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.AssemblyInfo.cs +++ b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Vortex.Modules.Chats")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d025c98e61cc08a53e6ebc62544d35be73a039e7")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1ec6b438d29413482e1393c8ee5717f1211bd2c1")] [assembly: System.Reflection.AssemblyProductAttribute("Vortex.Modules.Chats")] [assembly: System.Reflection.AssemblyTitleAttribute("Vortex.Modules.Chats")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.AssemblyInfoInputs.cache b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.AssemblyInfoInputs.cache index 99f1d33..789fe32 100644 --- a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.AssemblyInfoInputs.cache +++ b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.AssemblyInfoInputs.cache @@ -1 +1 @@ -3f81474107c936fb7023dd1f1d41b8c6e04cc78e956d41fb0e98d29b21aae2c3 +f9ffb401f31277f8b221e98682e16484fff43d34c6ed6bf8ad0e087ed2774d78 diff --git a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.GeneratedMSBuildEditorConfig.editorconfig b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.GeneratedMSBuildEditorConfig.editorconfig index 2ba3c05..0671bb0 100644 --- a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.GeneratedMSBuildEditorConfig.editorconfig +++ b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.GeneratedMSBuildEditorConfig.editorconfig @@ -10,7 +10,7 @@ build_property.PlatformNeutralAssembly = build_property.EnforceExtendedAnalyzerRules = build_property._SupportedPlatformList = Linux,macOS,Windows build_property.RootNamespace = Vortex.Modules.Chats -build_property.ProjectDir = e:\GIT\forkmessager\apps\server-net\src\Modules\Chats\ +build_property.ProjectDir = E:\GIT\forkmessager\apps\server-net\src\Modules\Chats\ build_property.EnableComHosting = build_property.EnableGeneratedComInterfaceComImportInterop = build_property.EffectiveAnalysisLevelStyle = 10.0 diff --git a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.assets.cache b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.assets.cache index 80ad18a..124d5ab 100644 Binary files a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.assets.cache and b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.assets.cache differ diff --git a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.csproj.AssemblyReference.cache b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.csproj.AssemblyReference.cache index 02a5bf8..1c5126f 100644 Binary files a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.csproj.AssemblyReference.cache and b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.csproj.AssemblyReference.cache differ diff --git a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.csproj.CoreCompileInputs.cache b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.csproj.CoreCompileInputs.cache index a0d2fc2..ef5380f 100644 --- a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.csproj.CoreCompileInputs.cache +++ b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -361b9f18466c016bfc9d27e7847a8f24463479b03b82ec7866a1124dede24edb +b343bc938c4e02003d18f33f285c39da0e0ac9c0a7417a27b8b695b2e991a45e diff --git a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.dll b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.dll index 49bf83b..0411719 100644 Binary files a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.dll and b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.dll differ diff --git a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.pdb b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.pdb index 1f6de7d..954bc5b 100644 Binary files a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.pdb and b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/Vortex.Modules.Chats.pdb differ diff --git a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/ref/Vortex.Modules.Chats.dll b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/ref/Vortex.Modules.Chats.dll index be4096d..2951389 100644 Binary files a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/ref/Vortex.Modules.Chats.dll and b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/ref/Vortex.Modules.Chats.dll differ diff --git a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/refint/Vortex.Modules.Chats.dll b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/refint/Vortex.Modules.Chats.dll index be4096d..2951389 100644 Binary files a/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/refint/Vortex.Modules.Chats.dll and b/apps/server-net/src/Modules/Chats/obj/Debug/net10.0/refint/Vortex.Modules.Chats.dll differ diff --git a/apps/server-net/src/Modules/Chats/obj/Vortex.Modules.Chats.csproj.nuget.dgspec.json b/apps/server-net/src/Modules/Chats/obj/Vortex.Modules.Chats.csproj.nuget.dgspec.json index e99e9bc..027fcc4 100644 --- a/apps/server-net/src/Modules/Chats/obj/Vortex.Modules.Chats.csproj.nuget.dgspec.json +++ b/apps/server-net/src/Modules/Chats/obj/Vortex.Modules.Chats.csproj.nuget.dgspec.json @@ -1,17 +1,17 @@ { "format": 1, "restore": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj": {} + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj": {} }, "projects": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj": { + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", "projectName": "Vortex.Modules.Chats", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -33,8 +33,8 @@ "net10.0": { "targetAlias": "net10.0", "projectReferences": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" } } } @@ -518,14 +518,14 @@ } } }, - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", "projectName": "Vortex.Shared.Kernel", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" diff --git a/apps/server-net/src/Modules/Chats/obj/project.assets.json b/apps/server-net/src/Modules/Chats/obj/project.assets.json index f601189..8e8f7b8 100644 --- a/apps/server-net/src/Modules/Chats/obj/project.assets.json +++ b/apps/server-net/src/Modules/Chats/obj/project.assets.json @@ -785,11 +785,11 @@ "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", "projectName": "Vortex.Modules.Chats", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -811,8 +811,8 @@ "net10.0": { "targetAlias": "net10.0", "projectReferences": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" } } } diff --git a/apps/server-net/src/Modules/Chats/obj/project.nuget.cache b/apps/server-net/src/Modules/Chats/obj/project.nuget.cache index ab08c3b..c829b91 100644 --- a/apps/server-net/src/Modules/Chats/obj/project.nuget.cache +++ b/apps/server-net/src/Modules/Chats/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "TeczXo+31S0=", + "dgSpecHash": "rWL1CDgJNu8=", "success": true, - "projectFilePath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", + "projectFilePath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", "expectedPackageFiles": [ "C:\\Users\\HomePC\\.nuget\\packages\\mediatr\\12.0.1\\mediatr.12.0.1.nupkg.sha512", "C:\\Users\\HomePC\\.nuget\\packages\\mediatr.contracts\\2.0.1\\mediatr.contracts.2.0.1.nupkg.sha512", diff --git a/apps/server-net/src/Modules/Identity/Domain/Story.cs b/apps/server-net/src/Modules/Identity/Domain/Story.cs index 0471285..8222048 100644 --- a/apps/server-net/src/Modules/Identity/Domain/Story.cs +++ b/apps/server-net/src/Modules/Identity/Domain/Story.cs @@ -12,6 +12,9 @@ public sealed class Story : Entity public DateTime CreatedAt { get; private set; } public DateTime ExpiresAt { get; private set; } + private readonly List _viewers = new(); + public IReadOnlyCollection Viewers => _viewers.AsReadOnly(); + private Story(Guid id, Guid userId, string type, string? mediaUrl, string? content, string? bgColor) : base(id) { UserId = userId; @@ -27,4 +30,10 @@ public sealed class Story : Entity { return new Story(Guid.NewGuid(), userId, type, mediaUrl, content, bgColor); } + + public void AddViewer(Guid userId) + { + if (_viewers.Any(v => v.UserId == userId)) return; + _viewers.Add(new StoryViewer(Id, userId)); + } } diff --git a/apps/server-net/src/Modules/Identity/Domain/StoryViewer.cs b/apps/server-net/src/Modules/Identity/Domain/StoryViewer.cs new file mode 100644 index 0000000..094baf2 --- /dev/null +++ b/apps/server-net/src/Modules/Identity/Domain/StoryViewer.cs @@ -0,0 +1,17 @@ +using Vortex.Shared.Kernel; + +namespace Vortex.Modules.Identity.Domain; + +public sealed class StoryViewer : Entity +{ + public Guid StoryId { get; private set; } + public Guid UserId { get; private set; } + public DateTime ViewedAt { get; private set; } + + internal StoryViewer(Guid storyId, Guid userId) : base(Guid.NewGuid()) + { + StoryId = storyId; + UserId = userId; + ViewedAt = DateTime.UtcNow; + } +} diff --git a/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/IdentityDbContext.cs b/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/IdentityDbContext.cs index b848a85..eb69b24 100644 --- a/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/IdentityDbContext.cs +++ b/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/IdentityDbContext.cs @@ -1,5 +1,6 @@ using MediatR; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Diagnostics; using Vortex.Shared.Kernel; using Vortex.Modules.Identity.Domain; @@ -22,7 +23,14 @@ public sealed class IdentityDbContext : DbContext, IIdentityUnitOfWork public DbSet Users => Set(); public DbSet Stories => Set(); + public DbSet StoryViewers => Set(); public DbSet Friendships => Set(); + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + base.OnConfiguring(optionsBuilder); + optionsBuilder.ConfigureWarnings(w => w.Ignore(RelationalEventId.PendingModelChangesWarning)); + } protected override void OnModelCreating(ModelBuilder modelBuilder) { @@ -40,6 +48,17 @@ public sealed class IdentityDbContext : DbContext, IIdentityUnitOfWork builder.ToTable("Stories"); builder.HasKey(s => s.Id); builder.Property(s => s.Type).IsRequired(); + builder.HasMany(s => s.Viewers) + .WithOne() + .HasForeignKey(v => v.StoryId) + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity(builder => + { + builder.ToTable("StoryViewers"); + builder.HasKey(v => v.Id); + builder.HasIndex(v => new { v.StoryId, v.UserId }).IsUnique(); }); modelBuilder.Entity(builder => diff --git a/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/Migrations/20260312174453_AddHideStoryViewsAndFixStoryViewer.Designer.cs b/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/Migrations/20260312174453_AddHideStoryViewsAndFixStoryViewer.Designer.cs new file mode 100644 index 0000000..ba7c2b4 --- /dev/null +++ b/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/Migrations/20260312174453_AddHideStoryViewsAndFixStoryViewer.Designer.cs @@ -0,0 +1,178 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Vortex.Modules.Identity.Infrastructure.Persistence; + +#nullable disable + +namespace Vortex.Modules.Identity.Infrastructure.Persistence.Migrations +{ + [DbContext(typeof(IdentityDbContext))] + [Migration("20260312174453_AddHideStoryViewsAndFixStoryViewer")] + partial class AddHideStoryViewsAndFixStoryViewer + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("identity") + .HasAnnotation("ProductVersion", "10.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Vortex.Modules.Identity.Domain.Friendship", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone"); + + b.Property("FriendId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId", "FriendId") + .IsUnique(); + + b.ToTable("Friendships", "identity"); + }); + + modelBuilder.Entity("Vortex.Modules.Identity.Domain.Story", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BgColor") + .HasColumnType("text"); + + b.Property("Content") + .HasColumnType("text"); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiresAt") + .HasColumnType("timestamp with time zone"); + + b.Property("MediaUrl") + .HasColumnType("text"); + + b.Property("Type") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("Stories", "identity"); + }); + + modelBuilder.Entity("Vortex.Modules.Identity.Domain.StoryViewer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("StoryId") + .HasColumnType("uuid"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("ViewedAt") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("StoryId", "UserId") + .IsUnique(); + + b.ToTable("StoryViewers", "identity"); + }); + + modelBuilder.Entity("Vortex.Modules.Identity.Domain.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Avatar") + .HasMaxLength(500) + .HasColumnType("character varying(500)"); + + b.Property("Bio") + .HasMaxLength(500) + .HasColumnType("character varying(500)"); + + b.Property("Birthday") + .HasColumnType("timestamp with time zone"); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("Email") + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("HideStoryViews") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false); + + b.Property("PasswordHash") + .IsRequired() + .HasColumnType("text"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.HasKey("Id"); + + b.HasIndex("Username") + .IsUnique(); + + b.ToTable("Users", "identity"); + }); + + modelBuilder.Entity("Vortex.Modules.Identity.Domain.StoryViewer", b => + { + b.HasOne("Vortex.Modules.Identity.Domain.Story", null) + .WithMany("Viewers") + .HasForeignKey("StoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Vortex.Modules.Identity.Domain.Story", b => + { + b.Navigation("Viewers"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/Migrations/20260312174453_AddHideStoryViewsAndFixStoryViewer.cs b/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/Migrations/20260312174453_AddHideStoryViewsAndFixStoryViewer.cs new file mode 100644 index 0000000..02624ae --- /dev/null +++ b/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/Migrations/20260312174453_AddHideStoryViewsAndFixStoryViewer.cs @@ -0,0 +1,52 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Vortex.Modules.Identity.Infrastructure.Persistence.Migrations +{ + /// + public partial class AddHideStoryViewsAndFixStoryViewer : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "StoryViewers", + schema: "identity", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + StoryId = table.Column(type: "uuid", nullable: false), + UserId = table.Column(type: "uuid", nullable: false), + ViewedAt = table.Column(type: "timestamp with time zone", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_StoryViewers", x => x.Id); + table.ForeignKey( + name: "FK_StoryViewers_Stories_StoryId", + column: x => x.StoryId, + principalSchema: "identity", + principalTable: "Stories", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_StoryViewers_StoryId_UserId", + schema: "identity", + table: "StoryViewers", + columns: new[] { "StoryId", "UserId" }, + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "StoryViewers", + schema: "identity"); + } + } +} diff --git a/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/Migrations/IdentityDbContextModelSnapshot.cs b/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/Migrations/IdentityDbContextModelSnapshot.cs index d28fc64..412c5ba 100644 --- a/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/Migrations/IdentityDbContextModelSnapshot.cs +++ b/apps/server-net/src/Modules/Identity/Infrastructure/Persistence/Migrations/IdentityDbContextModelSnapshot.cs @@ -82,6 +82,29 @@ namespace Vortex.Modules.Identity.Infrastructure.Persistence.Migrations b.ToTable("Stories", "identity"); }); + modelBuilder.Entity("Vortex.Modules.Identity.Domain.StoryViewer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("StoryId") + .HasColumnType("uuid"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("ViewedAt") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("StoryId", "UserId") + .IsUnique(); + + b.ToTable("StoryViewers", "identity"); + }); + modelBuilder.Entity("Vortex.Modules.Identity.Domain.User", b => { b.Property("Id") @@ -132,6 +155,20 @@ namespace Vortex.Modules.Identity.Infrastructure.Persistence.Migrations b.ToTable("Users", "identity"); }); + + modelBuilder.Entity("Vortex.Modules.Identity.Domain.StoryViewer", b => + { + b.HasOne("Vortex.Modules.Identity.Domain.Story", null) + .WithMany("Viewers") + .HasForeignKey("StoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Vortex.Modules.Identity.Domain.Story", b => + { + b.Navigation("Viewers"); + }); #pragma warning restore 612, 618 } } diff --git a/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Modules.Identity.dll b/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Modules.Identity.dll index 135306b..1b639e6 100644 Binary files a/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Modules.Identity.dll and b/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Modules.Identity.dll differ diff --git a/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Modules.Identity.pdb b/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Modules.Identity.pdb index f41747d..e2d25cc 100644 Binary files a/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Modules.Identity.pdb and b/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Modules.Identity.pdb differ diff --git a/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Shared.Kernel.dll b/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Shared.Kernel.dll index 028e242..e19c169 100644 Binary files a/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Shared.Kernel.dll and b/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Shared.Kernel.dll differ diff --git a/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb b/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb index 39cd861..2745893 100644 Binary files a/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb and b/apps/server-net/src/Modules/Identity/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb differ diff --git a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.AssemblyInfo.cs b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.AssemblyInfo.cs index 150c160..725a22e 100644 --- a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.AssemblyInfo.cs +++ b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Vortex.Modules.Identity")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d025c98e61cc08a53e6ebc62544d35be73a039e7")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1ec6b438d29413482e1393c8ee5717f1211bd2c1")] [assembly: System.Reflection.AssemblyProductAttribute("Vortex.Modules.Identity")] [assembly: System.Reflection.AssemblyTitleAttribute("Vortex.Modules.Identity")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.AssemblyInfoInputs.cache b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.AssemblyInfoInputs.cache index a8fd725..cce0710 100644 --- a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.AssemblyInfoInputs.cache +++ b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.AssemblyInfoInputs.cache @@ -1 +1 @@ -c3cadb6f052217ce8055d22cc45365823011381722fc02323060802003a463fa +9d9ffd258fd1015aa25ef1b7c83a7e79e77e5f90a31d4742aa8a559cc7698555 diff --git a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.GeneratedMSBuildEditorConfig.editorconfig b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.GeneratedMSBuildEditorConfig.editorconfig index 52e3cc1..b589f06 100644 --- a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.GeneratedMSBuildEditorConfig.editorconfig +++ b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.GeneratedMSBuildEditorConfig.editorconfig @@ -10,7 +10,7 @@ build_property.PlatformNeutralAssembly = build_property.EnforceExtendedAnalyzerRules = build_property._SupportedPlatformList = Linux,macOS,Windows build_property.RootNamespace = Vortex.Modules.Identity -build_property.ProjectDir = e:\GIT\forkmessager\apps\server-net\src\Modules\Identity\ +build_property.ProjectDir = E:\GIT\forkmessager\apps\server-net\src\Modules\Identity\ build_property.EnableComHosting = build_property.EnableGeneratedComInterfaceComImportInterop = build_property.EffectiveAnalysisLevelStyle = 10.0 diff --git a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.assets.cache b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.assets.cache index 9b8b4d6..f3cfbd3 100644 Binary files a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.assets.cache and b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.assets.cache differ diff --git a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.csproj.AssemblyReference.cache b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.csproj.AssemblyReference.cache index aef6dd6..cd194c2 100644 Binary files a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.csproj.AssemblyReference.cache and b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.csproj.AssemblyReference.cache differ diff --git a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.csproj.CoreCompileInputs.cache b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.csproj.CoreCompileInputs.cache index ebd3ac4..e62d54c 100644 --- a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.csproj.CoreCompileInputs.cache +++ b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -9c4a98722858a19d09e1cea0910af6e8695a81fc69a145e71388b513aa5d75c8 +f5710cf9cae3bcef5bc636925e0d10679b38fdce0a7e8d6824b7b47ab526589d diff --git a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.dll b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.dll index 135306b..1b639e6 100644 Binary files a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.dll and b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.dll differ diff --git a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.pdb b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.pdb index f41747d..e2d25cc 100644 Binary files a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.pdb and b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/Vortex.Modules.Identity.pdb differ diff --git a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/ref/Vortex.Modules.Identity.dll b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/ref/Vortex.Modules.Identity.dll index b8b23eb..7b1a181 100644 Binary files a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/ref/Vortex.Modules.Identity.dll and b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/ref/Vortex.Modules.Identity.dll differ diff --git a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/refint/Vortex.Modules.Identity.dll b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/refint/Vortex.Modules.Identity.dll index b8b23eb..7b1a181 100644 Binary files a/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/refint/Vortex.Modules.Identity.dll and b/apps/server-net/src/Modules/Identity/obj/Debug/net10.0/refint/Vortex.Modules.Identity.dll differ diff --git a/apps/server-net/src/Modules/Identity/obj/Vortex.Modules.Identity.csproj.nuget.dgspec.json b/apps/server-net/src/Modules/Identity/obj/Vortex.Modules.Identity.csproj.nuget.dgspec.json index 8dbbccb..cc427d1 100644 --- a/apps/server-net/src/Modules/Identity/obj/Vortex.Modules.Identity.csproj.nuget.dgspec.json +++ b/apps/server-net/src/Modules/Identity/obj/Vortex.Modules.Identity.csproj.nuget.dgspec.json @@ -1,17 +1,17 @@ { "format": 1, "restore": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj": {} + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj": {} }, "projects": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj": { + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", "projectName": "Vortex.Modules.Identity", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -33,8 +33,8 @@ "net10.0": { "targetAlias": "net10.0", "projectReferences": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" } } } @@ -534,14 +534,14 @@ } } }, - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", "projectName": "Vortex.Shared.Kernel", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" diff --git a/apps/server-net/src/Modules/Identity/obj/project.assets.json b/apps/server-net/src/Modules/Identity/obj/project.assets.json index 43168f2..a02c8e9 100644 --- a/apps/server-net/src/Modules/Identity/obj/project.assets.json +++ b/apps/server-net/src/Modules/Identity/obj/project.assets.json @@ -1201,11 +1201,11 @@ "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", "projectName": "Vortex.Modules.Identity", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -1227,8 +1227,8 @@ "net10.0": { "targetAlias": "net10.0", "projectReferences": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" } } } diff --git a/apps/server-net/src/Modules/Identity/obj/project.nuget.cache b/apps/server-net/src/Modules/Identity/obj/project.nuget.cache index d60bace..49ab231 100644 --- a/apps/server-net/src/Modules/Identity/obj/project.nuget.cache +++ b/apps/server-net/src/Modules/Identity/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "LFvHqUy/0DQ=", + "dgSpecHash": "zJhKnu5UrIw=", "success": true, - "projectFilePath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", + "projectFilePath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", "expectedPackageFiles": [ "C:\\Users\\HomePC\\.nuget\\packages\\bcrypt.net-next\\4.1.0\\bcrypt.net-next.4.1.0.nupkg.sha512", "C:\\Users\\HomePC\\.nuget\\packages\\mediatr\\12.0.1\\mediatr.12.0.1.nupkg.sha512", diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Infrastructure.dll b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Infrastructure.dll index 8c941a0..13409c7 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Infrastructure.dll and b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Infrastructure.dll differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Infrastructure.pdb b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Infrastructure.pdb index 8d216b2..d249982 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Infrastructure.pdb and b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Infrastructure.pdb differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Kernel.dll b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Kernel.dll index 028e242..e19c169 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Kernel.dll and b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Kernel.dll differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb index 39cd861..2745893 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb and b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.AssemblyInfo.cs b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.AssemblyInfo.cs index b175efb..4ec9a7d 100644 --- a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.AssemblyInfo.cs +++ b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Vortex.Shared.Infrastructure")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d025c98e61cc08a53e6ebc62544d35be73a039e7")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1ec6b438d29413482e1393c8ee5717f1211bd2c1")] [assembly: System.Reflection.AssemblyProductAttribute("Vortex.Shared.Infrastructure")] [assembly: System.Reflection.AssemblyTitleAttribute("Vortex.Shared.Infrastructure")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.AssemblyInfoInputs.cache b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.AssemblyInfoInputs.cache index 81c399b..8f8e06e 100644 --- a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.AssemblyInfoInputs.cache +++ b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.AssemblyInfoInputs.cache @@ -1 +1 @@ -adb7ba56083ad67b90d8f8374db47603dfc37300aa26f470695f98b925535a7f +e0bbb37b072e496f3944a8671d38c2aa23b6d62d5e51acb6547971f52a1ef575 diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.GeneratedMSBuildEditorConfig.editorconfig b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.GeneratedMSBuildEditorConfig.editorconfig index 1390419..7c086ae 100644 --- a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.GeneratedMSBuildEditorConfig.editorconfig +++ b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.GeneratedMSBuildEditorConfig.editorconfig @@ -10,7 +10,7 @@ build_property.PlatformNeutralAssembly = build_property.EnforceExtendedAnalyzerRules = build_property._SupportedPlatformList = Linux,macOS,Windows build_property.RootNamespace = Vortex.Shared.Infrastructure -build_property.ProjectDir = e:\GIT\forkmessager\apps\server-net\src\Shared\Vortex.Shared.Infrastructure\ +build_property.ProjectDir = E:\GIT\forkmessager\apps\server-net\src\Shared\Vortex.Shared.Infrastructure\ build_property.EnableComHosting = build_property.EnableGeneratedComInterfaceComImportInterop = build_property.EffectiveAnalysisLevelStyle = 10.0 diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.assets.cache b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.assets.cache index eea15bd..28d7049 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.assets.cache and b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.assets.cache differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.csproj.AssemblyReference.cache b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.csproj.AssemblyReference.cache index 295c10f..77eaa83 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.csproj.AssemblyReference.cache and b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.csproj.AssemblyReference.cache differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.dll b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.dll index 8c941a0..13409c7 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.dll and b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.dll differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.pdb b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.pdb index 8d216b2..d249982 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.pdb and b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/Vortex.Shared.Infrastructure.pdb differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/ref/Vortex.Shared.Infrastructure.dll b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/ref/Vortex.Shared.Infrastructure.dll index bffe85e..8fec4a2 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/ref/Vortex.Shared.Infrastructure.dll and b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/ref/Vortex.Shared.Infrastructure.dll differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/refint/Vortex.Shared.Infrastructure.dll b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/refint/Vortex.Shared.Infrastructure.dll index bffe85e..8fec4a2 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/refint/Vortex.Shared.Infrastructure.dll and b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Debug/net10.0/refint/Vortex.Shared.Infrastructure.dll differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Vortex.Shared.Infrastructure.csproj.nuget.dgspec.json b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Vortex.Shared.Infrastructure.csproj.nuget.dgspec.json index 3414628..99374e0 100644 --- a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Vortex.Shared.Infrastructure.csproj.nuget.dgspec.json +++ b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/Vortex.Shared.Infrastructure.csproj.nuget.dgspec.json @@ -1,17 +1,17 @@ { "format": 1, "restore": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj": {} + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj": {} }, "projects": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj": { + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj", "projectName": "Vortex.Shared.Infrastructure", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -33,8 +33,8 @@ "net10.0": { "targetAlias": "net10.0", "projectReferences": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" } } } @@ -510,14 +510,14 @@ } } }, - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", "projectName": "Vortex.Shared.Kernel", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/project.assets.json b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/project.assets.json index f122e8b..aebb305 100644 --- a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/project.assets.json +++ b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/project.assets.json @@ -992,11 +992,11 @@ "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj", "projectName": "Vortex.Shared.Infrastructure", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -1018,8 +1018,8 @@ "net10.0": { "targetAlias": "net10.0", "projectReferences": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" } } } diff --git a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/project.nuget.cache b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/project.nuget.cache index 13494a0..5225368 100644 --- a/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/project.nuget.cache +++ b/apps/server-net/src/Shared/Vortex.Shared.Infrastructure/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "mujERCxuDP8=", + "dgSpecHash": "+h84t9fYbLg=", "success": true, - "projectFilePath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj", + "projectFilePath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Infrastructure\\Vortex.Shared.Infrastructure.csproj", "expectedPackageFiles": [ "C:\\Users\\HomePC\\.nuget\\packages\\mediatr\\12.0.1\\mediatr.12.0.1.nupkg.sha512", "C:\\Users\\HomePC\\.nuget\\packages\\mediatr.contracts\\2.0.1\\mediatr.contracts.2.0.1.nupkg.sha512", diff --git a/apps/server-net/src/Shared/Vortex.Shared.Kernel/bin/Debug/net10.0/Vortex.Shared.Kernel.dll b/apps/server-net/src/Shared/Vortex.Shared.Kernel/bin/Debug/net10.0/Vortex.Shared.Kernel.dll index 028e242..e19c169 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Kernel/bin/Debug/net10.0/Vortex.Shared.Kernel.dll and b/apps/server-net/src/Shared/Vortex.Shared.Kernel/bin/Debug/net10.0/Vortex.Shared.Kernel.dll differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Kernel/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb b/apps/server-net/src/Shared/Vortex.Shared.Kernel/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb index 39cd861..2745893 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Kernel/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb and b/apps/server-net/src/Shared/Vortex.Shared.Kernel/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.AssemblyInfo.cs b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.AssemblyInfo.cs index fa00c6f..4b3a1f6 100644 --- a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.AssemblyInfo.cs +++ b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Vortex.Shared.Kernel")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d025c98e61cc08a53e6ebc62544d35be73a039e7")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1ec6b438d29413482e1393c8ee5717f1211bd2c1")] [assembly: System.Reflection.AssemblyProductAttribute("Vortex.Shared.Kernel")] [assembly: System.Reflection.AssemblyTitleAttribute("Vortex.Shared.Kernel")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.AssemblyInfoInputs.cache b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.AssemblyInfoInputs.cache index d092b97..2a5a20e 100644 --- a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.AssemblyInfoInputs.cache +++ b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.AssemblyInfoInputs.cache @@ -1 +1 @@ -2ab218fedb325bf279a8607f3ddd12468bb20cfa3895570bcfa7cdb1e276425f +b12266e8303643e0701f21b3366bc23363791cc5e63972b801eea2f6405398dc diff --git a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.GeneratedMSBuildEditorConfig.editorconfig b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.GeneratedMSBuildEditorConfig.editorconfig index 0e1fac7..6240a51 100644 --- a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.GeneratedMSBuildEditorConfig.editorconfig +++ b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.GeneratedMSBuildEditorConfig.editorconfig @@ -10,7 +10,7 @@ build_property.PlatformNeutralAssembly = build_property.EnforceExtendedAnalyzerRules = build_property._SupportedPlatformList = Linux,macOS,Windows build_property.RootNamespace = Vortex.Shared.Kernel -build_property.ProjectDir = e:\GIT\forkmessager\apps\server-net\src\Shared\Vortex.Shared.Kernel\ +build_property.ProjectDir = E:\GIT\forkmessager\apps\server-net\src\Shared\Vortex.Shared.Kernel\ build_property.EnableComHosting = build_property.EnableGeneratedComInterfaceComImportInterop = build_property.EffectiveAnalysisLevelStyle = 10.0 diff --git a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.assets.cache b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.assets.cache index 32bfcfc..5591bdb 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.assets.cache and b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.assets.cache differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.dll b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.dll index 028e242..e19c169 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.dll and b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.dll differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.pdb b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.pdb index 39cd861..2745893 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.pdb and b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/Vortex.Shared.Kernel.pdb differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/ref/Vortex.Shared.Kernel.dll b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/ref/Vortex.Shared.Kernel.dll index b35cec0..63b9d0e 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/ref/Vortex.Shared.Kernel.dll and b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/ref/Vortex.Shared.Kernel.dll differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/refint/Vortex.Shared.Kernel.dll b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/refint/Vortex.Shared.Kernel.dll index b35cec0..63b9d0e 100644 Binary files a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/refint/Vortex.Shared.Kernel.dll and b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Debug/net10.0/refint/Vortex.Shared.Kernel.dll differ diff --git a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Vortex.Shared.Kernel.csproj.nuget.dgspec.json b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Vortex.Shared.Kernel.csproj.nuget.dgspec.json index 99e3469..46d8a48 100644 --- a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Vortex.Shared.Kernel.csproj.nuget.dgspec.json +++ b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/Vortex.Shared.Kernel.csproj.nuget.dgspec.json @@ -1,17 +1,17 @@ { "format": 1, "restore": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": {} + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": {} }, "projects": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", "projectName": "Vortex.Shared.Kernel", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" diff --git a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/project.nuget.cache b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/project.nuget.cache index adbae73..7674613 100644 --- a/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/project.nuget.cache +++ b/apps/server-net/src/Shared/Vortex.Shared.Kernel/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "SdDYXwY4FZU=", + "dgSpecHash": "qfmzINr+8lA=", "success": true, - "projectFilePath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", + "projectFilePath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", "expectedPackageFiles": [ "C:\\Users\\HomePC\\.nuget\\packages\\mediatr\\12.0.1\\mediatr.12.0.1.nupkg.sha512", "C:\\Users\\HomePC\\.nuget\\packages\\mediatr.contracts\\2.0.1\\mediatr.contracts.2.0.1.nupkg.sha512", diff --git a/apps/server-net/src/Vortex.Host/Controllers/ChatsController.cs b/apps/server-net/src/Vortex.Host/Controllers/ChatsController.cs index 6fe36fb..1359dc8 100644 --- a/apps/server-net/src/Vortex.Host/Controllers/ChatsController.cs +++ b/apps/server-net/src/Vortex.Host/Controllers/ChatsController.cs @@ -74,6 +74,22 @@ public sealed class ChatsController : ControllerBase { var m = chatMessages.First(); var senderObj = await _userRepository.GetByIdAsync(m.SenderId, ct); + + var reactionsWithUser = new List(); + foreach (var r in m.Reactions) + { + var rUser = await _userRepository.GetByIdAsync(r.UserId, ct); + reactionsWithUser.Add(new + { + id = r.Id, + emoji = r.Emoji, + userId = r.UserId, + user = rUser != null + ? new { id = rUser.Id, username = rUser.Username, displayName = rUser.DisplayName } + : new { id = r.UserId, username = "unknown", displayName = "Unknown" } + }); + } + messagesList.Add(new { m.Id, @@ -93,7 +109,7 @@ public sealed class ChatsController : ControllerBase displayName = senderObj.DisplayName, avatar = senderObj.Avatar } : new { id = m.SenderId, username = "unknown", displayName = "Unknown", avatar = (string?)null }, - Reactions = new List(), + reactions = reactionsWithUser, ReadBy = m.ReadBy.Select(r => new { userId = r.UserId }).ToList() }); } @@ -131,7 +147,7 @@ public sealed class ChatsController : ControllerBase [HttpPost("personal")] public async Task CreatePersonal([FromBody] CreatePersonalChatRequest request, CancellationToken ct) { - var command = new CreateChatCommand((string?)null, ChatType.Personal, new List { _userContext.UserId, request.UserId }); + var command = new CreateChatCommand(string.Empty, ChatType.Personal, new List { _userContext.UserId, request.UserId }); Result result = await _sender.Send(command, ct); if (result.IsFailure) return BadRequest(result.Error); @@ -142,7 +158,13 @@ public sealed class ChatsController : ControllerBase [HttpPost("group")] public async Task CreateGroup([FromBody] CreateGroupChatRequest request, CancellationToken ct) { - var command = new CreateChatCommand(request.Name, ChatType.Group, request.MemberIds); + var memberIds = request.MemberIds.ToList(); + if (!memberIds.Contains(_userContext.UserId)) + { + memberIds.Add(_userContext.UserId); + } + + var command = new CreateChatCommand(request.Name, ChatType.Group, memberIds); Result result = await _sender.Send(command, ct); if (result.IsFailure) return BadRequest(result.Error); diff --git a/apps/server-net/src/Vortex.Host/Controllers/MessagesController.cs b/apps/server-net/src/Vortex.Host/Controllers/MessagesController.cs index 29b7194..8af1dc1 100644 --- a/apps/server-net/src/Vortex.Host/Controllers/MessagesController.cs +++ b/apps/server-net/src/Vortex.Host/Controllers/MessagesController.cs @@ -30,6 +30,9 @@ public sealed class MessagesController : ControllerBase { var messages = await messageRepository.GetChatMessagesAsync(chatId, 50, 0, ct); + // Filter out messages deleted for this user + messages = messages.Where(m => !m.DeletedByUsers.Contains(_userContext.UserId)).ToList(); + // Collect all user IDs needed (senders, forwarded from) var userIds = messages.Select(m => m.SenderId).ToList(); userIds.AddRange(messages.Where(m => m.ForwardedFromId.HasValue).Select(m => m.ForwardedFromId!.Value)); @@ -61,6 +64,21 @@ public sealed class MessagesController : ControllerBase } } + var reactionsWithUser = new List(); + foreach (var r in m.Reactions) + { + var rUser = await _userRepository.GetByIdAsync(r.UserId, ct); + reactionsWithUser.Add(new + { + id = r.Id, + emoji = r.Emoji, + userId = r.UserId, + user = rUser != null + ? new { id = rUser.Id, username = rUser.Username, displayName = rUser.DisplayName } + : new { id = r.UserId, username = "unknown", displayName = "Unknown" } + }); + } + result.Add(new { m.Id, @@ -94,7 +112,7 @@ public sealed class MessagesController : ControllerBase displayName = s.DisplayName, avatar = s.Avatar } : new { id = m.SenderId, username = "unknown", displayName = "Unknown", avatar = (string?)null }, - reactions = m.Reactions.Select(r => new { r.UserId, r.Emoji }).ToList(), + reactions = reactionsWithUser, readBy = m.ReadBy.Select(r => new { userId = r.UserId }).ToList() }); } @@ -107,6 +125,9 @@ public sealed class MessagesController : ControllerBase { var messages = await messageRepository.SearchMessagesAsync(q, chatId, ct); + // Filter out messages deleted for this user + messages = messages.Where(m => !m.DeletedByUsers.Contains(_userContext.UserId)).ToList(); + var userIds = messages.Select(m => m.SenderId).ToList(); userIds.AddRange(messages.Where(m => m.ForwardedFromId.HasValue).Select(m => m.ForwardedFromId!.Value)); diff --git a/apps/server-net/src/Vortex.Host/Controllers/StoriesController.cs b/apps/server-net/src/Vortex.Host/Controllers/StoriesController.cs index ab788e1..01a56d9 100644 --- a/apps/server-net/src/Vortex.Host/Controllers/StoriesController.cs +++ b/apps/server-net/src/Vortex.Host/Controllers/StoriesController.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.SignalR; using Microsoft.EntityFrameworkCore; using Vortex.Modules.Identity.Domain; using Vortex.Modules.Identity.Infrastructure.Persistence; @@ -16,12 +17,18 @@ public sealed class StoriesController : ControllerBase private readonly IdentityDbContext _context; private readonly IUserContext _userContext; private readonly IUserRepository _userRepository; + private readonly Microsoft.AspNetCore.SignalR.IHubContext _hubContext; - public StoriesController(IdentityDbContext context, IUserContext userContext, IUserRepository userRepository) + public StoriesController( + IdentityDbContext context, + IUserContext userContext, + IUserRepository userRepository, + Microsoft.AspNetCore.SignalR.IHubContext hubContext) { _context = context; _userContext = userContext; _userRepository = userRepository; + _hubContext = hubContext; } [HttpGet] @@ -37,17 +44,25 @@ public sealed class StoriesController : ControllerBase friendIds.Add(currentUserId); var stories = await _context.Stories + .Include(s => s.Viewers) .Where(s => s.ExpiresAt > DateTime.UtcNow && friendIds.Contains(s.UserId)) .OrderByDescending(s => s.CreatedAt) .ToListAsync(ct); - var groups = stories.GroupBy(s => s.UserId); + var groups = stories.GroupBy(s => s.UserId).ToList(); var result = new List(); + var userIds = groups.Select(g => g.Key).ToList(); + var userMap = new Dictionary(); + foreach (var uid in userIds) + { + var u = await _userRepository.GetByIdAsync(uid, ct); + if (u != null) userMap[uid] = u; + } + foreach (var group in groups) { - var user = await _userRepository.GetByIdAsync(group.Key, ct); - if (user == null) continue; + if (!userMap.TryGetValue(group.Key, out var user)) continue; result.Add(new { @@ -67,10 +82,10 @@ public sealed class StoriesController : ControllerBase bgColor = s.BgColor, createdAt = s.CreatedAt, expiresAt = s.ExpiresAt, - viewCount = 0, - viewed = false - }).ToList(), - hasUnviewed = true + viewCount = s.Viewers.Count, + viewed = s.Viewers.Any(v => v.UserId == currentUserId) + }).OrderBy(s => s.createdAt).ToList(), + hasUnviewed = group.Any(s => !s.Viewers.Any(v => v.UserId == currentUserId)) }); } @@ -99,6 +114,84 @@ public sealed class StoriesController : ControllerBase return Ok(new { id = story.Id }); } + + [HttpPost("{id}/view")] + public async Task ViewStory(Guid id, CancellationToken ct) + { + var story = await _context.Stories + .Include(s => s.Viewers) + .FirstOrDefaultAsync(s => s.Id == id, ct); + + if (story == null) return NotFound(); + if (story.UserId == _userContext.UserId) return Ok(new { message = "Owner view" }); + + if (!story.Viewers.Any(v => v.UserId == _userContext.UserId)) + { + story.AddViewer(_userContext.UserId); + await _context.SaveChangesAsync(ct); + + // Notify owner via SignalR + var viewer = await _userRepository.GetByIdAsync(_userContext.UserId, ct); + await _hubContext.Clients.User(story.UserId.ToString()).SendAsync("story_viewed", new + { + storyId = story.Id, + userId = _userContext.UserId, + username = viewer?.Username, + displayName = viewer?.DisplayName, + avatar = viewer?.Avatar, + viewedAt = DateTime.UtcNow, + viewCount = story.Viewers.Count + }, ct); + } + + return Ok(new { message = "Story viewed" }); + } + + [HttpGet("{id}/viewers")] + public async Task GetStoryViewers(Guid id, CancellationToken ct) + { + var story = await _context.Stories + .Include(s => s.Viewers) + .FirstOrDefaultAsync(s => s.Id == id, ct); + + if (story == null) return NotFound(); + if (story.UserId != _userContext.UserId) return Forbid(); + + var viewerIds = story.Viewers.Select(v => v.UserId).ToList(); + var viewers = new List(); + + foreach (var viewerId in viewerIds) + { + var user = await _userRepository.GetByIdAsync(viewerId, ct); + if (user == null) continue; + + var viewerRecord = story.Viewers.First(v => v.UserId == viewerId); + + viewers.Add(new + { + userId = user.Id, + username = user.Username, + displayName = user.DisplayName, + avatar = user.Avatar, + viewedAt = viewerRecord.ViewedAt + }); + } + + return Ok(viewers); + } + + [HttpDelete("{id}")] + public async Task DeleteStory(Guid id, CancellationToken ct) + { + var story = await _context.Stories.FindAsync(new object[] { id }, ct); + if (story == null) return NotFound(); + if (story.UserId != _userContext.UserId) return Forbid(); + + _context.Stories.Remove(story); + await _context.SaveChangesAsync(ct); + + return Ok(new { message = "Story deleted" }); + } } public sealed record CreateStoryRequest(string Type, string? MediaUrl, string? Content, string? BgColor); diff --git a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Host.dll b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Host.dll index c0da82b..0bf8774 100644 Binary files a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Host.dll and b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Host.dll differ diff --git a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Host.exe b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Host.exe index 2418d6b..c643153 100644 Binary files a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Host.exe and b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Host.exe differ diff --git a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Host.pdb b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Host.pdb index 12f9645..9cb31f5 100644 Binary files a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Host.pdb and b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Host.pdb differ diff --git a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Chats.dll b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Chats.dll index 4ec7d98..0411719 100644 Binary files a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Chats.dll and b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Chats.dll differ diff --git a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Chats.pdb b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Chats.pdb index 1b94ab8..954bc5b 100644 Binary files a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Chats.pdb and b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Chats.pdb differ diff --git a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Identity.dll b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Identity.dll index d392539..1b639e6 100644 Binary files a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Identity.dll and b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Identity.dll differ diff --git a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Identity.pdb b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Identity.pdb index 33714fb..e2d25cc 100644 Binary files a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Identity.pdb and b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Modules.Identity.pdb differ diff --git a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Infrastructure.dll b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Infrastructure.dll index 5c6b6ac..13409c7 100644 Binary files a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Infrastructure.dll and b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Infrastructure.dll differ diff --git a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Infrastructure.pdb b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Infrastructure.pdb index c2bef06..d249982 100644 Binary files a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Infrastructure.pdb and b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Infrastructure.pdb differ diff --git a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Kernel.dll b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Kernel.dll index 799972f..e19c169 100644 Binary files a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Kernel.dll and b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Kernel.dll differ diff --git a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb index 712f309..2745893 100644 Binary files a/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb and b/apps/server-net/src/Vortex.Host/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb differ diff --git a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.AssemblyInfo.cs b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.AssemblyInfo.cs index 4796e58..0bea293 100644 --- a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.AssemblyInfo.cs +++ b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Vortex.Host")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d025c98e61cc08a53e6ebc62544d35be73a039e7")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1ec6b438d29413482e1393c8ee5717f1211bd2c1")] [assembly: System.Reflection.AssemblyProductAttribute("Vortex.Host")] [assembly: System.Reflection.AssemblyTitleAttribute("Vortex.Host")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.AssemblyInfoInputs.cache b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.AssemblyInfoInputs.cache index c015d55..94fe290 100644 --- a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.AssemblyInfoInputs.cache +++ b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.AssemblyInfoInputs.cache @@ -1 +1 @@ -7eb1f40e06ff22545aecfb70096f70b5f91da82514bc2bf01247c568eaabc058 +c8308646f5647671185661b28c5c3eabe4dd11328d5c7402bbee505991c08d6d diff --git a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.csproj.AssemblyReference.cache b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.csproj.AssemblyReference.cache index 8916aab..ce87ccf 100644 Binary files a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.csproj.AssemblyReference.cache and b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.csproj.AssemblyReference.cache differ diff --git a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.csproj.CoreCompileInputs.cache b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.csproj.CoreCompileInputs.cache index cade97f..07e4967 100644 --- a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.csproj.CoreCompileInputs.cache +++ b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -11d26d1b87f3679d8be8eeb05168fa71c45a3d83b12aa28eb232183b34639103 +a0a268746b849e72488e8608dc7529251d735d933091a22e5f93d38662ef7534 diff --git a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.dll b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.dll index c0da82b..0bf8774 100644 Binary files a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.dll and b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.dll differ diff --git a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.pdb b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.pdb index 12f9645..9cb31f5 100644 Binary files a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.pdb and b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/Vortex.Host.pdb differ diff --git a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/apphost.exe b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/apphost.exe index 2418d6b..c643153 100644 Binary files a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/apphost.exe and b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/apphost.exe differ diff --git a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/ref/Vortex.Host.dll b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/ref/Vortex.Host.dll index ef17f06..8f5a32d 100644 Binary files a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/ref/Vortex.Host.dll and b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/ref/Vortex.Host.dll differ diff --git a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/refint/Vortex.Host.dll b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/refint/Vortex.Host.dll index ef17f06..8f5a32d 100644 Binary files a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/refint/Vortex.Host.dll and b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/refint/Vortex.Host.dll differ diff --git a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json index 82e23de..ca23828 100644 --- a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json +++ b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json @@ -1 +1 @@ -{"GlobalPropertiesHash":"2XkPbXFkjVRjCUBTJbQq8CDd7pjsUOS1j3gPHS73xDA=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["uOUIBvk7jdHp7c93RIuECwNykpOmiZnVmQxETsngeR0=","ToV71GGCtcAptkaGqQYXeNtDQnAJEljvYAkAKnIRZ\u002Bs=","2fjU\u002BjCBiHEuKj2uQgoWti0oZXkpAdICFty/O9cJSyc=","aTLUi985DoL1wb7QmuhiHoO7J3hi30WEVAUbYVkXxss=","j8oEy769HqBb/9GTCrDSdFySoPpImy4D0XnzBBTzsT0="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file +{"GlobalPropertiesHash":"2XkPbXFkjVRjCUBTJbQq8CDd7pjsUOS1j3gPHS73xDA=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["uOUIBvk7jdHp7c93RIuECwNykpOmiZnVmQxETsngeR0=","ToV71GGCtcAptkaGqQYXeNtDQnAJEljvYAkAKnIRZ\u002Bs=","2fjU\u002BjCBiHEuKj2uQgoWti0oZXkpAdICFty/O9cJSyc=","aTLUi985DoL1wb7QmuhiHoO7J3hi30WEVAUbYVkXxss=","HLBqD\u002BLr6lExIdmRzMVhSCOgnqBnWCEhelB/vqt5YM0="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file diff --git a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/rjsmrazor.dswa.cache.json b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/rjsmrazor.dswa.cache.json index a8f4a73..f902598 100644 --- a/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/rjsmrazor.dswa.cache.json +++ b/apps/server-net/src/Vortex.Host/obj/Debug/net10.0/rjsmrazor.dswa.cache.json @@ -1 +1 @@ -{"GlobalPropertiesHash":"2L4HBRt/ChGO9rohi3wtSDqo95X47fme5m8OHgJIZL0=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["uOUIBvk7jdHp7c93RIuECwNykpOmiZnVmQxETsngeR0=","ToV71GGCtcAptkaGqQYXeNtDQnAJEljvYAkAKnIRZ\u002Bs=","2fjU\u002BjCBiHEuKj2uQgoWti0oZXkpAdICFty/O9cJSyc=","aTLUi985DoL1wb7QmuhiHoO7J3hi30WEVAUbYVkXxss=","j8oEy769HqBb/9GTCrDSdFySoPpImy4D0XnzBBTzsT0="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file +{"GlobalPropertiesHash":"2L4HBRt/ChGO9rohi3wtSDqo95X47fme5m8OHgJIZL0=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["uOUIBvk7jdHp7c93RIuECwNykpOmiZnVmQxETsngeR0=","ToV71GGCtcAptkaGqQYXeNtDQnAJEljvYAkAKnIRZ\u002Bs=","2fjU\u002BjCBiHEuKj2uQgoWti0oZXkpAdICFty/O9cJSyc=","aTLUi985DoL1wb7QmuhiHoO7J3hi30WEVAUbYVkXxss=","HLBqD\u002BLr6lExIdmRzMVhSCOgnqBnWCEhelB/vqt5YM0="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/.msCoverageSourceRootsMapping_Vortex.Modules.Chats.UnitTests b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/.msCoverageSourceRootsMapping_Vortex.Modules.Chats.UnitTests index 21cb1e1..f36440a 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/.msCoverageSourceRootsMapping_Vortex.Modules.Chats.UnitTests and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/.msCoverageSourceRootsMapping_Vortex.Modules.Chats.UnitTests differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/CoverletSourceRootsMapping_Vortex.Modules.Chats.UnitTests b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/CoverletSourceRootsMapping_Vortex.Modules.Chats.UnitTests index 21cb1e1..f36440a 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/CoverletSourceRootsMapping_Vortex.Modules.Chats.UnitTests and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/CoverletSourceRootsMapping_Vortex.Modules.Chats.UnitTests differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.UnitTests.dll b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.UnitTests.dll index feaf609..29b5310 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.UnitTests.dll and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.UnitTests.dll differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.UnitTests.pdb b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.UnitTests.pdb index f82552c..477304b 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.UnitTests.pdb and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.UnitTests.pdb differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.dll b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.dll index 49bf83b..d24a264 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.dll and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.dll differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.pdb b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.pdb index 1f6de7d..219a970 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.pdb and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Modules.Chats.pdb differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.dll b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.dll index 028e242..e19c169 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.dll and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.dll differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb index 39cd861..2745893 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.AssemblyInfo.cs b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.AssemblyInfo.cs index d94a838..23919a9 100644 --- a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.AssemblyInfo.cs +++ b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Vortex.Modules.Chats.UnitTests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d025c98e61cc08a53e6ebc62544d35be73a039e7")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1ec6b438d29413482e1393c8ee5717f1211bd2c1")] [assembly: System.Reflection.AssemblyProductAttribute("Vortex.Modules.Chats.UnitTests")] [assembly: System.Reflection.AssemblyTitleAttribute("Vortex.Modules.Chats.UnitTests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.AssemblyInfoInputs.cache b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.AssemblyInfoInputs.cache index f0e544f..435a1e2 100644 --- a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.AssemblyInfoInputs.cache +++ b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.AssemblyInfoInputs.cache @@ -1 +1 @@ -fa3f075252cdb59e929a4e80174b47f2ebd84190cee4f9d3ee57c66eb141587a +47466bb342596afd8dc5652a074c449e55657cc43e99cd188b47d68b553d0013 diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.GeneratedMSBuildEditorConfig.editorconfig b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.GeneratedMSBuildEditorConfig.editorconfig index abc3dc1..e77bd3c 100644 --- a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.GeneratedMSBuildEditorConfig.editorconfig +++ b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.GeneratedMSBuildEditorConfig.editorconfig @@ -10,7 +10,7 @@ build_property.PlatformNeutralAssembly = build_property.EnforceExtendedAnalyzerRules = build_property._SupportedPlatformList = Linux,macOS,Windows build_property.RootNamespace = Vortex.Modules.Chats.UnitTests -build_property.ProjectDir = e:\GIT\forkmessager\apps\server-net\tests\Vortex.Modules.Chats.UnitTests\ +build_property.ProjectDir = E:\GIT\forkmessager\apps\server-net\tests\Vortex.Modules.Chats.UnitTests\ build_property.EnableComHosting = build_property.EnableGeneratedComInterfaceComImportInterop = build_property.EffectiveAnalysisLevelStyle = 10.0 diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.assets.cache b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.assets.cache index 96d993c..3c9072c 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.assets.cache and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.assets.cache differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.csproj.AssemblyReference.cache b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.csproj.AssemblyReference.cache index 898e2b7..9f644b1 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.csproj.AssemblyReference.cache and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.csproj.AssemblyReference.cache differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.dll b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.dll index feaf609..29b5310 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.dll and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.dll differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.genruntimeconfig.cache b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.genruntimeconfig.cache index 03ad036..ee8533c 100644 --- a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.genruntimeconfig.cache +++ b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.genruntimeconfig.cache @@ -1 +1 @@ -b43fbda7251a15bc9c2e63f065f04cdc23dd8cd342d1dae3beee17e0014b5713 +b00a6e4106b08fded34772d2f5f0132a22d8d5aa5ce5a93185141a9610729f08 diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.pdb b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.pdb index f82552c..477304b 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.pdb and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/Vortex.Modules.Chats.UnitTests.pdb differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/ref/Vortex.Modules.Chats.UnitTests.dll b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/ref/Vortex.Modules.Chats.UnitTests.dll index 307baaf..c857395 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/ref/Vortex.Modules.Chats.UnitTests.dll and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/ref/Vortex.Modules.Chats.UnitTests.dll differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/refint/Vortex.Modules.Chats.UnitTests.dll b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/refint/Vortex.Modules.Chats.UnitTests.dll index 307baaf..c857395 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/refint/Vortex.Modules.Chats.UnitTests.dll and b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Debug/net10.0/refint/Vortex.Modules.Chats.UnitTests.dll differ diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Vortex.Modules.Chats.UnitTests.csproj.nuget.dgspec.json b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Vortex.Modules.Chats.UnitTests.csproj.nuget.dgspec.json index 5a6f37a..0130810 100644 --- a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Vortex.Modules.Chats.UnitTests.csproj.nuget.dgspec.json +++ b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/Vortex.Modules.Chats.UnitTests.csproj.nuget.dgspec.json @@ -1,17 +1,17 @@ { "format": 1, "restore": { - "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj": {} + "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj": {} }, "projects": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj": { + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", "projectName": "Vortex.Modules.Chats", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -33,8 +33,8 @@ "net10.0": { "targetAlias": "net10.0", "projectReferences": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" } } } @@ -518,14 +518,14 @@ } } }, - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", "projectName": "Vortex.Shared.Kernel", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -863,14 +863,14 @@ } } }, - "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj": { + "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj", "projectName": "Vortex.Modules.Chats.UnitTests", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -892,8 +892,8 @@ "net10.0": { "targetAlias": "net10.0", "projectReferences": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj": { - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj" + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj": { + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj" } } } diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/project.assets.json b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/project.assets.json index 94a8cf2..6ef0523 100644 --- a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/project.assets.json +++ b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/project.assets.json @@ -1871,11 +1871,11 @@ "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj", "projectName": "Vortex.Modules.Chats.UnitTests", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -1897,8 +1897,8 @@ "net10.0": { "targetAlias": "net10.0", "projectReferences": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj": { - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj" + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj": { + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Chats\\Vortex.Modules.Chats.csproj" } } } diff --git a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/project.nuget.cache b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/project.nuget.cache index cf4decb..055369c 100644 --- a/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/project.nuget.cache +++ b/apps/server-net/tests/Vortex.Modules.Chats.UnitTests/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "FhQL6UP/Q4U=", + "dgSpecHash": "thvDzi51E44=", "success": true, - "projectFilePath": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj", + "projectFilePath": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Chats.UnitTests\\Vortex.Modules.Chats.UnitTests.csproj", "expectedPackageFiles": [ "C:\\Users\\HomePC\\.nuget\\packages\\castle.core\\5.1.1\\castle.core.5.1.1.nupkg.sha512", "C:\\Users\\HomePC\\.nuget\\packages\\coverlet.collector\\6.0.4\\coverlet.collector.6.0.4.nupkg.sha512", diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/.msCoverageSourceRootsMapping_Vortex.Modules.Identity.UnitTests b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/.msCoverageSourceRootsMapping_Vortex.Modules.Identity.UnitTests index daf0804..001b64a 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/.msCoverageSourceRootsMapping_Vortex.Modules.Identity.UnitTests and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/.msCoverageSourceRootsMapping_Vortex.Modules.Identity.UnitTests differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/CoverletSourceRootsMapping_Vortex.Modules.Identity.UnitTests b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/CoverletSourceRootsMapping_Vortex.Modules.Identity.UnitTests index daf0804..001b64a 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/CoverletSourceRootsMapping_Vortex.Modules.Identity.UnitTests and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/CoverletSourceRootsMapping_Vortex.Modules.Identity.UnitTests differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.UnitTests.dll b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.UnitTests.dll index 972441a..26471da 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.UnitTests.dll and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.UnitTests.dll differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.UnitTests.pdb b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.UnitTests.pdb index cfc6236..3fce607 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.UnitTests.pdb and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.UnitTests.pdb differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.dll b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.dll index 135306b..3f26d3e 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.dll and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.dll differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.pdb b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.pdb index f41747d..dc171c6 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.pdb and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Modules.Identity.pdb differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.dll b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.dll index 028e242..e19c169 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.dll and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.dll differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb index 39cd861..2745893 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/bin/Debug/net10.0/Vortex.Shared.Kernel.pdb differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.AssemblyInfo.cs b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.AssemblyInfo.cs index 9dbc396..2083a05 100644 --- a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.AssemblyInfo.cs +++ b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Vortex.Modules.Identity.UnitTests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d025c98e61cc08a53e6ebc62544d35be73a039e7")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1ec6b438d29413482e1393c8ee5717f1211bd2c1")] [assembly: System.Reflection.AssemblyProductAttribute("Vortex.Modules.Identity.UnitTests")] [assembly: System.Reflection.AssemblyTitleAttribute("Vortex.Modules.Identity.UnitTests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.AssemblyInfoInputs.cache b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.AssemblyInfoInputs.cache index ef6fc1e..d1f23b8 100644 --- a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.AssemblyInfoInputs.cache +++ b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.AssemblyInfoInputs.cache @@ -1 +1 @@ -0c14ed22894b602c8e801bb7d33e4ecff3d18332638c110bb3e215e73c01507a +65d320bebd25bc74133afa5858ea74eedd892ff77b70947e5aed749a99c73ed7 diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.GeneratedMSBuildEditorConfig.editorconfig b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.GeneratedMSBuildEditorConfig.editorconfig index d839dda..1e33a2e 100644 --- a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.GeneratedMSBuildEditorConfig.editorconfig +++ b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.GeneratedMSBuildEditorConfig.editorconfig @@ -10,7 +10,7 @@ build_property.PlatformNeutralAssembly = build_property.EnforceExtendedAnalyzerRules = build_property._SupportedPlatformList = Linux,macOS,Windows build_property.RootNamespace = Vortex.Modules.Identity.UnitTests -build_property.ProjectDir = e:\GIT\forkmessager\apps\server-net\tests\Vortex.Modules.Identity.UnitTests\ +build_property.ProjectDir = E:\GIT\forkmessager\apps\server-net\tests\Vortex.Modules.Identity.UnitTests\ build_property.EnableComHosting = build_property.EnableGeneratedComInterfaceComImportInterop = build_property.EffectiveAnalysisLevelStyle = 10.0 diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.assets.cache b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.assets.cache index a7ade36..6714ddd 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.assets.cache and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.assets.cache differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.csproj.AssemblyReference.cache b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.csproj.AssemblyReference.cache index 45b3130..777f28f 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.csproj.AssemblyReference.cache and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.csproj.AssemblyReference.cache differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.dll b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.dll index 972441a..26471da 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.dll and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.dll differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.genruntimeconfig.cache b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.genruntimeconfig.cache index ce99941..be87117 100644 --- a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.genruntimeconfig.cache +++ b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.genruntimeconfig.cache @@ -1 +1 @@ -158857ea33c0be6fdd0e00852d37f53c4c8b8207c49ebdf5324704f2f5f340ab +87e3ce9141edc8d915c53234eed0aa7b135e8840c35eb7a55d1f67b8589bd796 diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.pdb b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.pdb index cfc6236..3fce607 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.pdb and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/Vortex.Modules.Identity.UnitTests.pdb differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/ref/Vortex.Modules.Identity.UnitTests.dll b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/ref/Vortex.Modules.Identity.UnitTests.dll index 3fe1438..f9586e1 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/ref/Vortex.Modules.Identity.UnitTests.dll and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/ref/Vortex.Modules.Identity.UnitTests.dll differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/refint/Vortex.Modules.Identity.UnitTests.dll b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/refint/Vortex.Modules.Identity.UnitTests.dll index 3fe1438..f9586e1 100644 Binary files a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/refint/Vortex.Modules.Identity.UnitTests.dll and b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Debug/net10.0/refint/Vortex.Modules.Identity.UnitTests.dll differ diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Vortex.Modules.Identity.UnitTests.csproj.nuget.dgspec.json b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Vortex.Modules.Identity.UnitTests.csproj.nuget.dgspec.json index 005c56d..99da04b 100644 --- a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Vortex.Modules.Identity.UnitTests.csproj.nuget.dgspec.json +++ b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/Vortex.Modules.Identity.UnitTests.csproj.nuget.dgspec.json @@ -1,17 +1,17 @@ { "format": 1, "restore": { - "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj": {} + "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj": {} }, "projects": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj": { + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", "projectName": "Vortex.Modules.Identity", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -33,8 +33,8 @@ "net10.0": { "targetAlias": "net10.0", "projectReferences": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj" } } } @@ -534,14 +534,14 @@ } } }, - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", "projectName": "Vortex.Shared.Kernel", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\Vortex.Shared.Kernel.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Shared\\Vortex.Shared.Kernel\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -879,14 +879,14 @@ } } }, - "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj": { + "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj", "projectName": "Vortex.Modules.Identity.UnitTests", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -908,8 +908,8 @@ "net10.0": { "targetAlias": "net10.0", "projectReferences": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj": { - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj" + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj": { + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj" } } } diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/project.assets.json b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/project.assets.json index 9ccc889..a8ba8a8 100644 --- a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/project.assets.json +++ b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/project.assets.json @@ -2287,11 +2287,11 @@ "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj", + "projectUniqueName": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj", "projectName": "Vortex.Modules.Identity.UnitTests", - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj", + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj", "packagesPath": "C:\\Users\\HomePC\\.nuget\\packages\\", - "outputPath": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\obj\\", + "outputPath": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -2313,8 +2313,8 @@ "net10.0": { "targetAlias": "net10.0", "projectReferences": { - "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj": { - "projectPath": "e:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj" + "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj": { + "projectPath": "E:\\GIT\\forkmessager\\apps\\server-net\\src\\Modules\\Identity\\Vortex.Modules.Identity.csproj" } } } diff --git a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/project.nuget.cache b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/project.nuget.cache index 055b44c..e9896fa 100644 --- a/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/project.nuget.cache +++ b/apps/server-net/tests/Vortex.Modules.Identity.UnitTests/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "q69tRNTlK6k=", + "dgSpecHash": "y6FasmI/LLI=", "success": true, - "projectFilePath": "e:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj", + "projectFilePath": "E:\\GIT\\forkmessager\\apps\\server-net\\tests\\Vortex.Modules.Identity.UnitTests\\Vortex.Modules.Identity.UnitTests.csproj", "expectedPackageFiles": [ "C:\\Users\\HomePC\\.nuget\\packages\\bcrypt.net-next\\4.1.0\\bcrypt.net-next.4.1.0.nupkg.sha512", "C:\\Users\\HomePC\\.nuget\\packages\\castle.core\\5.1.1\\castle.core.5.1.1.nupkg.sha512", diff --git a/apps/web/index.html b/apps/web/index.html index 49d72af..027dd5d 100644 --- a/apps/web/index.html +++ b/apps/web/index.html @@ -2,10 +2,7 @@ - - - - Vortex Messenger + SelfHost Messenger diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx index 9dabc4c..a76ef50 100644 --- a/apps/web/src/App.tsx +++ b/apps/web/src/App.tsx @@ -16,7 +16,7 @@ export default function App() { return (
- +

Загрузка...

@@ -37,16 +37,16 @@ export default function App() { ); } -function VortexLoader() { +function AppLoader() { return (
-
+
diff --git a/apps/web/src/components/ChatView.tsx b/apps/web/src/components/ChatView.tsx index 018329d..d2e9324 100644 --- a/apps/web/src/components/ChatView.tsx +++ b/apps/web/src/components/ChatView.tsx @@ -17,6 +17,7 @@ import { Forward, Bookmark, ArrowLeft, + MessageSquare, } from 'lucide-react'; import { useChatStore } from '../stores/chatStore'; import { useAuthStore } from '../stores/authStore'; @@ -317,10 +318,10 @@ export default function ChatView({ onStartCall, onStartGroupCall }: { onStartCal if (!activeChat || !chat) { return ( -
+
{/* Slowly pulsing purple background as requested */}
-
+
@@ -331,18 +332,18 @@ export default function ChatView({ onStartCall, onStartGroupCall }: { onStartCal initial={{ scale: 0.8, opacity: 0 }} animate={{ scale: 1, opacity: 1 }} transition={{ duration: 0.6, ease: [0.16, 1, 0.3, 1] }} - className="w-28 h-28 mx-auto mb-8 rounded-[2rem] bg-gradient-to-br from-vortex-500/20 to-purple-600/20 flex items-center justify-center shadow-[0_0_60px_-15px_var(--color-accent)] ring-1 ring-white/10 backdrop-blur-2xl relative" + className="w-28 h-28 mx-auto mb-8 rounded-[2rem] bg-gradient-to-br from-accent/20 to-purple-600/20 flex items-center justify-center shadow-[0_0_60px_-15px_var(--color-accent)] ring-1 ring-white/10 backdrop-blur-2xl relative" >
- Vortex + - Vortex Messenger + SelfHost Messenger ([]); const [activeMicId, setActiveMicId] = useState(''); const [showMicMenu, setShowMicMenu] = useState(false); + const [sharingUserId, setSharingUserId] = useState(null); const localStreamRef = useRef(null); const screenStreamRef = useRef(null); @@ -289,6 +293,8 @@ export default function GroupCallModal({ isOpen, onClose, chatId, chatName, call } } setIsScreenSharing(false); + const socket = getSocket(); + socket?.emit('screen_share_stopped', chatId); } else { try { const screenStream = await navigator.mediaDevices.getDisplayMedia({ @@ -328,6 +334,8 @@ export default function GroupCallModal({ isOpen, onClose, chatId, chatName, call }; setIsScreenSharing(true); + const socket = getSocket(); + socket?.emit('screen_share_started', chatId); } catch { console.error('Screen share failed'); } } }, [isScreenSharing, chatId]); @@ -521,6 +529,9 @@ export default function GroupCallModal({ isOpen, onClose, chatId, chatName, call const newMap = new Map(); for (const p of data.participants) { newMap.set(p.id, p); + if (p.isSharingScreen && p.id !== useAuthStore.getState().user?.id) { + setSharingUserId(p.id); + } // Create peer connection to each existing participant (we are the initiator) if (!peersRef.current.has(p.id)) { await createPeerConnection(p.id, true); @@ -605,6 +616,38 @@ export default function GroupCallModal({ isOpen, onClose, chatId, chatName, call } }; + const onScreenShareStarted = (data: { userId: string }) => { + const isMe = data.userId === useAuthStore.getState().user?.id; + if (!isMe) { + setSharingUserId(data.userId); + } + setParticipants(prev => { + const next = new Map(prev); + const p = next.get(data.userId); + if (p) next.set(data.userId, { ...p, isSharingScreen: true }); + return next; + }); + }; + + const onScreenShareStopped = (data: { userId: string }) => { + const isMe = data.userId === useAuthStore.getState().user?.id; + if (!isMe && sharingUserId === data.userId) { + setSharingUserId(null); + } else if (isMe) { + // Just in case + } + + // If the person who stopped was the sharing user, clear it + setSharingUserId(current => current === data.userId ? null : current); + + setParticipants(prev => { + const next = new Map(prev); + const p = next.get(data.userId); + if (p) next.set(data.userId, { ...p, isSharingScreen: false }); + return next; + }); + }; + socket.on('group_call_participants', onParticipants); socket.on('group_call_user_joined', onUserJoined); socket.on('group_call_user_left', onUserLeft); @@ -613,6 +656,8 @@ export default function GroupCallModal({ isOpen, onClose, chatId, chatName, call socket.on('group_ice_candidate', onIceCandidate); socket.on('group_call_renegotiate', onRenegotiate); socket.on('group_call_renegotiate_answer', onRenegotiateAnswer); + socket.on('screen_share_started', onScreenShareStarted); + socket.on('screen_share_stopped', onScreenShareStopped); return () => { socket.off('group_call_participants', onParticipants); @@ -623,6 +668,8 @@ export default function GroupCallModal({ isOpen, onClose, chatId, chatName, call socket.off('group_ice_candidate', onIceCandidate); socket.off('group_call_renegotiate', onRenegotiate); socket.off('group_call_renegotiate_answer', onRenegotiateAnswer); + socket.off('screen_share_started', onScreenShareStarted); + socket.off('screen_share_stopped', onScreenShareStopped); }; }, [isOpen, chatId, createPeerConnection]); @@ -856,6 +903,16 @@ export default function GroupCallModal({ isOpen, onClose, chatId, chatName, call
+ {/* Screen share indicator */} + {sharingUserId && ( +
+ + + {participants.get(sharingUserId)?.displayName || 'Кто-то'} транслирует экран + +
+ )} + {/* Controls */}
{/* Mic with dropdown */} @@ -882,12 +939,16 @@ export default function GroupCallModal({ isOpen, onClose, chatId, chatName, call {isVideoOff ? :

{t('about')}

-
- -
-

Vortex Messenger

-

{t('version')} 1.0.0

-
-
+
+ +
+

SelfHost Messenger

+

{t('version')} 1.0.0

+
+
diff --git a/apps/web/src/components/Sidebar.tsx b/apps/web/src/components/Sidebar.tsx index 17e09f5..9fe7b46 100644 --- a/apps/web/src/components/Sidebar.tsx +++ b/apps/web/src/components/Sidebar.tsx @@ -86,8 +86,10 @@ export default function Sidebar() {
- Vortex -

Vortex

+
+ +
+

SelfHost

@@ -145,7 +147,7 @@ export default function Sidebar() { >
{ const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape') onClose(); if (e.key === 'ArrowRight') goNext(); if (e.key === 'ArrowLeft') goPrev(); }; + + const socket = getSocket(); + const handleStoryViewed = (data: { storyId: string; userId: string; username: string; displayName: string; avatar: string | null; viewedAt: string; viewCount: number }) => { + if (!currentStory || data.storyId !== currentStory.id) return; + + setViewOverrides(prev => ({ + ...prev, + [data.storyId]: { + viewCount: data.viewCount, + viewed: prev[data.storyId]?.viewed || false + } + })); + + // Update viewers list if visible + if (showViewers) { + setViewers(prev => { + if (prev.some(v => v.userId === data.userId)) return prev; + return [...prev, { + userId: data.userId, + username: data.username, + displayName: data.displayName, + avatar: data.avatar, + viewedAt: data.viewedAt + }].sort((a, b) => new Date(b.viewedAt).getTime() - new Date(a.viewedAt).getTime()); + }); + } + }; + window.addEventListener('keydown', onKey); - return () => window.removeEventListener('keydown', onKey); - }, [goNext, goPrev, onClose]); + socket?.on('story_viewed', handleStoryViewed); + + return () => { + window.removeEventListener('keydown', onKey); + socket?.off('story_viewed', handleStoryViewed); + }; + }, [goNext, goPrev, onClose, currentStory?.id, showViewers]); const handleDelete = async () => { if (!currentStory) return; diff --git a/apps/web/src/lib/i18n.ts b/apps/web/src/lib/i18n.ts index 6fd1893..c5c10f6 100644 --- a/apps/web/src/lib/i18n.ts +++ b/apps/web/src/lib/i18n.ts @@ -170,7 +170,7 @@ const translations = { removeAvatar: 'Удалить аватар', namePlaceholder: 'Имя', notSpecified: 'Не указано', - onVortexSince: 'На Vortex с', + onVortexSince: 'На SelfHost с', cancel: 'Отмена', confirm: 'Подтвердить', save: 'Сохранить', @@ -292,7 +292,7 @@ const translations = { version: 'Version', modernMessenger: 'A modern messenger focused', onPrivacy: 'on privacy and convenience', - modernMessengerShort: 'Modern messenger', + modernMessengerShort: 'SelfHost Messenger', searchChats: 'Search chats...', chat: 'Chat', group: 'Group', @@ -425,7 +425,7 @@ const translations = { removeAvatar: 'Remove avatar', namePlaceholder: 'Name', notSpecified: 'Not specified', - onVortexSince: 'On Vortex since', + onVortexSince: 'On SelfHost since', cancel: 'Cancel', confirm: 'Confirm', save: 'Save', diff --git a/apps/web/src/pages/AuthPage.tsx b/apps/web/src/pages/AuthPage.tsx index 04279e4..8f2e782 100644 --- a/apps/web/src/pages/AuthPage.tsx +++ b/apps/web/src/pages/AuthPage.tsx @@ -2,7 +2,7 @@ import { useState, FormEvent } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { useAuthStore } from '../stores/authStore'; import { useLang } from '../lib/i18n'; -import { Eye, EyeOff, ArrowRight, UserPlus, LogIn } from 'lucide-react'; +import { Eye, EyeOff, ArrowRight, UserPlus, LogIn, MessageSquare } from 'lucide-react'; export default function AuthPage() { const [isLogin, setIsLogin] = useState(true); @@ -44,9 +44,9 @@ export default function AuthPage() { {/* Анимированный фон */}
-
+
-
+
@@ -57,7 +57,7 @@ export default function AuthPage() { transition={{ duration: 0.4, ease: 'easeOut' }} className="relative z-10 w-full max-w-md mx-4" > -
+
{/* Заголовок */}
@@ -65,14 +65,11 @@ export default function AuthPage() { initial={{ rotate: -180, scale: 0 }} animate={{ rotate: 0, scale: 1 }} transition={{ duration: 0.6, type: 'spring', bounce: 0.4 }} + className="w-20 h-20 rounded-2xl bg-accent flex items-center justify-center text-white shadow-lg shadow-accent/30" > - Vortex + -

Vortex

+

SelfHost

{isLogin ? t('login') : t('register')}

@@ -104,7 +101,7 @@ export default function AuthPage() { value={username} onChange={(e) => setUsername(e.target.value.replace(/[^a-zA-Z0-9_]/g, ''))} placeholder="username" - className="w-full px-4 py-3 rounded-xl bg-white/5 border border-white/10 text-white placeholder-zinc-600 focus:border-vortex-500/50 focus:ring-1 focus:ring-vortex-500/25 transition-all outline-hidden" + className="w-full px-4 py-3 rounded-xl bg-white/5 border border-white/10 text-white placeholder-zinc-600 focus:border-accent/50 focus:ring-1 focus:ring-accent/25 transition-all outline-hidden" required autoFocus autoComplete="off" @@ -144,7 +141,7 @@ export default function AuthPage() { value={password} onChange={(e) => setPassword(e.target.value)} placeholder={t('passwordPlaceholder')} - className="w-full px-4 py-3 rounded-xl bg-white/5 border border-white/10 text-white placeholder-zinc-600 focus:border-vortex-500/50 focus:ring-1 focus:ring-vortex-500/25 transition-all pr-12 outline-hidden" + className="w-full px-4 py-3 rounded-xl bg-white/5 border border-white/10 text-white placeholder-zinc-600 focus:border-accent/50 focus:ring-1 focus:ring-accent/25 transition-all pr-12 outline-hidden" required autoComplete={isLogin ? 'current-password' : 'new-password'} minLength={8} @@ -159,7 +156,7 @@ export default function AuthPage() {
{!isLogin && (

-

+
{t('passwordRequirements')}

)} @@ -179,7 +176,7 @@ export default function AuthPage() { value={bio} onChange={(e) => setBio(e.target.value)} placeholder={t('bioPlaceholder')} - className="w-full px-4 py-3 rounded-xl bg-white/5 border border-white/10 text-white placeholder-zinc-600 focus:border-vortex-500/50 focus:ring-1 focus:ring-vortex-500/25 transition-all outline-hidden" + className="w-full px-4 py-3 rounded-xl bg-white/5 border border-white/10 text-white placeholder-zinc-600 focus:border-accent/50 focus:ring-1 focus:ring-accent/25 transition-all outline-hidden" /> )} @@ -190,7 +187,7 @@ export default function AuthPage() { whileTap={{ scale: 0.99 }} disabled={isSubmitting} type="submit" - className="w-full py-3.5 px-4 rounded-xl bg-gradient-to-r from-vortex-500 to-purple-600 text-white font-medium shadow-lg shadow-vortex-500/25 hover:shadow-vortex-500/40 transition-all duration-200 flex items-center justify-center gap-2 disabled:opacity-50 disabled:cursor-not-allowed mt-2" + className="w-full py-3.5 px-4 rounded-xl bg-gradient-to-r from-accent to-purple-600 text-white font-medium shadow-lg shadow-accent/25 hover:shadow-accent/40 transition-all duration-200 flex items-center justify-center gap-2 disabled:opacity-50 disabled:cursor-not-allowed mt-2" > {isSubmitting ? (
@@ -215,7 +212,7 @@ export default function AuthPage() { setDisplayName(''); setBio(''); }} - className="text-vortex-400 hover:text-vortex-300 font-medium transition-colors ml-1" + className="text-accent hover:text-accent font-medium transition-colors ml-1" > {isLogin ? t('registerNow') : t('loginNow')} diff --git a/apps/web/src/pages/ChatPage.tsx b/apps/web/src/pages/ChatPage.tsx index ce09283..6767f5d 100644 --- a/apps/web/src/pages/ChatPage.tsx +++ b/apps/web/src/pages/ChatPage.tsx @@ -30,6 +30,7 @@ export default function ChatPage() { setPinnedMessage, removePinnedMessage, clearStore, + addChat, } = useChatStore(); const { user } = useAuthStore(); const initialized = useRef(false); @@ -134,6 +135,11 @@ export default function ChatPage() { updateMessage(message); }); + socket.on('new_chat', (chat: any) => { + addChat(chat); + socket.emit('join_chat', chat.id); + }); + socket.on('message_deleted', (data: { messageId: string; chatId: string }) => { removeMessage(data.messageId, data.chatId); }); @@ -215,6 +221,7 @@ export default function ChatPage() { socket.off('new_message'); socket.off('scheduled_delivered'); socket.off('message_edited'); + socket.off('new_chat'); socket.off('message_deleted'); socket.off('messages_deleted'); socket.off('messages_hidden'); diff --git a/apps/web/src/stores/chatStore.ts b/apps/web/src/stores/chatStore.ts index f2ab622..cb6c873 100644 --- a/apps/web/src/stores/chatStore.ts +++ b/apps/web/src/stores/chatStore.ts @@ -435,7 +435,12 @@ export const useChatStore = create((set, get) => ({ addChat: (chat) => { set((state) => { - if (state.chats.some((c) => c.id === chat.id)) return state; + const existing = state.chats.find((c) => c.id === chat.id); + if (existing) { + return { + chats: state.chats.map((c) => (c.id === chat.id ? { ...c, ...chat } : c)), + }; + } return { chats: [chat, ...state.chats] }; }); },