private void CharacterDisconnectCommand(IDictionary <string, object> command) { var characterName = command.Get(Constants.Arguments.Character); lock (chatStateLocker) { var character = CharacterManager.Find(characterName); var ofInterest = CharacterManager.IsOfInterest(characterName); character.LastAd = null; character.LastReport = null; CharacterManager.SignOff(characterName); var leaveChannelCommands = from channel in ChatModel.CurrentChannels where channel.CharacterManager.SignOff(characterName) select new Dictionary <string, object> { { Constants.Arguments.Character, character.Name }, { Constants.Arguments.Channel, channel.Id }, { "ignoreUpdate", ofInterest } // ignore updates from characters we'll already get a sign-out notice for }; leaveChannelCommands.Each(LeaveChannelCommand); var characterChannel = ChatModel.CurrentPms.FirstByIdOrNull(characterName); if (characterChannel != null) { characterChannel.TypingStatus = TypingStatus.Clear; } var updateArgs = new LoginStateChangedEventArgs { IsLogIn = false }; Events.NewCharacterUpdate(character, updateArgs); } }
private void CharacterDisconnectCommand(IDictionary<string, object> command) { var characterName = command.Get(Constants.Arguments.Character); lock (chatStateLocker) { var character = CharacterManager.Find(characterName); var ofInterest = CharacterManager.IsOfInterest(characterName); character.LastAd = null; character.LastReport = null; CharacterManager.SignOff(characterName); var leaveChannelCommands = from channel in ChatModel.CurrentChannels where channel.CharacterManager.SignOff(characterName) select new Dictionary<string, object> { {Constants.Arguments.Character, character.Name}, {Constants.Arguments.Channel, channel.Id}, {"ignoreUpdate", ofInterest} // ignore updates from characters we'll already get a sign-out notice for }; leaveChannelCommands.Each(LeaveChannelCommand); var characterChannel = ChatModel.CurrentPms.FirstByIdOrNull(characterName); if (characterChannel != null) characterChannel.TypingStatus = TypingStatus.Clear; var updateArgs = new LoginStateChangedEventArgs { IsLogIn = false }; Events.NewCharacterUpdate(character, updateArgs); } }