mirror of
https://github.com/KevinMidboe/immich.git
synced 2025-10-29 17:40:28 +00:00
feat(mobile): Home screen customization options (#1563)
* Try staggered layout for home page * Introduce setting for dynamic layout * Fix some provider related bugs * Make asset grouping configurable * Add translation keys, refactor group title * Rename enum values * Fix enum names * Reformat long if statement * Fix timezone related bug * Minor clean up * Fix unit test * Add second assets check back to home screen
This commit is contained in:
@@ -25,46 +25,61 @@ void main() {
|
||||
);
|
||||
}
|
||||
|
||||
final Map<String, List<Asset>> groups = {
|
||||
'2022-01-05': testAssets.sublist(0, 5).map((e) {
|
||||
final List<Asset> assets = [];
|
||||
|
||||
assets.addAll(
|
||||
testAssets.sublist(0, 5).map((e) {
|
||||
e.createdAt = DateTime(2022, 1, 5);
|
||||
return e;
|
||||
}).toList(),
|
||||
'2022-01-10': testAssets.sublist(5, 10).map((e) {
|
||||
);
|
||||
assets.addAll(
|
||||
testAssets.sublist(5, 10).map((e) {
|
||||
e.createdAt = DateTime(2022, 1, 10);
|
||||
return e;
|
||||
}).toList(),
|
||||
'2022-02-17': testAssets.sublist(10, 15).map((e) {
|
||||
);
|
||||
assets.addAll(
|
||||
testAssets.sublist(10, 15).map((e) {
|
||||
e.createdAt = DateTime(2022, 2, 17);
|
||||
return e;
|
||||
}).toList(),
|
||||
'2022-10-15': testAssets.sublist(15, 30).map((e) {
|
||||
);
|
||||
assets.addAll(
|
||||
testAssets.sublist(15, 30).map((e) {
|
||||
e.createdAt = DateTime(2022, 10, 15);
|
||||
return e;
|
||||
}).toList()
|
||||
};
|
||||
}).toList(),
|
||||
);
|
||||
|
||||
group('Test grouped', () {
|
||||
test('test grouped check months', () async {
|
||||
final renderList = await RenderList.fromAssetGroups(groups, 3);
|
||||
final renderList = await RenderList.fromAssets(
|
||||
assets,
|
||||
AssetGridLayoutParameters(
|
||||
3,
|
||||
false,
|
||||
GroupAssetsBy.day,
|
||||
),
|
||||
);
|
||||
|
||||
// Jan
|
||||
// Day 1
|
||||
// 5 Assets => 2 Rows
|
||||
// Day 2
|
||||
// 5 Assets => 2 Rows
|
||||
// Feb
|
||||
// Day 1
|
||||
// 5 Assets => 2 Rows
|
||||
// Oct
|
||||
// Day 1
|
||||
// 15 Assets => 5 Rows
|
||||
// Feb
|
||||
// Day 1
|
||||
// 5 Assets => 2 Rows
|
||||
// Jan
|
||||
// Day 2
|
||||
// 5 Assets => 2 Rows
|
||||
// Day 1
|
||||
// 5 Assets => 2 Rows
|
||||
expect(renderList.elements.length, 18);
|
||||
expect(
|
||||
renderList.elements[0].type,
|
||||
RenderAssetGridElementType.monthTitle,
|
||||
);
|
||||
expect(renderList.elements[0].date.month, 1);
|
||||
expect(renderList.elements[0].date.month, 10);
|
||||
expect(
|
||||
renderList.elements[7].type,
|
||||
RenderAssetGridElementType.monthTitle,
|
||||
@@ -74,38 +89,44 @@ void main() {
|
||||
renderList.elements[11].type,
|
||||
RenderAssetGridElementType.monthTitle,
|
||||
);
|
||||
expect(renderList.elements[11].date.month, 10);
|
||||
expect(renderList.elements[11].date.month, 1);
|
||||
});
|
||||
|
||||
test('test grouped check types', () async {
|
||||
final renderList = await RenderList.fromAssetGroups(groups, 5);
|
||||
final renderList = await RenderList.fromAssets(
|
||||
assets,
|
||||
AssetGridLayoutParameters(
|
||||
5,
|
||||
false,
|
||||
GroupAssetsBy.day,
|
||||
),
|
||||
);
|
||||
|
||||
// Jan
|
||||
// Day 1
|
||||
// 5 Assets
|
||||
// Day 2
|
||||
// 5 Assets
|
||||
// Feb
|
||||
// Day 1
|
||||
// 5 Assets
|
||||
// Oct
|
||||
// Day 1
|
||||
// 15 Assets => 3 Rows
|
||||
|
||||
// Feb
|
||||
// Day 1
|
||||
// 5 Assets => 1 Row
|
||||
// Jan
|
||||
// Day 2
|
||||
// 5 Assets => 1 Row
|
||||
// Day 1
|
||||
// 5 Assets => 1 Row
|
||||
final types = [
|
||||
RenderAssetGridElementType.monthTitle,
|
||||
RenderAssetGridElementType.dayTitle,
|
||||
RenderAssetGridElementType.groupDividerTitle,
|
||||
RenderAssetGridElementType.assetRow,
|
||||
RenderAssetGridElementType.assetRow,
|
||||
RenderAssetGridElementType.dayTitle,
|
||||
RenderAssetGridElementType.assetRow,
|
||||
RenderAssetGridElementType.monthTitle,
|
||||
RenderAssetGridElementType.dayTitle,
|
||||
RenderAssetGridElementType.groupDividerTitle,
|
||||
RenderAssetGridElementType.assetRow,
|
||||
RenderAssetGridElementType.monthTitle,
|
||||
RenderAssetGridElementType.dayTitle,
|
||||
RenderAssetGridElementType.groupDividerTitle,
|
||||
RenderAssetGridElementType.assetRow,
|
||||
RenderAssetGridElementType.groupDividerTitle,
|
||||
RenderAssetGridElementType.assetRow,
|
||||
RenderAssetGridElementType.assetRow
|
||||
];
|
||||
|
||||
expect(renderList.elements.length, types.length);
|
||||
|
||||
Reference in New Issue
Block a user