executeQueries method
Future<List<SmartDateQueryResult> >
executeQueries(
- Iterable<
SmartDateQuerySource> queries, { - bool isFlexiDate = false,
- Iterable<
SmartDateQueryResult> ? existingResults, - required Location location,
Implementation
Future<List<SmartDateQueryResult>> executeQueries(
Iterable<SmartDateQuerySource> queries, {
bool isFlexiDate = false,
Iterable<SmartDateQueryResult>? existingResults,
required Location location,
}) async {
final List<List<SmartDateQueryResult>> queryResults = (await Future.wait(
queries.map((query) async {
final flexiDate = FlexiDate.tryFrom(query.smartDateQuery);
// Attempt to parse a flexiDate first.
if (flexiDate != null && flexiDate.isValid && isFlexiDate == true) {
return [SmartDateQueryResult.ofFlexiDate(flexiDate)];
}
final result = await api.parseSmartDate(
IParseSmartDateRequest.of(
input: query.smartDateQuery,
timeZone: location,
),
);
final expanded = [
...result.results!.expand((r) {
final qr = query.toQueryResult(r);
return qr;
}),
if (result.results!.isEmpty == true && flexiDate != null)
SmartDateQueryResult.ofFlexiDate(flexiDate),
];
return expanded;
}),
));
final allResults = [
...queryResults.flatten(),
...?existingResults,
];
return allResults;
}