show next activity after completing activity

pull/1384/head
ggurdin 1 year ago
parent 50af1e5508
commit 965308d628

@ -297,8 +297,10 @@ class MessageToolbarState extends State<MessageToolbar> {
}
void showPracticeActivity() {
toolbarContent =
PracticeActivityCard(pangeaMessageEvent: widget.pangeaMessageEvent);
toolbarContent = PracticeActivityCard(
pangeaMessageEvent: widget.pangeaMessageEvent,
controller: this,
);
}
void showImage() {}

@ -1,8 +1,11 @@
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';
import 'package:fluffychat/pangea/utils/bot_style.dart';
import 'package:fluffychat/pangea/widgets/chat/message_toolbar.dart';
import 'package:fluffychat/pangea/widgets/practice_activity/practice_activity_content.dart';
import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/foundation.dart';
@ -11,10 +14,12 @@ import 'package:flutter_gen/gen_l10n/l10n.dart';
class PracticeActivityCard extends StatefulWidget {
final PangeaMessageEvent pangeaMessageEvent;
final MessageToolbarState controller;
const PracticeActivityCard({
super.key,
required this.pangeaMessageEvent,
required this.controller,
});
@override
@ -31,7 +36,7 @@ class MessagePracticeActivityCardState extends State<PracticeActivityCard> {
loadInitialData();
}
void loadInitialData() {
String? get langCode {
final String? langCode = MatrixState.pangeaController.languageController
.activeL2Model()
?.langCode;
@ -41,24 +46,48 @@ class MessagePracticeActivityCardState extends State<PracticeActivityCard> {
SnackBar(content: Text(L10n.of(context)!.noLanguagesSet)),
);
debugger(when: kDebugMode);
return;
return null;
}
return langCode;
}
practiceEvent =
widget.pangeaMessageEvent.practiceActivities(langCode).firstOrNull;
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);
}
setState(() {});
}
void updatePracticeActivity(PracticeActivityEvent? newEvent) {
void updatePracticeActivity() {
if (langCode == null) return;
setState(() {
practiceEvent = newEvent;
practiceEvent = widget.pangeaMessageEvent
.practiceActivities(langCode!)
.firstWhereOrNull(
(activity) =>
activity.event.eventId != practiceEvent?.event.eventId &&
!activity.isComplete,
);
});
}
void showNextActivity() {
if (langCode == null) return;
updatePracticeActivity();
widget.controller.updateMode(MessageMode.practiceActivity);
}
@override
Widget build(BuildContext context) {
if (practiceEvent == null) {
@ -74,6 +103,7 @@ class MessagePracticeActivityCardState extends State<PracticeActivityCard> {
return PracticeActivityContent(
practiceEvent: practiceEvent!,
pangeaMessageEvent: widget.pangeaMessageEvent,
controller: this,
);
}
}

@ -7,6 +7,7 @@ import 'package:fluffychat/pangea/matrix_event_wrappers/practice_activity_event.
import 'package:fluffychat/pangea/models/practice_activities.dart/practice_activity_record_model.dart';
import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:fluffychat/pangea/widgets/practice_activity/multiple_choice_activity.dart';
import 'package:fluffychat/pangea/widgets/practice_activity/practice_activity_card.dart';
import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
@ -14,11 +15,13 @@ import 'package:flutter_gen/gen_l10n/l10n.dart';
class PracticeActivityContent extends StatefulWidget {
final PracticeActivityEvent practiceEvent;
final PangeaMessageEvent pangeaMessageEvent;
final MessagePracticeActivityCardState controller;
const PracticeActivityContent({
super.key,
required this.practiceEvent,
required this.pangeaMessageEvent,
required this.controller,
});
@override
@ -93,7 +96,7 @@ class MessagePracticeActivityContentState
},
);
return null;
});
}).then((_) => widget.controller.showNextActivity());
setState(() {
recordSubmittedThisSession = true;

Loading…
Cancel
Save