@page "/" <ChatClient />
namespace BlazorFiddleProject { using Microsoft.AspNetCore.Components.Builder; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Linq; public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddSingleton<MessageService>(); services.AddScoped<UserMessageService>(); } public void Configure(IComponentsApplicationBuilder app) { app.AddComponent<App>("app"); } } public class ChatMessage { public List<int> RecipientIds { get; private set; } public string Message { get; private set; } public int CreatedBy { get; private set; } public DateTime Created { get; private set; } private ChatMessage() { } public ChatMessage(int createdBy, List<int> recipientIds, string message) { CreatedBy = createdBy; RecipientIds = recipientIds; Message = message; Created = DateTime.Now; } } public class MessageService { public List<ChatMessage> Messages { get; set; } = new List<ChatMessage>(); public void SendMessage(ChatMessage chatMessage) { //Add message to message store Messages.Add(chatMessage); } } public class UserMessageService // Inject as scoped service { MessageService MessageService { get; set; } public int UserID { get; set; } DateTime LastCheck = DateTime.MinValue; public List<ChatMessage> UserMessages { get; set; } = new List<ChatMessage>(); public UserMessageService(MessageService messageService) => MessageService = messageService; public void SetUserId(int userId) { UserID = userId; } public void GetUserMessages() { if (UserID == 0) throw new ArgumentNullException(nameof(UserID), "A user ID has not been set for the user message service."); var messages = MessageService.Messages.Where(m => ( m.RecipientIds?.Contains(UserID) == true || m.RecipientIds == null || m.CreatedBy == UserID ) && m.Created > LastCheck) ?.ToList(); if (messages?.Any() == true) { LastCheck = messages.Max(m => m.Created); UserMessages = UserMessages.Concat(messages).OrderBy(m => m.Created).ToList(); } } } }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width"> <title>BlazorFiddleProject</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <script src="_content/MatBlazor/dist/matBlazor.js"></script> <style> div[MessageContainer] { border: 2px solid #CCC; width: 50vw; border-radius: 0.3em; } div[MessageContainer] div[Message][NotMessage] { text-align: center; } div[MessageContainer] div[Message]:not([NotMessage]) { padding: 1em; margin: 1em; background-color: #CCC; border-radius: 0.3em; margin-right: 5em; } div[MessageContainer] div[Message]:not([NotMessage])[IsUser] { background-color: darkgreen; color: #FFF; margin-right: 1em; margin-left: 5em; } div[MessageContainer] div[Message]:not([NotMessage]) span[Details] { font-size: 0.7em; opacity: 0.7; } </style> <script type="text/javascript"> </script> </head> <body> <app>Loading...</app> <script src="_framework/blazor.webassembly.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> </body> </html>

Add component

BlazorFiddle was updated from Blazor 0.7 to .NET 6.0. Your old source code could not work. You need to upgrade to latest.