Skip to content

Commit 247fad5

Browse files
feat: add Image property to Suggestion and update Wikipedia provider to include thumbnail URLs
1 parent 436660b commit 247fad5

3 files changed

Lines changed: 26 additions & 7 deletions

File tree

CmdPalWebSearchShortcut/WebSearchShortcut/Pages/SearchWebPage.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ private async Task<ListItem[]> FetchSuggestionItemsAsync(string searchText, Canc
201201
{
202202
Title = StringFormatter.Format(Resources.SearchQueryItem_TitleTemplate, new() { ["shortcut"] = _shortcut.Name, ["query"] = suggestion.Title }),
203203
Subtitle = suggestion.Description ?? StringFormatter.Format(Resources.SearchQueryItem_SubtitleTemplate, new() { ["shortcut"] = _shortcut.Name, ["query"] = suggestion.Title }),
204-
Icon = Icons.Search,
204+
Icon = !string.IsNullOrEmpty(suggestion.Image) ? new IconInfo(suggestion.Image) : Icons.Search,
205205
TextToSuggest = suggestion.Title,
206206
Tags = suggestion.Tags?.Select(tag => new Tag(tag)).ToArray(),
207207
MoreCommands = [_openHomepageContextItem]

CmdPalWebSearchShortcut/WebSearchShortcut/Suggestion.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ internal interface ISuggestionsProvider
1313
Task<IReadOnlyList<Suggestion>> GetSuggestionsAsync(string query, CancellationToken cancellationToken = default);
1414
}
1515

16-
internal sealed record Suggestion(string Title, string? Description = null, string[]? Tags = null);
16+
internal sealed record Suggestion(string Title, string? Description = null, string[]? Tags = null, string? Image = null);
1717

1818
internal static class SuggestionsRegistry
1919
{

CmdPalWebSearchShortcut/WebSearchShortcut/SuggestionsProviders/Wikipedia.cs

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,31 @@ public async Task<IReadOnlyList<Suggestion>> GetSuggestionsAsync(string query, C
4141
Suggestion[] items = [
4242
.. results
4343
.EnumerateArray()
44-
.Select(o => (
45-
Title: o.TryGetProperty("title", out var t) ? t.GetString() : null,
46-
Description: o.TryGetProperty("description", out var d) ? d.GetString() : null
47-
))
44+
.Select(o => {
45+
var title = o.TryGetProperty("title", out var t) ? t.GetString() : null;
46+
var description = o.TryGetProperty("description", out var d) ? d.GetString() : null;
47+
string? image = null;
48+
49+
if (o.TryGetProperty("thumbnail", out var thumb) && thumb.ValueKind == JsonValueKind.Object)
50+
{
51+
if (thumb.TryGetProperty("url", out var url) && url.ValueKind == JsonValueKind.String)
52+
{
53+
var urlStr = url.GetString();
54+
if (!string.IsNullOrEmpty(urlStr))
55+
{
56+
image = urlStr.StartsWith("//", StringComparison.Ordinal) ? "https:" + urlStr : urlStr;
57+
}
58+
}
59+
}
60+
61+
return (Title: title, Description: description, Image: image);
62+
})
4863
.Where(p => !string.IsNullOrWhiteSpace(p.Title))
49-
.Select(p => new Suggestion(p.Title!, p.Description ?? ""))
64+
.Select(p => new Suggestion(
65+
Title: p.Title!,
66+
Description: p.Description ?? "",
67+
Image: p.Image
68+
))
5069
];
5170

5271
return items;

0 commit comments

Comments
 (0)