/// <summary> /// Конструктор. /// </summary> /// <param name="link">Ссылка.</param> public LinkPostCollectionSearchQuery(BoardLinkBase link) { Link = link; linkHashService = ServiceLocator.Current.GetServiceOrThrow<ILinkHashService>(); linkHash = Link != null ? linkHashService.GetLinkHash(Link) : null; }
private async Task<string> GetDefaultName(BoardLinkBase boardLink, ILinkHashService hashService) { var hash = hashService.GetLinkHash(boardLink); if (!DefaultNameCache.ContainsKey(hash)) { string defName = null; var engines = ServiceLocator.Current.GetServiceOrThrow<INetworkEngines>(); var engine = engines.FindEngine(boardLink.Engine); var storage = ServiceLocator.Current.GetServiceOrThrow<IStorageService>(); var refs = await storage.ThreadData.LoadBoardReferences(engine.RootLink); if (refs?.References != null) { var eq = hashService.GetComparer(); var r1 = refs.References.FirstOrDefault(r => eq.Equals(r.Link, boardLink)); if (r1.Extensions != null) { var ext = r1.Extensions.OfType<MakabaBoardReferenceExtension>().FirstOrDefault(); if (ext != null) { defName = ext.DefaultName; } } } DefaultNameCache[hash] = defName; } return DefaultNameCache[hash]; }