addRange method
Adds all messages between start and end inclusive.
Implementation
void addRange(int start, int end) {
// start:end
if (start > maxId || end > maxId) {
throw InvalidArgumentException('range $start:$end exceeds $maxId');
}
if ((start - end).abs() >= maxRangeLength) {
throw InvalidArgumentException(
'range $start:$end spans more than $maxRangeLength messages',
);
}
if (start == end) {
add(start);
return;
}
final wasEmpty = isEmpty;
if (start < end) {
_ids.addAll([for (int i = start; i <= end; i++) i]);
} else {
_ids.addAll([for (int i = end; i <= start; i++) i]);
}
_text = wasEmpty ? '$start:$end' : null;
}