예제 #1
0
        private void LeaveChannelCommand(IDictionary<string, object> command)
        {
            var channelId = command.Get(Constants.Arguments.Channel);
            var characterName = command.Get(Constants.Arguments.Character);

            var channel = ChatModel.CurrentChannels.FirstByIdOrNull(channelId);
            if (ChatModel.CurrentCharacter.NameEquals(characterName))
            {
                if (channel != null)
                    channels.RemoveChannel(channelId, false, true);

                return;
            }

            if (channel == null)
                return;

            var ignoreUpdate = false;

            if (command.ContainsKey("ignoreUpdate"))
                ignoreUpdate = (bool) command["ignoreUpdate"];

            if (!channel.CharacterManager.SignOff(characterName) || ignoreUpdate) return;

            var updateArgs = new JoinLeaveEventArgs
            {
                Joined = false,
                TargetChannel = channel.Title,
                TargetChannelId = channel.Id
            };

            Events.NewCharacterUpdate(CharacterManager.Find(characterName), updateArgs);
        }
예제 #2
0
        private void OnLeaveChannel(object sender, JoinLeaveEventArgs e)
        {
            var channels = e.GetChannelList();

            foreach (var channel in channels)
            {
                GetChannel(channel).RemoveUser(e.Identity.Nickname);
            }
        }
예제 #3
0
        private void LeaveChannelCommand(IDictionary <string, object> command)
        {
            var channelId     = command.Get(Constants.Arguments.Channel);
            var characterName = command.Get(Constants.Arguments.Character);

            var channel = ChatModel.CurrentChannels.FirstByIdOrNull(channelId);

            if (ChatModel.CurrentCharacter.NameEquals(characterName))
            {
                if (channel == null)
                {
                    return;
                }

                lock (chatStateLocker)
                {
                    channels.RemoveChannel(channelId, false, true);
                }

                return;
            }

            if (channel == null)
            {
                return;
            }

            var ignoreUpdate = false;

            if (command.ContainsKey("ignoreUpdate"))
            {
                ignoreUpdate = (bool)command["ignoreUpdate"];
            }

            lock (chatStateLocker)
            {
                if (!channel.CharacterManager.SignOff(characterName) || ignoreUpdate)
                {
                    return;
                }
            }

            var updateArgs = new JoinLeaveEventArgs
            {
                Joined          = false,
                TargetChannel   = channel.Title,
                TargetChannelId = channel.Id
            };

            Events.NewCharacterUpdate(CharacterManager.Find(characterName), updateArgs);
        }
예제 #4
0
        private void OnLeaveChannel(object sender, JoinLeaveEventArgs e)
        {
            var channels = e.GetChannelList();

            foreach (var channel in channels)
            {
                if (!Channels.ContainsKey(channel) || IsWhitelisted(e.Identity, channel))
                {
                    continue;
                }

                ProcessQuit(e.Identity, channel, Channels[channel]);
            }
        }
예제 #5
0
파일: Main.cs 프로젝트: Moones/OpenEnsage
 private void _ircClient_GotLeaveChannel(object sender, JoinLeaveEventArgs e)
 {
     ircUserList.Items.Remove(e.Identity.Nickname);
 }
예제 #6
0
파일: Main.cs 프로젝트: Moones/OpenEnsage
 private void _ircClient_GotJoinChannel(object sender, JoinLeaveEventArgs e)
 {
     if (ircTabControl.SelectedTab.TabIndex != 1)
     {
         statusBox.Items.Add("Channel joined");
         ircMessageBox.AppendText("Welcome to the chat.");
         ircTabControl.SelectTab(1);
     }
     else
         ircUserList.Items.Add(Encoding.UTF8.GetString(e.Identity.Nickname));
 }
예제 #7
0
 private static void OnLeaveChannel(object sender, JoinLeaveEventArgs joinLeaveEventArgs)
 {
     var information = MethodBase.GetCurrentMethod().Name;
     try
     {
         var serverUser = GetServerUser(sender);
         serverUser.OnLeaveJoinChannels(false, joinLeaveEventArgs);
     }
     catch (Exception ex)
     {
         Console.WriteLine("{0} exception {1}", information, ex.Message);
     }
 }
예제 #8
0
 /// <summary>
 /// The on leave join channels.
 /// </summary>
 /// <param name="isJoin">
 /// The is join.
 /// </param>
 /// <param name="joinLeaveEventArgs">
 /// The join leave event args.
 /// </param>
 internal void OnLeaveJoinChannels(bool isJoin, JoinLeaveEventArgs joinLeaveEventArgs)
 {
     foreach (IrcString channelName in joinLeaveEventArgs.GetChannelList())
     {
         Channel channel = this.GetChannel(channelName);
         channel.OnLeaveJoin(isJoin, joinLeaveEventArgs.Identity);
     }
 }
예제 #9
0
 protected void RaiseGotLeaveChannel(JoinLeaveEventArgs e)
 {
     Dispatch(GotLeaveChannel, e);
 }
예제 #10
0
 protected virtual void OnGotLeaveChannel(JoinLeaveEventArgs e)
 {
     RaiseGotLeaveChannel(e);
 }