fetchStatesByIds method
Returns minimal normalized issues for the supplied issueIds.
Used by reconciliation. Implementations MAY return a subset when issues no longer exist, and SHOULD include enough state for the scheduler to classify the issue (state, identifier, blockers when relevant).
Implementation
@override
Future<TrackerResult<List<Issue>>> fetchStatesByIds(
List<String> issueIds,
) async {
if (issueIds.isEmpty) {
return const TrackerSuccess<List<Issue>>(<Issue>[]);
}
final result = await _executeRequest(
query: _stateRefreshQuery,
variables: <String, Object?>{'ids': issueIds},
);
return result.fold(TrackerError<List<Issue>>.new, (data) {
final issuesNode =
(data['issues'] as Map<String, dynamic>?) ??
const <String, dynamic>{};
final nodes =
(issuesNode['nodes'] as List<dynamic>?) ?? const <dynamic>[];
final issues = nodes
.whereType<Map<String, dynamic>>()
.map(_mapStateRefreshNode)
.whereType<Issue>()
.toList(growable: false);
return TrackerSuccess<List<Issue>>(issues);
});
}