/// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="link">Ссылка.</param>
 /// <param name="favorites">Избранные треды.</param>
 public FavoriteMainTileViewModel(BoardLinkBase link, ThreadLinkCollection favorites)
 {
     if (link == null) throw new ArgumentNullException(nameof(link));
     this.link = link;
     TileData = new FavoriteThreadTileViewModel(link);
     var upd = (IThreadTileUpdater) TileData;
     var si = upd?.UpdateData(favorites);
     if (si != null)
     {
         UpdateId = new ThreadListUpdateId() { LinkHash = ServiceLocator.Current.GetServiceOrThrow<ILinkHashService>().GetLinkHash(link), SortDate = si.AddedDate, Link = link };
     }
     else
     {
         UpdateId = new ThreadListUpdateId() { LinkHash = ServiceLocator.Current.GetServiceOrThrow<ILinkHashService>().GetLinkHash(link), SortDate = DateTime.MinValue, Link = link };
     }
 }
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="link">Ссылка.</param>
 /// <param name="favorites">Избранные доски.</param>
 public FavoriteBoardMainTileViewModel(BoardLinkBase link, BoardLinkCollection favorites)
 {
     if (link == null) throw new ArgumentNullException(nameof(link));
     this.link = link;
     string name = ServiceLocator.Current.GetServiceOrThrow<ILinkTransformService>().GetBoardShortName(link);
     var hash = ServiceLocator.Current.GetServiceOrThrow<ILinkHashService>().GetLinkHash(link);
     if (favorites?.BoardInfo != null)
     {
         if (favorites.BoardInfo.ContainsKey(hash))
         {
             var bi = favorites.BoardInfo[hash];
             name = bi.DisplayName;
         }
     }
     TileData = new BoardListBoardDataViewModel(link, name, "Избранные", true, false);
     UpdateId = new ThreadListUpdateId() { LinkHash = hash, SortDate = DateTime.MinValue, Link = link };
 }