public ChatRoomViewModel CreateViewModelAndSubscribe(ChatMessageReceivedCallback messageReceivedCallback) { lock (synchronization) { var previousMessages = messages.ToList().Select(kvp => kvp.Key).ToList(); var viewModel = new ChatRoomViewModel(this, previousMessages, messageReceivedCallback); viewModels.AddOrThrow(viewModel); return(viewModel); } }
public ChatRoomViewModel CreateChatRoomViewModelByIdentityHashAndSubscribe(IdentityHash chatroomIdentityHash, ChatMessageReceivedCallback messageReceivedCallback) { var chatRoomContext = ChatRoomTable.GetOrCreate(chatroomIdentityHash); return(chatRoomContext.CreateViewModelAndSubscribe(messageReceivedCallback)); }
public ChatRoomViewModel CreateChatRoomViewModelByNameAndSubscribe(string chatroomName, ChatMessageReceivedCallback messageReceivedCallback) { var destinationHash = IdentityHash.GetFlyweight(CryptoUtil.GetHash(Encoding.UTF8.GetBytes(chatroomName))); return(CreateChatRoomViewModelByIdentityHashAndSubscribe(destinationHash, messageReceivedCallback)); }
public ChatRoomViewModel(ChatRoomContext context, List <ChatMessageDto> initialMessages, ChatMessageReceivedCallback messageReceivedCallback) { Context = context; InitialMessages = initialMessages; MessageReceivedCallback = messageReceivedCallback; }