mirror of
https://github.com/immich-app/immich
synced 2025-10-17 18:19:27 +00:00
fix: persist search scroll between rebuilds Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Co-authored-by: Alex <alex.tran1502@gmail.com>
32 lines
1.1 KiB
Dart
32 lines
1.1 KiB
Dart
import 'package:collection/collection.dart';
|
|
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
|
|
|
|
class SearchResult {
|
|
final List<BaseAsset> assets;
|
|
final double scrollOffset;
|
|
final int? nextPage;
|
|
|
|
const SearchResult({required this.assets, this.scrollOffset = 0.0, this.nextPage});
|
|
|
|
SearchResult copyWith({List<BaseAsset>? assets, int? nextPage, double? scrollOffset}) {
|
|
return SearchResult(
|
|
assets: assets ?? this.assets,
|
|
nextPage: nextPage ?? this.nextPage,
|
|
scrollOffset: scrollOffset ?? this.scrollOffset,
|
|
);
|
|
}
|
|
|
|
@override
|
|
String toString() => 'SearchResult(assets: ${assets.length}, nextPage: $nextPage, scrollOffset: $scrollOffset)';
|
|
|
|
@override
|
|
bool operator ==(covariant SearchResult other) {
|
|
if (identical(this, other)) return true;
|
|
final listEquals = const DeepCollectionEquality().equals;
|
|
|
|
return listEquals(other.assets, assets) && other.nextPage == nextPage && other.scrollOffset == scrollOffset;
|
|
}
|
|
|
|
@override
|
|
int get hashCode => assets.hashCode ^ nextPage.hashCode ^ scrollOffset.hashCode;
|
|
}
|