fluffychat/lib/pangea/activity_generator/activity_generator.dart

267 lines
8.4 KiB
Dart

// import 'package:flutter/material.dart';
// import 'package:collection/collection.dart';
// import 'package:matrix/matrix.dart';
// import 'package:fluffychat/config/app_config.dart';
// import 'package:fluffychat/l10n/l10n.dart';
// import 'package:fluffychat/pangea/activity_generator/activity_generator_view.dart';
// import 'package:fluffychat/pangea/activity_generator/activity_mode_list_repo.dart';
// import 'package:fluffychat/pangea/activity_generator/activity_plan_generation_repo.dart';
// import 'package:fluffychat/pangea/activity_generator/learning_objective_list_repo.dart';
// import 'package:fluffychat/pangea/activity_generator/list_request_schema.dart';
// import 'package:fluffychat/pangea/activity_generator/media_enum.dart';
// import 'package:fluffychat/pangea/activity_generator/topic_list_repo.dart';
// import 'package:fluffychat/pangea/activity_planner/activity_plan_model.dart';
// import 'package:fluffychat/pangea/activity_planner/activity_plan_request.dart';
// import 'package:fluffychat/pangea/activity_suggestions/activity_suggestions_constants.dart';
// import 'package:fluffychat/pangea/common/utils/error_handler.dart';
// import 'package:fluffychat/pangea/learning_settings/constants/language_constants.dart';
// import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart';
// import 'package:fluffychat/widgets/matrix.dart';
// class ActivityGenerator extends StatefulWidget {
// final String roomID;
// const ActivityGenerator({
// required this.roomID,
// super.key,
// });
// @override
// ActivityGeneratorState createState() => ActivityGeneratorState();
// }
// class ActivityGeneratorState extends State<ActivityGenerator> {
// bool loading = false;
// Object? error;
// List<ActivityPlanModel>? activities;
// final formKey = GlobalKey<FormState>();
// final topicController = TextEditingController();
// final objectiveController = TextEditingController();
// final modeController = TextEditingController();
// MediaEnum selectedMedia = MediaEnum.nan;
// String? selectedLanguageOfInstructions;
// String? selectedTargetLanguage;
// LanguageLevelTypeEnum? selectedCefrLevel;
// int? selectedNumberOfParticipants;
// String? filename;
// List<ActivitySettingResponseSchema>? topicItems;
// List<ActivitySettingResponseSchema>? modeItems;
// List<ActivitySettingResponseSchema>? objectiveItems;
// @override
// void initState() {
// super.initState();
// selectedLanguageOfInstructions =
// MatrixState.pangeaController.userController.userL1?.langCode;
// selectedTargetLanguage =
// MatrixState.pangeaController.userController.userL2?.langCode;
// selectedCefrLevel = LanguageLevelTypeEnum.a1;
// selectedNumberOfParticipants = 3;
// _setMode();
// _setTopic();
// _setObjective();
// }
// @override
// void dispose() {
// topicController.dispose();
// objectiveController.dispose();
// modeController.dispose();
// super.dispose();
// }
// ActivitySettingRequestSchema get req => ActivitySettingRequestSchema(
// langCode:
// MatrixState.pangeaController.userController.userL1?.langCode ??
// LanguageKeys.defaultLanguage,
// );
// ActivityPlanRequest get planRequest => ActivityPlanRequest(
// topic: topicController.text,
// mode: modeController.text,
// objective: objectiveController.text,
// media: selectedMedia,
// languageOfInstructions: selectedLanguageOfInstructions!,
// targetLanguage: selectedTargetLanguage!,
// cefrLevel: selectedCefrLevel!,
// numberOfParticipants: selectedNumberOfParticipants!,
// );
// Room? get room => Matrix.of(context).client.getRoomById(widget.roomID);
// String? validateNotNull(String? value) {
// if (value == null || value.isEmpty) {
// return L10n.of(context).interactiveTranslatorRequired;
// }
// return null;
// }
// String? get _randomTopic => (topicItems?..shuffle())?.first.name;
// String? get _randomObjective => (objectiveItems?..shuffle())?.first.name;
// String? get _randomMode => (modeItems?..shuffle())?.first.name;
// bool get randomizeEnabled =>
// topicItems != null && objectiveItems != null && modeItems != null;
// void randomizeSelections() {
// final selectedTopic = _randomTopic;
// final selectedObjective = _randomObjective;
// final selectedMode = _randomMode;
// if (selectedTopic == null ||
// selectedObjective == null ||
// selectedMode == null) {
// return;
// }
// if (mounted) {
// setState(() {
// topicController.text = selectedTopic;
// objectiveController.text = selectedObjective;
// modeController.text = selectedMode;
// });
// }
// }
// void clearSelections() async {
// setState(() {
// topicController.clear();
// objectiveController.clear();
// modeController.clear();
// selectedMedia = MediaEnum.nan;
// selectedLanguageOfInstructions =
// MatrixState.pangeaController.userController.userL1?.langCode;
// selectedTargetLanguage =
// MatrixState.pangeaController.userController.userL2?.langCode;
// selectedCefrLevel = LanguageLevelTypeEnum.a1;
// selectedNumberOfParticipants = 3;
// });
// }
// void setSelectedNumberOfParticipants(int? value) {
// setState(() => selectedNumberOfParticipants = value);
// }
// void setSelectedTargetLanguage(String? value) {
// setState(() => selectedTargetLanguage = value);
// }
// void setSelectedLanguageOfInstructions(String? value) {
// setState(() => selectedLanguageOfInstructions = value);
// }
// void setSelectedCefrLevel(LanguageLevelTypeEnum? value) {
// setState(() => selectedCefrLevel = value);
// }
// ActivitySettingResponseSchema? get _selectedMode {
// return modeItems?.firstWhereOrNull(
// (element) => element.name.toLowerCase() == planRequest.mode.toLowerCase(),
// );
// }
// Future<void> _setTopic() async {
// final topic = await TopicListRepo.get(req);
// if (mounted) {
// setState(() {
// topicItems = topic;
// });
// }
// }
// Future<void> _setMode() async {
// final mode = await ActivityModeListRepo.get(req);
// if (mounted) {
// setState(() {
// modeItems = mode;
// });
// _setModeImageURL();
// }
// }
// Future<void> _setObjective() async {
// final objective = await LearningObjectiveListRepo.get(req);
// if (mounted) {
// setState(() {
// objectiveItems = objective;
// });
// }
// }
// Future<void> _setModeImageURL() async {
// final mode = _selectedMode;
// if (mode == null) return;
// final modeName =
// mode.defaultName.toLowerCase().replaceAll(RegExp(r'\s+'), '');
// if (!mounted || activities == null) return;
// final imageUrl =
// "${AppConfig.assetsBaseURL}/${ActivitySuggestionsConstants.modeImageFileStart}$modeName.jpg";
// setState(() {
// filename = imageUrl;
// for (ActivityPlanModel activity in activities!) {
// activity = ActivityPlanModel(
// req: activity.req,
// title: activity.title,
// learningObjective: activity.learningObjective,
// instructions: activity.instructions,
// vocab: activity.vocab,
// imageURL: imageUrl,
// roles: activity.roles,
// activityId: activity.activityId,
// );
// }
// });
// }
// void clearActivities() {
// setState(() {
// activities = null;
// filename = null;
// });
// }
// Future<void> generate({bool force = false}) async {
// setState(() {
// loading = true;
// error = null;
// activities = null;
// });
// try {
// final resp = await ActivityPlanGenerationRepo.get(
// planRequest,
// force: force,
// );
// activities = resp.activityPlans;
// await _setModeImageURL();
// } catch (e, s) {
// error = e;
// ErrorHandler.logError(
// e: e,
// s: s,
// data: {
// 'activityPlanRequest': planRequest,
// },
// );
// } finally {
// if (mounted) setState(() => loading = false);
// }
// }
// @override
// Widget build(BuildContext context) => ActivityGeneratorView(this);
// }