update activity data when activity event id changes, show last activity if there are no incomplete activities
This commit is contained in:
parent
965308d628
commit
2227c9d22d
2 changed files with 30 additions and 20 deletions
|
|
@ -1,6 +1,5 @@
|
|||
import 'dart:developer';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:fluffychat/pangea/enum/message_mode_enum.dart';
|
||||
import 'package:fluffychat/pangea/matrix_event_wrappers/pangea_message_event.dart';
|
||||
import 'package:fluffychat/pangea/matrix_event_wrappers/practice_activity_event.dart';
|
||||
|
|
@ -53,17 +52,7 @@ class MessagePracticeActivityCardState extends State<PracticeActivityCard> {
|
|||
|
||||
void loadInitialData() {
|
||||
if (langCode == null) return;
|
||||
debugPrint(
|
||||
"total events: ${widget.pangeaMessageEvent.practiceActivities(langCode!).length}",
|
||||
);
|
||||
debugPrint(
|
||||
"incomplete practice events: ${widget.pangeaMessageEvent.practiceActivities(langCode!).where((element) => !element.isComplete).length}",
|
||||
);
|
||||
updatePracticeActivity();
|
||||
// practiceEvent = widget.pangeaMessageEvent
|
||||
// .practiceActivities(langCode)
|
||||
// .firstWhereOrNull((activity) => !activity.isComplete);
|
||||
|
||||
if (practiceEvent == null) {
|
||||
debugger(when: kDebugMode);
|
||||
}
|
||||
|
|
@ -71,15 +60,22 @@ class MessagePracticeActivityCardState extends State<PracticeActivityCard> {
|
|||
|
||||
void updatePracticeActivity() {
|
||||
if (langCode == null) return;
|
||||
setState(() {
|
||||
practiceEvent = widget.pangeaMessageEvent
|
||||
.practiceActivities(langCode!)
|
||||
.firstWhereOrNull(
|
||||
(activity) =>
|
||||
activity.event.eventId != practiceEvent?.event.eventId &&
|
||||
!activity.isComplete,
|
||||
);
|
||||
});
|
||||
final List<PracticeActivityEvent> activities =
|
||||
widget.pangeaMessageEvent.practiceActivities(langCode!);
|
||||
final List<PracticeActivityEvent> incompleteActivities =
|
||||
activities.where((element) => !element.isComplete).toList();
|
||||
debugPrint("total events: ${activities.length}");
|
||||
debugPrint("incomplete practice events: ${incompleteActivities.length}");
|
||||
|
||||
// if an incomplete activity is found, show that
|
||||
if (incompleteActivities.isNotEmpty) {
|
||||
practiceEvent = incompleteActivities.first;
|
||||
}
|
||||
// if no incomplete activity is found, show the last activity
|
||||
else if (activities.isNotEmpty) {
|
||||
practiceEvent = activities.last;
|
||||
}
|
||||
setState(() {});
|
||||
}
|
||||
|
||||
void showNextActivity() {
|
||||
|
|
|
|||
|
|
@ -41,6 +41,19 @@ class MessagePracticeActivityContentState
|
|||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
initalizeActivity();
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(covariant PracticeActivityContent oldWidget) {
|
||||
super.didUpdateWidget(oldWidget);
|
||||
if (oldWidget.practiceEvent.event.eventId !=
|
||||
widget.practiceEvent.event.eventId) {
|
||||
initalizeActivity();
|
||||
}
|
||||
}
|
||||
|
||||
void initalizeActivity() {
|
||||
final PracticeActivityRecordEvent? recordEvent =
|
||||
widget.practiceEvent.userRecords.firstOrNull;
|
||||
if (recordEvent?.record == null) {
|
||||
|
|
@ -54,6 +67,7 @@ class MessagePracticeActivityContentState
|
|||
recordSubmittedPreviousSession = true;
|
||||
recordSubmittedThisSession = true;
|
||||
}
|
||||
setState(() {});
|
||||
}
|
||||
|
||||
void updateChoice(int index) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue