Update to version 0.11.0

This commit is contained in:
Christian Pauly 2020-04-02 13:14:39 +02:00
commit a0828535d5
6 changed files with 37 additions and 15 deletions

View file

@ -67,7 +67,7 @@ class _ChatState extends State<_Chat> {
Timer typingTimeout;
bool currentlyTyping = false;
Set<Event> selectedEvents = {};
List<Event> selectedEvents = [];
Event replyEvent;
@ -261,6 +261,9 @@ class _ChatState extends State<_Chat> {
String _getSelectedEventString(BuildContext context) {
String copyString = "";
if (selectedEvents.length == 1) {
return selectedEvents.first.getLocalizedBody(context);
}
for (Event event in selectedEvents) {
if (copyString.isNotEmpty) copyString += "\n\n";
copyString += event.getLocalizedBody(context, withSenderNamePrefix: true);
@ -488,13 +491,22 @@ class _ChatState extends State<_Chat> {
),
)
: Message(timeline.events[i - 1],
onSelect: (Event event) => event.redacted
? null
: selectedEvents.contains(event)
? setState(() =>
selectedEvents.remove(event))
: setState(() =>
selectedEvents.add(event)),
onSelect: (Event event) {
if (!event.redacted) {
if (selectedEvents.contains(event)) {
setState(
() => selectedEvents.remove(event),
);
} else {
setState(
() => selectedEvents.add(event),
);
}
selectedEvents.sort(
(a, b) => a.time.compareTo(b.time),
);
}
},
longPressSelect: selectedEvents.isEmpty,
selected: selectedEvents
.contains(timeline.events[i - 1]),

View file

@ -174,6 +174,7 @@ class _ChatDetailsState extends State<ChatDetails> {
);
}
members ??= widget.room.getParticipants();
members.removeWhere((u) => u.membership == Membership.leave);
final int actualMembersCount =
widget.room.mInvitedMemberCount + widget.room.mJoinedMemberCount;
final bool canRequestMoreMembers = members.length < actualMembersCount;

View file

@ -27,10 +27,14 @@ class _InvitationSelectionState extends State<InvitationSelection> {
Future<List<User>> getContacts(BuildContext context) async {
final Client client = Matrix.of(context).client;
List<User> participants = await widget.room.requestParticipants();
participants.removeWhere(
(u) => ![Membership.join, Membership.invite].contains(u.membership),
);
List<User> contacts = [];
Map<String, bool> userMap = {};
for (int i = 0; i < client.rooms.length; i++) {
List<User> roomUsers = client.rooms[i].getParticipants();
for (int j = 0; j < roomUsers.length; j++) {
if (userMap[roomUsers[j].id] != true &&
participants.indexWhere((u) => u.id == roomUsers[j].id) == -1) {
@ -39,10 +43,11 @@ class _InvitationSelectionState extends State<InvitationSelection> {
userMap[roomUsers[j].id] = true;
}
}
contacts.sort((a, b) => a
.calcDisplayname()
.toLowerCase()
.compareTo(b.calcDisplayname().toLowerCase()));
contacts.sort(
(a, b) => a.calcDisplayname().toLowerCase().compareTo(
b.calcDisplayname().toLowerCase(),
),
);
return contacts;
}