don't return to left activity session, sort roles consistently, use joined rooms to get roles info when available
This commit is contained in:
parent
1514d4ae49
commit
104cb817d6
3 changed files with 24 additions and 6 deletions
|
|
@ -40,7 +40,8 @@ class ActivityParticipantList extends StatelessWidget {
|
|||
room: room,
|
||||
builder: (context, participants) {
|
||||
final theme = Theme.of(context);
|
||||
final availableRoles = activity.roles;
|
||||
final availableRoles =
|
||||
activity.roles.values.sorted((a, b) => a.id.compareTo(b.id));
|
||||
|
||||
final remainingMembers = participants.participants.where(
|
||||
(p) => !assignedRoles.values.any((r) => r.userId == p.id),
|
||||
|
|
@ -53,7 +54,7 @@ class ActivityParticipantList extends StatelessWidget {
|
|||
alignment: WrapAlignment.center,
|
||||
spacing: 12.0,
|
||||
runSpacing: 12.0,
|
||||
children: availableRoles.values.map((availableRole) {
|
||||
children: availableRoles.map((availableRole) {
|
||||
final selected =
|
||||
isSelected != null ? isSelected!(availableRole.id) : false;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:matrix/matrix.dart';
|
||||
|
||||
|
|
@ -7,6 +8,7 @@ import 'package:fluffychat/config/themes.dart';
|
|||
import 'package:fluffychat/l10n/l10n.dart';
|
||||
import 'package:fluffychat/pangea/activity_feedback/activity_feedback_repo.dart';
|
||||
import 'package:fluffychat/pangea/activity_feedback/activity_feedback_request.dart';
|
||||
import 'package:fluffychat/pangea/activity_sessions/activity_room_extension.dart';
|
||||
import 'package:fluffychat/pangea/activity_sessions/activity_session_start/activity_feedback_request_dialog.dart';
|
||||
import 'package:fluffychat/pangea/activity_sessions/activity_session_start/activity_feedback_response_dialog.dart';
|
||||
import 'package:fluffychat/pangea/activity_sessions/activity_session_start/activity_session_start_page.dart';
|
||||
|
|
@ -449,13 +451,22 @@ class _ActivityStatuses extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
...entry.entries.map((e) {
|
||||
final summary = e.value;
|
||||
// if user is in the room, use the room info instead of the
|
||||
// room summary response to get real-time activity roles info
|
||||
final roomId = e.key;
|
||||
final room =
|
||||
Matrix.of(context).client.getRoomById(roomId);
|
||||
final activityPlan =
|
||||
room?.activityPlan ?? e.value.activityPlan;
|
||||
final activityRoles =
|
||||
room?.assignedRoles ?? e.value.activityRoles.roles;
|
||||
|
||||
return ListTile(
|
||||
title: OpenRolesIndicator(
|
||||
roles: summary.activityPlan.roles.values.toList(),
|
||||
assignedRoles:
|
||||
summary.activityRoles.roles.values.toList(),
|
||||
roles: activityPlan.roles.values
|
||||
.sorted((a, b) => a.id.compareTo(b.id))
|
||||
.toList(),
|
||||
assignedRoles: activityRoles.values.toList(),
|
||||
size: 40.0,
|
||||
spacing: 8.0,
|
||||
space: space,
|
||||
|
|
|
|||
|
|
@ -252,6 +252,12 @@ void chatContextMenuAction(
|
|||
context: context,
|
||||
future: room.isSpace ? room.leaveSpace : room.leave,
|
||||
);
|
||||
|
||||
final r = room.client.getRoomById(room.id);
|
||||
if (r != null && r.membership != Membership.leave) {
|
||||
await room.client.waitForRoomInSync(room.id, leave: true);
|
||||
}
|
||||
|
||||
if (!resp.isError) {
|
||||
outerContext.go(
|
||||
room.courseParent != null
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue