relatica/lib/friendica_client/paging_data.dart

65 wiersze
1.6 KiB
Dart

class PagingData {
static const DEFAULT_LIMIT = 50;
final int? minId;
final int? maxId;
final int? sinceId;
final int limit;
PagingData({
this.minId,
this.maxId,
this.sinceId,
this.limit = DEFAULT_LIMIT,
});
factory PagingData.fromQueryParameters(Uri uri) {
final minIdString = uri.queryParameters['min_id'];
final maxIdString = uri.queryParameters['max_id'];
final sinceIdString = uri.queryParameters['since_id'];
final limitString = uri.queryParameters['limit'];
return PagingData(
minId: int.tryParse(minIdString ?? ''),
maxId: int.tryParse(maxIdString ?? ''),
sinceId: int.tryParse(sinceIdString ?? ''),
limit: int.tryParse(limitString ?? '') ?? DEFAULT_LIMIT,
);
}
String toQueryParameters() {
var pagingData = 'limit=$limit';
if (minId != null) {
pagingData = '$pagingData&min_id=$minId';
}
if (sinceId != null) {
pagingData = '$pagingData&since_id=$sinceId';
}
if (maxId != null) {
pagingData = '$pagingData&max_id=$maxId';
}
return pagingData;
}
@override
String toString() {
return 'PagingData{maxId: $maxId, minId: $minId, sinceId: $sinceId, limit: $limit}';
}
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is PagingData &&
runtimeType == other.runtimeType &&
minId == other.minId &&
maxId == other.maxId &&
sinceId == other.sinceId &&
limit == other.limit;
@override
int get hashCode =>
minId.hashCode ^ maxId.hashCode ^ sinceId.hashCode ^ limit.hashCode;
}