using System; using System.Collections.Generic; using System.Linq; namespace IrcStates { public class Channel { public string Name { get; set; } public string NameLower { get; set; } public Dictionary Users { get; set; } public string Topic { get; set; } public string TopicSetter { get; set; } public DateTime TopicTime { get; set; } public DateTime Created { get; set; } public Dictionary> ListModes { get; set; } public Dictionary Modes { get; set; } public override string ToString() { return $"Channel(name={Name})"; } public void SetName(string name, string nameLower) { Name = name; NameLower = nameLower; } public void AddMode(string ch, string param, bool listMode) { if (listMode) { if (!ListModes.ContainsKey(ch)) { ListModes[ch] = new List(); } if (ListModes[ch].Contains(param)) { ListModes[ch].Add(param ?? string.Empty); } } else { Modes[ch] = param; } } public void RemoveMode(string ch, string param) { if (ListModes.ContainsKey(ch)) { if (ListModes[ch].Contains(param)) { ListModes[ch].Remove(param); if (!ListModes[ch].Any()) { ListModes.Remove(ch); } } } else if (Modes.ContainsKey(ch)) { Modes.Remove(ch); } } } }