/// <summary>
 /// The users board changed on the server.  This notifies the user that their board changed.
 /// </summary>
 /// <param name="boardId">The board identifier.</param>
 private void UserBoardSetToDefault(Guid boardId, bool clearStrokes)
 {
     BoardChangedEvent?.Invoke(boardId);
     BoardOwnerChangedEvent?.Invoke(true);
     if (clearStrokes)
     {
         StrokeClearEvent?.Invoke();
     }
 }
 /// <summary>
 /// Joins the board group.
 /// </summary>
 /// <param name="userName">Name of the user.</param>
 /// <param name="color">The color.</param>
 /// <param name="boardId">The board identifier.</param>
 public void JoinBoardGroup(string userName, string color, Guid boardId)
 {
     if (userName == string.Empty)
     {
         throw new Exception(message: $"Error: A username is required.");
     }
     if (color == string.Empty)
     {
         throw new Exception(message: $"Error: A color is required.");
     }
     if (boardId == null)
     {
         throw new Exception(message: $"Error: ID required.");
     }
     InvokeHubDependantAction(() =>
     {
         _hubProxy.Invoke <Task>("JoinBoardGroup", userName, color, boardId);
         BoardChangedEvent?.Invoke(boardId);
         BoardOwnerChangedEvent?.Invoke(false);
     });
 }
 public void BoardChanged(MemoryStream newBoard)
 {
     //var strokes = new StrokeCollection(newBoard);
     BoardChangedEvent?.Invoke(this, new BoardChangedEventArgs(newBoard));
 }