You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fluffychat/lib/pangea/widgets/practice_activity_card/generate_practice_activity....

62 lines
2.1 KiB
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/models/practice_activities.dart/practice_activity_model.dart';
import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
class GeneratePracticeActivityButton extends StatelessWidget {
final PangeaMessageEvent pangeaMessageEvent;
final Function(PracticeActivityEvent?) onActivityGenerated;
const GeneratePracticeActivityButton({
super.key,
required this.pangeaMessageEvent,
required this.onActivityGenerated,
});
//TODO - probably disable the generation of activities for specific messages
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () async {
final String? l2Code = MatrixState.pangeaController.languageController
.activeL1Model(roomID: pangeaMessageEvent.room.id)
?.langCode;
if (l2Code == null) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(L10n.of(context)!.noLanguagesSet),
),
);
return;
}
final PracticeActivityEvent? practiceActivityEvent = await MatrixState
.pangeaController.practiceGenerationController
.getPracticeActivity(
PracticeActivityRequest(
candidateMessages: [
CandidateMessage(
msgId: pangeaMessageEvent.eventId,
roomId: pangeaMessageEvent.room.id,
text:
pangeaMessageEvent.representationByLanguage(l2Code)?.text ??
pangeaMessageEvent.body,
),
],
userIds: pangeaMessageEvent.room.client.userID != null
? [pangeaMessageEvent.room.client.userID!]
: null,
),
pangeaMessageEvent,
);
onActivityGenerated(practiceActivityEvent);
},
child: Text(L10n.of(context)!.practice),
);
}
}