sort room list for unread first then recent
This commit is contained in:
parent
a51c869d7e
commit
2c4d5670e5
1 changed files with 32 additions and 9 deletions
|
|
@ -1,3 +1,4 @@
|
||||||
|
import "package:collection/collection.dart";
|
||||||
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
||||||
import "package:flutter/material.dart";
|
import "package:flutter/material.dart";
|
||||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||||
|
|
@ -99,15 +100,37 @@ class SpacesController extends Notifier<IList<Space>> {
|
||||||
.toIList();
|
.toIList();
|
||||||
|
|
||||||
return <Space>[
|
return <Space>[
|
||||||
Space(id: "home", title: "Home", icon: Icons.home, children: homeRooms),
|
Space(
|
||||||
Space(
|
id: "home",
|
||||||
id: "dms",
|
title: "Home",
|
||||||
title: "Direct Messages",
|
icon: Icons.home,
|
||||||
icon: Icons.people,
|
children: homeRooms,
|
||||||
children: dmRooms,
|
),
|
||||||
),
|
Space(
|
||||||
...topLevelSpacesList,
|
id: "dms",
|
||||||
].toIList();
|
title: "Direct Messages",
|
||||||
|
icon: Icons.people,
|
||||||
|
children: dmRooms,
|
||||||
|
),
|
||||||
|
...topLevelSpacesList,
|
||||||
|
]
|
||||||
|
.map(
|
||||||
|
(space) => space.copyWith(
|
||||||
|
children: space.children
|
||||||
|
.sortedBy(
|
||||||
|
(element) =>
|
||||||
|
element
|
||||||
|
.metadata
|
||||||
|
?.sortingTimestamp
|
||||||
|
.millisecondsSinceEpoch ??
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
.sortedBy((room) => room.metadata?.unreadMessages ?? 0)
|
||||||
|
.reversed
|
||||||
|
.toIList(),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.toIList();
|
||||||
}
|
}
|
||||||
|
|
||||||
static final provider = NotifierProvider<SpacesController, IList<Space>>(
|
static final provider = NotifierProvider<SpacesController, IList<Space>>(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue