Example #1
0
 void Set(jab.Models.Room room)
 {
     this.Name = room.Name;
     this.Id = room.Name;
     this.Topic = room.Topic;
     this.Private = room.Private;
     
     recentMessages = new TaskCompletionSource<IEnumerable<ChannelMessage>>();
     getChannelInfo = new TaskCompletionSource<Channel>();
 }
Example #2
0
		internal void TriggerUsernameChanged (string oldUserName, jab.Models.User jabuser, bool isCurrentUser)
		{
			if (this.Name == oldUserName) {
				user.Name = jabuser.Name;
				user.Id = jabuser.Name;
				this.Name = user.Name;
				OnUsernameChanged (new UsernameChangedEventArgs (oldUserName, user, DateTimeOffset.Now));
				OnNameChanged (EventArgs.Empty);
				var server = Server as JabbRServer;
				server.TriggerChannelInfoChanged (new ChannelEventArgs (this));
			}
			else if (isCurrentUser) {
				OnUsernameChanged (new UsernameChangedEventArgs (oldUserName, Server.CurrentUser, DateTimeOffset.Now));
			}
		}
Example #3
0
		void Set (jab.Models.Room room)
		{
			this.Name = room.Name;
			this.Id = room.Name;
			this.Topic = room.Topic;
			this.Private = room.Private;
			
			recentMessages = new TaskCompletionSource<IEnumerable<ChannelMessage>>();
			getChannelInfo = new TaskCompletionSource<Channel>();
			Server.Client.GetRoomInfo (this.Id).ContinueWith (task => {
				if (task.Exception != null) {
					getChannelInfo.SetException (task.Exception);
					recentMessages.SetException (task.Exception);
				}
				else {
					this.Topic = task.Result.Topic;
					this.Private = task.Result.Private;
					
					lock (users) {
						this.users.Clear ();
						foreach (var user in from r in task.Result.Users select new JabbRUser (r))
							this.users.Add (user.Id, user);
					}
					lock (owners) {
						this.owners.Clear ();
						this.owners.AddRange (task.Result.Owners);
					}
					var messages = (from m in task.Result.RecentMessages select CreateMessage(m));
					historyLoaded = true;
					if (firstMessage != null) {
						// filter up to the first already received message
						messages = messages.TakeWhile (r => r.When < firstMessage.When || (r.When == firstMessage.When && r.Content != firstMessage.Content));
						firstMessage = null;
					}
					recentMessages.SetResult (messages);
					getChannelInfo.SetResult (this);
				}
			});
		}
Example #4
0
 public JabbRRoom(JabbRServer server, jab.Models.Room room)
     : base(server)
 {
     Set(room);
 }
Example #5
0
 internal void TriggerUsernameChanged(string oldUserName, jab.Models.User jabuser)
 {
     var user = GetUser(oldUserName);
     if (user != null)
     {
         lock (users)
         {
             if (users.ContainsKey(oldUserName))
             {
                 users.Remove(oldUserName);
                 user.Name = jabuser.Name;
                 user.Id = jabuser.Name;
                 users.Add(user.Id, user);
             }
         }
         OnUsernameChanged(new UsernameChangedEventArgs(oldUserName, user, DateTimeOffset.Now));
     }
 }
Example #6
0
 internal void TriggerOwnerRemoved(jab.Models.User user)
 {
     if (this.owners.Contains(user.Name))
     {
         bool removed = false;
         lock (owners)
         {
             if (this.owners.Contains(user.Name))
             {
                 owners.Remove(user.Name);
                 removed = true;
             }
         }
         if (removed)
             OnOwnerRemoved(new UserEventArgs(new JabbRUser(this.Server, user), DateTimeOffset.Now));
     }
 }
Example #7
0
 internal void TriggerOwnerAdded(jab.Models.User user)
 {
     if (!this.owners.Contains(user.Name))
     {
         bool added = false;
         lock (owners)
         {
             if (!this.owners.Contains(user.Name))
             {
                 owners.Add(user.Name);
                 added = true;
             }
             ;
         }
         if (added)
             OnOwnerAdded(new UserEventArgs(new JabbRUser(this.Server, user), DateTimeOffset.Now));
     }
 }
Example #8
0
 public ChannelMessage CreateMessage(jab.Models.Message m)
 {
     var content = m.Content;
     if (!m.HtmlEncoded)
         content = ParseContent(content);
     var message = new ChannelMessage(m.Id, m.When, m.User.Name, content);
     message.DetectHighlights(Server.HighlightRegex);
     return message;
 }
Example #9
0
		public static ChannelMessage CreateMessage(jab.Models.Message m)
		{
			return new ChannelMessage (m.Id, m.When, m.User.Name, m.Content);
		}