Merge pull request #4840 from pangeachat/group-course-chats-list-by-activity-id

fix: in course chats list, sort activities by activity ID
This commit is contained in:
ggurdin 2025-12-12 11:48:20 -05:00 committed by GitHub
commit 6249c60fe2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 11 additions and 13 deletions

View file

@ -4,7 +4,6 @@ import 'package:matrix/matrix.dart';
import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/l10n/l10n.dart';
import 'package:fluffychat/pangea/activity_planner/activity_plan_model.dart';
import 'package:fluffychat/pangea/common/widgets/url_image_widget.dart';
import 'package:fluffychat/pangea/course_chats/extended_space_rooms_chunk.dart';
import 'package:fluffychat/pangea/course_chats/open_roles_indicator.dart';
@ -13,20 +12,19 @@ import 'package:fluffychat/widgets/future_loading_dialog.dart';
class ActivityTemplateChatListItem extends StatelessWidget {
final Room space;
final ActivityPlanModel activity;
final List<ExtendedSpaceRoomsChunk> sessions;
final Function(ExtendedSpaceRoomsChunk) joinActivity;
const ActivityTemplateChatListItem({
super.key,
required this.space,
required this.activity,
required this.sessions,
required this.joinActivity,
});
@override
Widget build(BuildContext context) {
final activity = sessions.first.activity;
return Padding(
padding: const EdgeInsets.symmetric(
horizontal: 8,
@ -82,7 +80,7 @@ class ActivityTemplateChatListItem extends StatelessWidget {
children: [
Expanded(
child: OpenRolesIndicator(
roles: activity.roles.values.toList(),
roles: e.activity.roles.values.toList(),
assignedRoles: e.assignedRoles,
space: space,
),

View file

@ -9,7 +9,6 @@ import 'package:matrix/matrix.dart';
import 'package:fluffychat/l10n/l10n.dart';
import 'package:fluffychat/pages/chat_list/chat_list.dart';
import 'package:fluffychat/pangea/activity_planner/activity_plan_model.dart';
import 'package:fluffychat/pangea/activity_sessions/activity_room_extension.dart';
import 'package:fluffychat/pangea/chat_list/widgets/public_room_bottom_sheet.dart';
import 'package:fluffychat/pangea/chat_settings/constants/pangea_room_types.dart';
@ -115,10 +114,9 @@ class CourseChatsController extends State<CourseChats>
)
.toList();
Map<ActivityPlanModel, List<ExtendedSpaceRoomsChunk>> discoveredActivities() {
Map<String, List<ExtendedSpaceRoomsChunk>> discoveredActivities() {
if (discoveredChildren == null || roomSummaries == null) return {};
final Map<ActivityPlanModel, List<ExtendedSpaceRoomsChunk>> sessionsMap =
{};
final Map<String, List<ExtendedSpaceRoomsChunk>> sessionsMap = {};
final validIDs = course?.activityIDs ?? {};
for (final chunk in discoveredChildren!) {
@ -151,11 +149,12 @@ class CourseChatsController extends State<CourseChats>
continue;
}
sessionsMap[activity] ??= [];
sessionsMap[activity]!.add(
sessionsMap[activity.activityId] ??= [];
sessionsMap[activity.activityId]!.add(
ExtendedSpaceRoomsChunk(
chunk: chunk,
assignedRoles: users.values.toList(),
activity: activity,
),
);
}

View file

@ -223,10 +223,8 @@ class CourseChatsView extends StatelessWidget {
final sessions = discoveredSessions[i].value;
return ActivityTemplateChatListItem(
space: room,
activity: activity,
sessions: sessions,
joinActivity: (e) =>
controller.joinActivity(activity.activityId, e),
joinActivity: (e) => controller.joinActivity(activity, e),
);
}
i -= discoveredSessions.length;

View file

@ -1,13 +1,16 @@
import 'package:matrix/matrix.dart';
import 'package:fluffychat/pangea/activity_planner/activity_plan_model.dart';
import 'package:fluffychat/pangea/activity_sessions/activity_role_model.dart';
class ExtendedSpaceRoomsChunk {
final SpaceRoomsChunk chunk;
final List<ActivityRoleModel> assignedRoles;
final ActivityPlanModel activity;
ExtendedSpaceRoomsChunk({
required this.chunk,
required this.assignedRoles,
required this.activity,
});
}