more refactors and logs page handling
This commit is contained in:
@@ -15,22 +15,30 @@ class RenderListRepository with LogMixin implements IRenderListRepository {
|
||||
Stream<RenderList> watchAll() {
|
||||
final assetCountExp = _db.asset.id.count();
|
||||
final createdTimeExp = _db.asset.createdTime;
|
||||
final monthYearExp = _db.asset.createdTime.strftime('%m-%Y');
|
||||
final modifiedTimeExp = _db.asset.modifiedTime.max();
|
||||
final monthYearExp = createdTimeExp.strftime('%m-%Y');
|
||||
|
||||
final query = _db.asset.selectOnly()
|
||||
..addColumns([assetCountExp, createdTimeExp])
|
||||
..addColumns([assetCountExp, createdTimeExp, modifiedTimeExp])
|
||||
..groupBy([monthYearExp])
|
||||
..orderBy([OrderingTerm.desc(createdTimeExp)]);
|
||||
|
||||
int lastAssetOffset = 0;
|
||||
DateTime recentModifiedTime = DateTime(1);
|
||||
|
||||
return query
|
||||
.expand((row) {
|
||||
final createdTime = row.read<DateTime>(createdTimeExp)!;
|
||||
final assetCount = row.read(assetCountExp)!;
|
||||
final modifiedTime = row.read(modifiedTimeExp)!;
|
||||
final assetOffset = lastAssetOffset;
|
||||
lastAssetOffset += assetCount;
|
||||
|
||||
// Get the recent modifed time. This is used to prevent unnecessary grid updates
|
||||
if (modifiedTime.isAfter(recentModifiedTime)) {
|
||||
recentModifiedTime = modifiedTime;
|
||||
}
|
||||
|
||||
return [
|
||||
RenderListMonthHeaderElement(date: createdTime),
|
||||
RenderListAssetElement(
|
||||
@@ -44,7 +52,9 @@ class RenderListRepository with LogMixin implements IRenderListRepository {
|
||||
.map((elements) {
|
||||
// Resets the value in closure so the watch refresh will work properly
|
||||
lastAssetOffset = 0;
|
||||
return RenderList(elements: elements);
|
||||
final modified = recentModifiedTime;
|
||||
recentModifiedTime = DateTime(1);
|
||||
return RenderList(elements: elements, modifiedTime: modified);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user