fix: show screen loading in course settings until activity roles are … (#4374)
* fix: show screen loading in course settings until activity roles are completly loaded * show loading indicator over activity card on load course summary * Update lib/pages/chat_details/chat_details.dart Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
parent
5609632641
commit
615c3e9601
3 changed files with 32 additions and 9 deletions
|
|
@ -53,12 +53,13 @@ class ChatDetails extends StatefulWidget {
|
|||
class ChatDetailsController extends State<ChatDetails>
|
||||
with ActivitySummariesProvider, CoursePlanProvider {
|
||||
bool loadingActivities = true;
|
||||
bool loadingCourseSummary = true;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_loadSummaries();
|
||||
_loadCourseInfo();
|
||||
_loadSummaries();
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
@ -66,6 +67,7 @@ class ChatDetailsController extends State<ChatDetails>
|
|||
super.didUpdateWidget(oldWidget);
|
||||
if (oldWidget.roomId != widget.roomId) {
|
||||
_loadCourseInfo();
|
||||
_loadSummaries();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -394,11 +396,11 @@ class ChatDetailsController extends State<ChatDetails>
|
|||
return;
|
||||
}
|
||||
|
||||
setState(() => loadingActivities = true);
|
||||
if (mounted) setState(() => loadingActivities = true);
|
||||
await loadCourse(room.coursePlan!.uuid);
|
||||
if (course != null) {
|
||||
await loadTopics();
|
||||
await loadAllActivities();
|
||||
if (mounted) await loadTopics();
|
||||
if (mounted) await loadAllActivities();
|
||||
}
|
||||
if (mounted) setState(() => loadingActivities = false);
|
||||
}
|
||||
|
|
@ -407,6 +409,8 @@ class ChatDetailsController extends State<ChatDetails>
|
|||
try {
|
||||
final room = Matrix.of(context).client.getRoomById(roomId!);
|
||||
if (room == null || !room.isSpace) return;
|
||||
|
||||
if (mounted) setState(() => loadingCourseSummary = true);
|
||||
await loadRoomSummaries(
|
||||
room.spaceChildren.map((c) => c.roomId).whereType<String>().toList(),
|
||||
);
|
||||
|
|
@ -419,6 +423,8 @@ class ChatDetailsController extends State<ChatDetails>
|
|||
"roomId": roomId,
|
||||
},
|
||||
);
|
||||
} finally {
|
||||
if (mounted) setState(() => loadingCourseSummary = false);
|
||||
}
|
||||
}
|
||||
// Pangea#
|
||||
|
|
|
|||
|
|
@ -196,10 +196,12 @@ class CourseChatsController extends State<CourseChats>
|
|||
|
||||
try {
|
||||
await _loadHierarchy(activeSpace: room, reload: reload);
|
||||
await _joinDefaultChats();
|
||||
await loadRoomSummaries(
|
||||
room.spaceChildren.map((c) => c.roomId).whereType<String>().toList(),
|
||||
);
|
||||
if (mounted) await _joinDefaultChats();
|
||||
if (mounted) {
|
||||
await loadRoomSummaries(
|
||||
room.spaceChildren.map((c) => c.roomId).whereType<String>().toList(),
|
||||
);
|
||||
}
|
||||
} catch (e, s) {
|
||||
Logs().w('Unable to load hierarchy', e, s);
|
||||
if (mounted) {
|
||||
|
|
|
|||
|
|
@ -250,6 +250,7 @@ class CourseSettings extends StatelessWidget {
|
|||
child: TopicActivitiesList(
|
||||
room: room,
|
||||
activities: topic.loadedActivities,
|
||||
loading: controller.loadingCourseSummary,
|
||||
hasCompletedActivity:
|
||||
controller.hasCompletedActivity,
|
||||
),
|
||||
|
|
@ -267,12 +268,14 @@ class CourseSettings extends StatelessWidget {
|
|||
class TopicActivitiesList extends StatefulWidget {
|
||||
final Room room;
|
||||
final Map<String, ActivityPlanModel> activities;
|
||||
final bool loading;
|
||||
final bool Function(String userId, String activityId) hasCompletedActivity;
|
||||
|
||||
const TopicActivitiesList({
|
||||
super.key,
|
||||
required this.room,
|
||||
required this.activities,
|
||||
required this.loading,
|
||||
required this.hasCompletedActivity,
|
||||
});
|
||||
@override
|
||||
|
|
@ -339,7 +342,19 @@ class TopicActivitiesListState extends State<TopicActivitiesList> {
|
|||
fontSizeSmall: isColumnMode ? 12.0 : 8.0,
|
||||
iconSize: isColumnMode ? 12.0 : 8.0,
|
||||
),
|
||||
if (complete)
|
||||
if (widget.loading)
|
||||
Container(
|
||||
width: isColumnMode ? 160.0 : 120.0,
|
||||
height: isColumnMode ? 280.0 : 200.0,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(12.0),
|
||||
color: theme.colorScheme.surface.withAlpha(180),
|
||||
),
|
||||
child: const Center(
|
||||
child: CircularProgressIndicator.adaptive(),
|
||||
),
|
||||
)
|
||||
else if (complete)
|
||||
Container(
|
||||
width: isColumnMode ? 160.0 : 120.0,
|
||||
height: isColumnMode ? 280.0 : 200.0,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue