30 lines
728 B
Dart
30 lines
728 B
Dart
import '../entities/zone.dart';
|
|
import '../repositories/zone_repository.dart';
|
|
|
|
class GetAllZonesUsecase {
|
|
final ZoneRepository repository;
|
|
|
|
GetAllZonesUsecase(this.repository);
|
|
|
|
static const int _pageSize = 100;
|
|
|
|
Future<List<Zone>> call() async {
|
|
final List<Zone> allZones = [];
|
|
int page = 0;
|
|
|
|
while (true) {
|
|
final zones = await repository.getAllZones(page, _pageSize);
|
|
|
|
if (zones == null || zones.isEmpty) break;
|
|
|
|
allZones.addAll(zones);
|
|
|
|
// если пришло меньше, чем размер страницы — это последняя страница
|
|
if (zones.length < _pageSize) break;
|
|
|
|
page++;
|
|
}
|
|
|
|
return allZones;
|
|
}
|
|
} |