From bc2d4a38471536136f6f56b0351ad2180d9dfdd3 Mon Sep 17 00:00:00 2001 From: Matthew <119624750+casualWaist@users.noreply.github.com> Date: Wed, 26 Jun 2024 16:21:57 -0400 Subject: [PATCH] itAutoPlay moved from ToolSettings to PLocalKey --- .../controllers/choreographer.dart | 8 +-- lib/pangea/constants/local.key.dart | 1 + lib/pangea/controllers/local_settings.dart | 3 +- lib/pangea/controllers/user_controller.dart | 18 +++---- lib/pangea/models/class_model.dart | 51 +++++++------------ lib/pangea/models/user_model.dart | 6 +-- .../settings_learning_view.dart | 10 ++++ lib/pangea/widgets/igc/span_card.dart | 4 +- 8 files changed, 48 insertions(+), 53 deletions(-) diff --git a/lib/pangea/choreographer/controllers/choreographer.dart b/lib/pangea/choreographer/controllers/choreographer.dart index 529ba95b4..5921c6eb7 100644 --- a/lib/pangea/choreographer/controllers/choreographer.dart +++ b/lib/pangea/choreographer/controllers/choreographer.dart @@ -15,6 +15,7 @@ import 'package:fluffychat/pangea/models/class_model.dart'; import 'package:fluffychat/pangea/models/it_step.dart'; import 'package:fluffychat/pangea/models/representation_content_model.dart'; import 'package:fluffychat/pangea/models/tokens_event_content_model.dart'; +import 'package:fluffychat/pangea/models/user_model.dart'; import 'package:fluffychat/pangea/utils/any_state_holder.dart'; import 'package:fluffychat/pangea/utils/error_handler.dart'; import 'package:fluffychat/pangea/utils/overlay.dart'; @@ -513,10 +514,9 @@ class Choreographer { chatController.room, ); - bool get itAutoPlayEnabled => pangeaController.permissionsController.isToolEnabled( - ToolSetting.itAutoPlay, - chatController.room, - ); + bool get itAutoPlayEnabled => pangeaController.pStoreService.read( + MatrixProfile.itAutoPlay.title, + ) ?? false; bool get definitionsEnabled => pangeaController.permissionsController.isToolEnabled( diff --git a/lib/pangea/constants/local.key.dart b/lib/pangea/constants/local.key.dart index c0390c2ba..8dc496bf8 100644 --- a/lib/pangea/constants/local.key.dart +++ b/lib/pangea/constants/local.key.dart @@ -11,4 +11,5 @@ class PLocalKey { static const String dismissedPaywall = 'dismissedPaywall'; static const String paywallBackoff = 'paywallBackoff'; static const String autoPlayMessages = 'autoPlayMessages'; + static const String itAutoPlay = 'itAutoPlay'; } diff --git a/lib/pangea/controllers/local_settings.dart b/lib/pangea/controllers/local_settings.dart index d6ae119a5..5984a7bf5 100644 --- a/lib/pangea/controllers/local_settings.dart +++ b/lib/pangea/controllers/local_settings.dart @@ -9,8 +9,7 @@ class LocalSettings { } bool userLanguageToolSetting(ToolSetting setting) => - _pangeaController.pStoreService.read(setting.toString()) - ?? setting != ToolSetting.itAutoPlay; + _pangeaController.pStoreService.read(setting.toString()) ?? true; // bool get userEnableIT => // _pangeaController.pStoreService.read(ToolSetting.interactiveTranslator.toString()) ?? true; diff --git a/lib/pangea/controllers/user_controller.dart b/lib/pangea/controllers/user_controller.dart index 0e336fdf6..31cde897f 100644 --- a/lib/pangea/controllers/user_controller.dart +++ b/lib/pangea/controllers/user_controller.dart @@ -123,10 +123,10 @@ class UserController extends BaseController { : null; final bool? autoPlay = migratedProfileInfo(MatrixProfile.autoPlayMessages); + final bool? itAutoPlay = migratedProfileInfo(MatrixProfile.itAutoPlay); final bool? trial = migratedProfileInfo(MatrixProfile.activatedFreeTrial); final bool? interactiveTranslator = migratedProfileInfo(MatrixProfile.interactiveTranslator); - final bool? itAutoPlay = migratedProfileInfo(MatrixProfile.itAutoPlay); final bool? interactiveGrammar = migratedProfileInfo(MatrixProfile.interactiveGrammar); final bool? immersionMode = @@ -143,9 +143,9 @@ class UserController extends BaseController { await updateMatrixProfile( dateOfBirth: dob, autoPlayMessages: autoPlay, + itAutoPlay: itAutoPlay, activatedFreeTrial: trial, interactiveTranslator: interactiveTranslator, - itAutoPlay: itAutoPlay, interactiveGrammar: interactiveGrammar, immersionMode: immersionMode, definitions: definitions, @@ -225,9 +225,9 @@ class UserController extends BaseController { Future updateMatrixProfile({ String? dateOfBirth, bool? autoPlayMessages, + bool? itAutoPlay, bool? activatedFreeTrial, bool? interactiveTranslator, - bool? itAutoPlay, bool? interactiveGrammar, bool? immersionMode, bool? definitions, @@ -253,6 +253,12 @@ class UserController extends BaseController { autoPlayMessages, ); } + if (itAutoPlay != null) { + await _pangeaController.pStoreService.save( + MatrixProfile.itAutoPlay.title, + itAutoPlay, + ); + } if (activatedFreeTrial != null) { await _pangeaController.pStoreService.save( MatrixProfile.activatedFreeTrial.title, @@ -265,12 +271,6 @@ class UserController extends BaseController { interactiveTranslator, ); } - if (itAutoPlay != null) { - await _pangeaController.pStoreService.save( - MatrixProfile.itAutoPlay.title, - itAutoPlay, - ); - } if (interactiveGrammar != null) { await _pangeaController.pStoreService.save( MatrixProfile.interactiveGrammar.title, diff --git a/lib/pangea/models/class_model.dart b/lib/pangea/models/class_model.dart index f663af8ce..0bebdac2f 100644 --- a/lib/pangea/models/class_model.dart +++ b/lib/pangea/models/class_model.dart @@ -31,13 +31,13 @@ class ClassSettingsModel { }); static ClassSettingsModel get newClass => ClassSettingsModel( - city: null, - country: null, - dominantLanguage: ClassDefaultValues.defaultDominantLanguage, - languageLevel: null, - schoolName: null, - targetLanguage: ClassDefaultValues.defaultTargetLanguage, - ); + city: null, + country: null, + dominantLanguage: ClassDefaultValues.defaultDominantLanguage, + languageLevel: null, + schoolName: null, + targetLanguage: ClassDefaultValues.defaultTargetLanguage, + ); factory ClassSettingsModel.fromJson(Map json) { return ClassSettingsModel( @@ -100,9 +100,9 @@ class ClassSettingsModel { } StateEvent get toStateEvent => StateEvent( - content: toJson(), - type: PangeaEventTypes.classSettings, - ); + content: toJson(), + type: PangeaEventTypes.classSettings, + ); } class PangeaRoomRules { @@ -120,7 +120,6 @@ class PangeaRoomRules { bool isInviteOnlyStudents; // 0 = forbidden, 1 = allow individual to choose, 2 = require int interactiveTranslator; - int itAutoPlay; int interactiveGrammar; int immersionMode; int definitions; @@ -139,7 +138,6 @@ class PangeaRoomRules { this.isVoiceNotes = true, this.isInviteOnlyStudents = true, this.interactiveTranslator = ClassDefaultValues.languageToolPermissions, - this.itAutoPlay = ClassDefaultValues.languageToolPermissions, this.interactiveGrammar = ClassDefaultValues.languageToolPermissions, this.immersionMode = ClassDefaultValues.languageToolPermissions, this.definitions = ClassDefaultValues.languageToolPermissions, @@ -191,9 +189,6 @@ class PangeaRoomRules { case ToolSetting.interactiveTranslator: interactiveTranslator = value; break; - case ToolSetting.itAutoPlay: - itAutoPlay = value; - break; case ToolSetting.interactiveGrammar: interactiveGrammar = value; break; @@ -212,9 +207,9 @@ class PangeaRoomRules { } StateEvent get toStateEvent => StateEvent( - content: toJson(), - type: PangeaEventTypes.rules, - ); + content: toJson(), + type: PangeaEventTypes.rules, + ); factory PangeaRoomRules.fromJson(Map json) => PangeaRoomRules( @@ -232,16 +227,14 @@ class PangeaRoomRules { isInviteOnlyStudents: json['is_invite_only_students'] ?? true, interactiveTranslator: json['interactive_translator'] ?? ClassDefaultValues.languageToolPermissions, - itAutoPlay: json['it_auto_play'] ?? - ClassDefaultValues.languageToolPermissions, interactiveGrammar: json['interactive_grammar'] ?? ClassDefaultValues.languageToolPermissions, immersionMode: json['immersion_mode'] ?? ClassDefaultValues.languageToolPermissions, definitions: - json['definitions'] ?? ClassDefaultValues.languageToolPermissions, + json['definitions'] ?? ClassDefaultValues.languageToolPermissions, translations: - json['translations'] ?? ClassDefaultValues.languageToolPermissions, + json['translations'] ?? ClassDefaultValues.languageToolPermissions, ); Map toJson() { @@ -259,7 +252,6 @@ class PangeaRoomRules { data['is_voice_notes'] = isVoiceNotes; data['is_invite_only_students'] = isInviteOnlyStudents; data['interactive_translator'] = interactiveTranslator; - data['it_auto_play'] = itAutoPlay; data['interactive_grammar'] = interactiveGrammar; data['immersion_mode'] = immersionMode; data['definitions'] = definitions; @@ -271,8 +263,6 @@ class PangeaRoomRules { switch (setting) { case ToolSetting.interactiveTranslator: return interactiveTranslator; - case ToolSetting.itAutoPlay: - return itAutoPlay; case ToolSetting.interactiveGrammar: return interactiveGrammar; case ToolSetting.immersionMode: @@ -287,9 +277,9 @@ class PangeaRoomRules { } String languageToolPermissionsText( - BuildContext context, - ToolSetting setting, - ) { + BuildContext context, + ToolSetting setting, + ) { switch (getToolSettings(setting)) { case 0: return L10n.of(context)!.interactiveTranslatorNotAllowed; @@ -305,7 +295,6 @@ class PangeaRoomRules { enum ToolSetting { interactiveTranslator, - itAutoPlay, interactiveGrammar, immersionMode, definitions, @@ -317,8 +306,6 @@ extension SettingCopy on ToolSetting { switch (this) { case ToolSetting.interactiveTranslator: return L10n.of(context)!.interactiveTranslatorSliderHeader; - case ToolSetting.itAutoPlay: - return L10n.of(context)!.interactiveTranslatorAutoPlaySliderHeader; case ToolSetting.interactiveGrammar: return L10n.of(context)!.interactiveGrammarSliderHeader; case ToolSetting.immersionMode: @@ -337,8 +324,6 @@ extension SettingCopy on ToolSetting { return L10n.of(context)!.itToggleDescription; case ToolSetting.interactiveGrammar: return L10n.of(context)!.igcToggleDescription; - case ToolSetting.itAutoPlay: - return L10n.of(context)!.interactiveTranslatorAutoPlayDesc; case ToolSetting.immersionMode: return L10n.of(context)!.toggleImmersionModeDesc; case ToolSetting.definitions: diff --git a/lib/pangea/models/user_model.dart b/lib/pangea/models/user_model.dart index 396bcaccb..3721da95c 100644 --- a/lib/pangea/models/user_model.dart +++ b/lib/pangea/models/user_model.dart @@ -54,9 +54,9 @@ class PUserModel { enum MatrixProfile { dateOfBirth, autoPlayMessages, + itAutoPlay, activatedFreeTrial, interactiveTranslator, - itAutoPlay, interactiveGrammar, immersionMode, definitions, @@ -78,12 +78,12 @@ extension MatrixProfileExtension on MatrixProfile { return ModelKey.userDateOfBirth; case MatrixProfile.autoPlayMessages: return PLocalKey.autoPlayMessages; + case MatrixProfile.itAutoPlay: + return PLocalKey.itAutoPlay; case MatrixProfile.activatedFreeTrial: return PLocalKey.activatedTrialKey; case MatrixProfile.interactiveTranslator: return ToolSetting.interactiveTranslator.toString(); - case MatrixProfile.itAutoPlay: - return ToolSetting.itAutoPlay.toString(); case MatrixProfile.interactiveGrammar: return ToolSetting.interactiveGrammar.toString(); case MatrixProfile.immersionMode: diff --git a/lib/pangea/pages/settings_learning/settings_learning_view.dart b/lib/pangea/pages/settings_learning/settings_learning_view.dart index 6c3a87f00..207600497 100644 --- a/lib/pangea/pages/settings_learning/settings_learning_view.dart +++ b/lib/pangea/pages/settings_learning/settings_learning_view.dart @@ -61,6 +61,16 @@ class SettingsLearningView extends StatelessWidget { pStoreKey: setting.toString(), local: false, ), + PSettingsSwitchListTile.adaptive( + defaultValue: controller.pangeaController.pStoreService.read( + PLocalKey.itAutoPlay, + ) ?? + false, + title: L10n.of(context)!.interactiveTranslatorAutoPlaySliderHeader, + subtitle: L10n.of(context)!.interactiveTranslatorAutoPlayDesc, + pStoreKey: PLocalKey.itAutoPlay, + local: false, + ), PSettingsSwitchListTile.adaptive( defaultValue: controller.pangeaController.pStoreService.read( PLocalKey.autoPlayMessages, diff --git a/lib/pangea/widgets/igc/span_card.dart b/lib/pangea/widgets/igc/span_card.dart index 75738a687..1f31ea07f 100644 --- a/lib/pangea/widgets/igc/span_card.dart +++ b/lib/pangea/widgets/igc/span_card.dart @@ -1,6 +1,7 @@ import 'dart:developer'; import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/pangea/constants/local.key.dart'; import 'package:fluffychat/pangea/enum/span_data_type.dart'; import 'package:fluffychat/pangea/models/span_data.dart'; import 'package:fluffychat/pangea/utils/bot_style.dart'; @@ -15,7 +16,6 @@ import '../../../widgets/matrix.dart'; import '../../choreographer/widgets/choice_array.dart'; import '../../controllers/pangea_controller.dart'; import '../../enum/span_choice_type.dart'; -import '../../models/class_model.dart'; import '../../models/span_card_model.dart'; import '../common/bot_face_svg.dart'; import 'card_header.dart'; @@ -472,7 +472,7 @@ class DontShowSwitchListTileState extends State { value: switchValue, onChanged: (value) => { widget.controller.pStoreService.save( - ToolSetting.itAutoPlay.toString(), + PLocalKey.itAutoPlay.toString(), value, ), setState(() => switchValue = value),