/// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="icon">Иконка.</param>
 /// <param name="engine">Движок.</param>
 public MakabaBoardInfoIcon(MakabaIconReference icon, string engine)
 {
     if (icon == null) throw new ArgumentNullException(nameof(icon));
     if (engine == null) throw new ArgumentNullException(nameof(engine));
     this.icon = icon;
     Icon = new ImageSourceViewModel(new MediaLink() { Engine = engine, IsAbsolute = false, RelativeUri = icon.Url});
     Icon.Load.Start();
 }
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="icon">Иконка.</param>
 /// <param name="engine">Движок.</param>
 public PostingIconElement(MakabaIconReference icon, string engine)
 {
     if (icon == null) throw new ArgumentNullException(nameof(icon));
     if (engine == null) throw new ArgumentNullException(nameof(engine));
     Value = icon.Number;
     Name = icon.Name;
     Image = new ImageSourceViewModel(new MediaLink() { Engine = engine, RelativeUri = icon.Url, IsAbsolute = false });
     Image.Load.Start();
 }
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="value">Значение.</param>
 /// <param name="name">Имя.</param>
 /// <param name="iconLink">Ссылка.</param>
 public PostingIconElement(int? value, string name, BoardLinkBase iconLink)
 {
     Value = value;
     Name = name;
     if (iconLink != null)
     {
         Image = new ImageSourceViewModel(iconLink);
         Image.Load.Start();
     }
 }
 private async Task SetData()
 {
     try
     {
         var linkTransform = ServiceLocator.Current.GetServiceOrThrow<ILinkTransformService>();
         var hashService = ServiceLocator.Current.GetServiceOrThrow<ILinkHashService>();
         string newName = null;
         if (postData != null)
         {
             var boardLink = linkTransform.BoardLinkFromAnyLink(postData.Link);
             if (postData.Extensions != null)
             {
                 var nameExtension = postData.Extensions.OfType<PostTreePosterExtension>().FirstOrDefault();
                 if (nameExtension != null)
                 {
                     newName = nameExtension.Name ?? "";
                     TripCode = nameExtension.Tripcode ?? "";
                 }
             }
             if (newName == null)
             {
                 if (boardLink?.Engine != null)
                 {
                     newName = await GetDefaultName(boardLink, hashService);
                 }
             }
         }
         if (newName == null)
         {
             newName = "Аноним";
         }
         Name = newName;
         if (postData?.Extensions != null)
         {
             var flagExtension = postData.Extensions.OfType<PostTreeCountryExtension>().FirstOrDefault();
             if (flagExtension != null)
             {
                 Flag = new ImageSourceViewModel(new MediaLink() { Engine = postData?.Link?.Engine ?? "", IsAbsolute = false, RelativeUri = flagExtension.Uri });
                 if (!Flag.SetImageCache(StaticImageCache.IconsAndFlags))
                 {
                     Flag.Load.Start();
                 }
             }
             var iconExtension = postData.Extensions.OfType<PostTreeIconExtension>().FirstOrDefault();
             if (iconExtension != null)
             {
                 Icon = new ImageSourceViewModel(new MediaLink() { Engine = postData?.Link?.Engine ?? "", IsAbsolute = false, RelativeUri = iconExtension.Uri });
                 if (!Icon.SetImageCache(StaticImageCache.IconsAndFlags))
                 {
                     Icon.Load.Start();
                 }
                 IconName = iconExtension.Description ?? "";
             }
         }
     }
     catch (Exception ex)
     {
         DebugHelper.BreakOnError(ex);
     }
 }