parseSearchSuggestions function
Parses search suggestions.
Implementation
List parseSearchSuggestions(JsonMap results, bool detailedRuns) {
final contents =
(((results['contents'] as List?)?[0]
as JsonMap?)?['searchSuggestionsSectionRenderer']
as JsonMap?)?['contents']
as List?;
if (contents == null || contents.isEmpty) return [];
final suggestions = <dynamic>[];
for (final rawSuggestion in List<JsonMap>.from(contents)) {
JsonMap suggestionContent;
String? feedbackToken;
if (rawSuggestion.containsKey('historySuggestionRenderer')) {
suggestionContent = rawSuggestion['historySuggestionRenderer'] as JsonMap;
feedbackToken =
nav(suggestionContent, [
'serviceEndpoint',
'feedbackEndpoint',
'feedbackToken',
], nullIfAbsent: true)
as String?;
} else {
suggestionContent = rawSuggestion['searchSuggestionRenderer'] as JsonMap;
}
final text =
((suggestionContent['navigationEndpoint'] as JsonMap)['searchEndpoint']
as JsonMap)['query'];
final runs = (suggestionContent['suggestion'] as JsonMap)['runs'];
if (detailedRuns) {
suggestions.add({
'text': text,
'runs': runs,
'fromHistory': feedbackToken != null,
'feedbackToken': feedbackToken,
});
} else {
suggestions.add(text);
}
}
return suggestions;
}