public ConversationViewModelActor(ConversationMessages.ConversationStarted conversationMetadata) { _conversationMetadata = conversationMetadata; Receive<AssociateWithViewModel>(msg => AssociateAndSetParticipants(msg)); Receive<ConversationMessages.OutgoingChatMessage>(msg => HandleOutgoingMessage(msg)); Receive<ConversationMessages.IncomingChatMessage>(msg => HandleIncomingMessage(msg)); Receive<ClientsActor.ClientStatusQueryResponse>(msg => UpdateClientList(msg)); Context.ActorSelection(ClientActorPaths.ClientsActor.Path).Tell(new ClientsActor.ClientStatusQuery(conversationMetadata.Clients)); Receive<ClientTracking.ClientChanged>( change => { var participant = _viewModel.Participants.FirstOrDefault(p => p.Id == change.Client.ClientId); if (participant != null) participant.Status = change.Client.Status; }); Receive<ClientTracking.ClientConnected>( connect => { var participant = _viewModel.Participants.FirstOrDefault(p => p.Id == connect.Client.ClientId); if (participant != null) participant.Status = connect.Client.Status; }); Receive<ClientTracking.ClientDisconnected>( disconect => { var participant = _viewModel.Participants.FirstOrDefault(p => p.Id == disconect.Client.ClientId); if (participant != null) participant.Status = ClientStatus.Offline; }); }
private void GreetClients(ConversationCoordinatorActor.StartConversation msg) { _participants = msg.Participants.ToList(); var response = new ConversationMessages.ConversationStarted(_conversationId, _participants.Select(p => p.ClientId).ToList()); foreach (var participant in _participants) { participant.MessagingHandler.Tell(response); } }