refactor: asset grid

This commit is contained in:
shenlong-tanwen
2024-09-14 22:29:51 +05:30
parent 53974e7276
commit 6fce1ebb79
23 changed files with 796 additions and 113 deletions
@@ -2,6 +2,9 @@ import 'package:flutter/material.dart';
import 'package:immich_mobile/domain/models/store.model.dart';
import 'package:immich_mobile/presentation/modules/theme/models/app_theme.model.dart';
// AppSetting needs to store UI specific settings as well as domain specific settings
// This model is the only exclusion which refers to entities from the presentation layer
// as well as the domain layer
enum AppSetting<T> {
appTheme<AppTheme>(StoreKey.appTheme, AppTheme.blue),
themeMode<ThemeMode>(StoreKey.themeMode, ThemeMode.system),
@@ -0,0 +1,21 @@
import 'package:collection/collection.dart';
import 'package:immich_mobile/domain/models/render_list_element.model.dart';
class RenderList {
final List<RenderListElement> elements;
late final int totalCount;
RenderList({required this.elements}) {
final lastAssetElement =
elements.whereType<RenderListAssetElement>().lastOrNull;
if (lastAssetElement == null) {
totalCount = 0;
} else {
totalCount = lastAssetElement.assetCount + lastAssetElement.assetOffset;
}
}
factory RenderList.empty() {
return RenderList(elements: []);
}
}
@@ -28,6 +28,10 @@ class RenderListMonthHeaderElement extends RenderListElement {
header = formatter.format(date);
}
@override
String toString() =>
'RenderListMonthHeaderElement(header: $header, date: $date)';
@override
bool operator ==(covariant RenderListMonthHeaderElement other) {
if (identical(this, other)) return true;
@@ -44,6 +48,10 @@ class RenderListDayHeaderElement extends RenderListElement {
const RenderListDayHeaderElement({required super.date, required this.header});
@override
String toString() =>
'RenderListDayHeaderElement(header: $header, date: $date)';
@override
bool operator ==(covariant RenderListDayHeaderElement other) {
if (identical(this, other)) return true;