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/space/language_settings.dart

185 lines
6.8 KiB
Dart

// import 'dart:developer';
// import 'package:fluffychat/pangea/models/space_model.dart';
// import 'package:fluffychat/pangea/widgets/space/language_level_dropdown.dart';
// import 'package:flutter/foundation.dart';
// import 'package:flutter/material.dart';
// import 'package:flutter_gen/gen_l10n/l10n.dart';
// import 'package:future_loading_dialog/future_loading_dialog.dart';
// import 'package:matrix/matrix.dart';
// import '../../../widgets/matrix.dart';
// import '../../constants/language_keys.dart';
// import '../../constants/pangea_event_types.dart';
// import '../../controllers/language_list_controller.dart';
// import '../../controllers/pangea_controller.dart';
// import '../../extensions/pangea_room_extension/pangea_room_extension.dart';
// import '../../models/language_model.dart';
// import '../../utils/error_handler.dart';
// import '../user_settings/p_language_dropdown.dart';
// import '../user_settings/p_question_container.dart';
// class LanguageSettings extends StatefulWidget {
// final String? roomId;
// final bool startOpen;
// final LanguageSettingsModel? initialSettings;
// const LanguageSettings({
// super.key,
// this.roomId,
// this.startOpen = false,
// this.initialSettings,
// });
// @override
// LanguageSettingsState createState() => LanguageSettingsState();
// }
// class LanguageSettingsState extends State<LanguageSettings> {
// Room? room;
// late LanguageSettingsModel languageSettings;
// late bool isOpen;
// final PangeaController pangeaController = MatrixState.pangeaController;
// final cityController = TextEditingController();
// final countryController = TextEditingController();
// final schoolController = TextEditingController();
// LanguageSettingsState({Key? key});
// @override
// void initState() {
// room = widget.roomId != null
// ? Matrix.of(context).client.getRoomById(widget.roomId!)
// : null;
// languageSettings = room?.languageSettings ??
// widget.initialSettings ??
// LanguageSettingsModel();
// isOpen = widget.startOpen;
// super.initState();
// }
// bool get sameLanguages =>
// languageSettings.targetLanguage == languageSettings.dominantLanguage;
// LanguageModel getLanguage({required bool isBase, required String? langCode}) {
// final LanguageModel backup = isBase
// ? pangeaController.pLanguageStore.baseOptions.first
// : pangeaController.pLanguageStore.targetOptions.first;
// if (langCode == null) return backup;
// final LanguageModel byCode = PangeaLanguage.byLangCode(langCode);
// return byCode.langCode != LanguageKeys.unknownLanguage ? byCode : backup;
// }
// Future<void> updatePermission(void Function() makeLocalRuleChange) async {
// makeLocalRuleChange();
// if (room != null) {
// await showFutureLoadingDialog(
// context: context,
// future: () => setLanguageSettings(room!.id),
// );
// }
// setState(() {});
// }
// void setTextControllerValues() {
// languageSettings.city = cityController.text;
// languageSettings.country = countryController.text;
// languageSettings.schoolName = schoolController.text;
// }
// Future<void> setLanguageSettings(String roomId) async {
// try {
// setTextControllerValues();
// await Matrix.of(context).client.setRoomStateWithKey(
// roomId,
// PangeaEventTypes.languageSettings,
// '',
// languageSettings.toJson(),
// );
// } catch (err, stack) {
// debugger(when: kDebugMode);
// ErrorHandler.logError(e: err, s: stack);
// }
// }
// @override
// Widget build(BuildContext context) => Column(
// children: [
// ListTile(
// title: Text(
// L10n.of(context)!.languageSettings,
// style: TextStyle(
// color: Theme.of(context).colorScheme.secondary,
// fontWeight: FontWeight.bold,
// ),
// ),
// subtitle: Text(L10n.of(context)!.languageSettingsDesc),
// leading: CircleAvatar(
// backgroundColor: Theme.of(context).scaffoldBackgroundColor,
// foregroundColor: Theme.of(context).textTheme.bodyLarge!.color,
// child: const Icon(Icons.language),
// ),
// trailing: Icon(
// isOpen
// ? Icons.keyboard_arrow_down_outlined
// : Icons.keyboard_arrow_right_outlined,
// ),
// onTap: () => setState(() => isOpen = !isOpen),
// ),
// if (isOpen)
// AnimatedContainer(
// duration: const Duration(milliseconds: 300),
// height: isOpen ? null : 0,
// child: Padding(
// padding: const EdgeInsets.fromLTRB(16.0, 0, 16.0, 8.0),
// child: Column(
// children: [
// PQuestionContainer(
// title: L10n.of(context)!.selectSpaceDominantLanguage,
// ),
// PLanguageDropdown(
// onChange: (p0) => updatePermission(() {
// languageSettings.dominantLanguage = p0.langCode;
// }),
// initialLanguage: getLanguage(
// isBase: true,
// langCode: languageSettings.dominantLanguage,
// ),
// languages: pangeaController.pLanguageStore.baseOptions,
// showMultilingual: true,
// ),
// PQuestionContainer(
// title: L10n.of(context)!.selectSpaceTargetLanguage,
// ),
// PLanguageDropdown(
// onChange: (p0) => updatePermission(() {
// languageSettings.targetLanguage = p0.langCode;
// }),
// initialLanguage: getLanguage(
// isBase: false,
// langCode: languageSettings.targetLanguage,
// ),
// languages: pangeaController.pLanguageStore.targetOptions,
// ),
// PQuestionContainer(
// title: L10n.of(context)!.whatIsYourSpaceLanguageLevel,
// ),
// LanguageLevelDropdown(
// initialLevel: languageSettings.languageLevel,
// onChanged: (int? newValue) => updatePermission(() {
// languageSettings.languageLevel = newValue!;
// }),
// ),
// ],
// ),
// ),
// ),
// ],
// );
// }