change: Remove previous collapse solution
This commit is contained in:
parent
df1f106aeb
commit
71ad54d939
6 changed files with 124 additions and 65 deletions
|
|
@ -72,7 +72,7 @@ class _ChatState extends State<Chat> {
|
|||
|
||||
List<Event> filteredEvents;
|
||||
|
||||
bool _collapseRoomCreate = true;
|
||||
final Set<String> _unfolded = {};
|
||||
|
||||
Event replyEvent;
|
||||
|
||||
|
|
@ -146,12 +146,22 @@ class _ChatState extends State<Chat> {
|
|||
if (!mounted) return;
|
||||
setState(
|
||||
() {
|
||||
filteredEvents =
|
||||
timeline.getFilteredEvents(collapseRoomCreate: _collapseRoomCreate);
|
||||
filteredEvents = timeline.getFilteredEvents(unfolded: _unfolded);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
void _unfold(String eventId) {
|
||||
var i = filteredEvents.indexWhere((e) => e.eventId == eventId);
|
||||
setState(() {
|
||||
while (i < filteredEvents.length - 1 && filteredEvents[i].isState) {
|
||||
_unfolded.add(filteredEvents[i].eventId);
|
||||
i++;
|
||||
}
|
||||
filteredEvents = timeline.getFilteredEvents(unfolded: _unfolded);
|
||||
});
|
||||
}
|
||||
|
||||
Future<bool> getTimeline(BuildContext context) async {
|
||||
if (timeline == null) {
|
||||
timeline = await room.getTimeline(onUpdate: updateView);
|
||||
|
|
@ -712,9 +722,7 @@ class _ChatState extends State<Chat> {
|
|||
thisEventsKeyMap[filteredEvents[i].eventId] = i;
|
||||
}
|
||||
|
||||
return ListView.custom(
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: max(
|
||||
final horizontalPadding = max(
|
||||
0,
|
||||
(MediaQuery.of(context).size.width -
|
||||
FluffyThemes.columnWidth *
|
||||
|
|
@ -724,7 +732,14 @@ class _ChatState extends State<Chat> {
|
|||
null
|
||||
? 4.5
|
||||
: 3.5)) /
|
||||
2),
|
||||
2)
|
||||
.toDouble();
|
||||
|
||||
return ListView.custom(
|
||||
padding: EdgeInsets.only(
|
||||
top: 16,
|
||||
left: horizontalPadding,
|
||||
right: horizontalPadding,
|
||||
),
|
||||
reverse: true,
|
||||
controller: _scrollController,
|
||||
|
|
@ -759,9 +774,11 @@ class _ChatState extends State<Chat> {
|
|||
builder: (_, __) {
|
||||
final seenByText =
|
||||
room.getLocalizedSeenByText(
|
||||
context,
|
||||
timeline,
|
||||
filteredEvents);
|
||||
context,
|
||||
timeline,
|
||||
filteredEvents,
|
||||
_unfolded,
|
||||
);
|
||||
return AnimatedContainer(
|
||||
height: seenByText.isEmpty ? 0 : 24,
|
||||
duration: seenByText.isEmpty
|
||||
|
|
@ -830,13 +847,8 @@ class _ChatState extends State<Chat> {
|
|||
'${event.senderId} ',
|
||||
),
|
||||
),
|
||||
unfold: _unfold,
|
||||
onSelect: (Event event) {
|
||||
if (event.type ==
|
||||
EventTypes.RoomCreate) {
|
||||
return setState(() =>
|
||||
_collapseRoomCreate =
|
||||
false);
|
||||
}
|
||||
if (!event.redacted) {
|
||||
if (selectedEvents
|
||||
.contains(event)) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue