diff --git a/lib/config/routes.dart b/lib/config/routes.dart index eecc155c1..0fb764142 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -37,12 +37,12 @@ import 'package:fluffychat/pangea/analytics_page/analytics_page.dart'; import 'package:fluffychat/pangea/analytics_summary/progress_indicators_enum.dart'; import 'package:fluffychat/pangea/chat_settings/pages/edit_course.dart'; import 'package:fluffychat/pangea/chat_settings/pages/pangea_invitation_selection.dart'; +import 'package:fluffychat/pangea/common/utils/p_vguard.dart'; import 'package:fluffychat/pangea/constructs/construct_identifier.dart'; import 'package:fluffychat/pangea/course_creation/course_invite_page.dart'; import 'package:fluffychat/pangea/course_creation/selected_course_page.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; -import 'package:fluffychat/pangea/find_your_people/find_your_people_constants.dart'; -import 'package:fluffychat/pangea/guard/p_vguard.dart'; +import 'package:fluffychat/pangea/join_codes/join_with_link_page.dart'; import 'package:fluffychat/pangea/learning_settings/settings_learning.dart'; import 'package:fluffychat/pangea/login/pages/add_course_page.dart'; import 'package:fluffychat/pangea/login/pages/course_code_page.dart'; @@ -54,7 +54,6 @@ import 'package:fluffychat/pangea/login/pages/public_courses_page.dart'; import 'package:fluffychat/pangea/login/pages/signup.dart'; import 'package:fluffychat/pangea/space_analytics/space_analytics.dart'; import 'package:fluffychat/pangea/spaces/space_constants.dart'; -import 'package:fluffychat/pangea/spaces/widgets/join_with_link_page.dart'; import 'package:fluffychat/pangea/subscription/pages/settings_subscription.dart'; import 'package:fluffychat/widgets/config_viewer.dart'; import 'package:fluffychat/widgets/layouts/empty_page.dart'; @@ -347,7 +346,7 @@ abstract class AppRoutes { child: CachedNetworkImage( width: 250.0, imageUrl: - "${AppConfig.assetsBaseURL}/${FindYourPeopleConstants.sideBearFileName}", + "${AppConfig.assetsBaseURL}/${SpaceConstants.sideBearFileName}", ), ) // Pangea# diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index e7ce126c7..50b8e797e 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -61,14 +61,14 @@ import 'package:fluffychat/pangea/languages/language_constants.dart'; import 'package:fluffychat/pangea/languages/language_service.dart'; import 'package:fluffychat/pangea/learning_settings/language_mismatch_repo.dart'; import 'package:fluffychat/pangea/learning_settings/p_language_dialog.dart'; -import 'package:fluffychat/pangea/message_token_text/tokens_util.dart'; -import 'package:fluffychat/pangea/spaces/widgets/load_participants_builder.dart'; +import 'package:fluffychat/pangea/spaces/load_participants_builder.dart'; import 'package:fluffychat/pangea/subscription/widgets/paywall_card.dart'; import 'package:fluffychat/pangea/token_info_feedback/token_info_feedback_dialog.dart'; import 'package:fluffychat/pangea/token_info_feedback/token_info_feedback_notification.dart'; import 'package:fluffychat/pangea/token_info_feedback/token_info_feedback_request.dart'; -import 'package:fluffychat/pangea/toolbar/enums/message_mode_enum.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_practice_mode_enum.dart'; +import 'package:fluffychat/pangea/toolbar/message_selection_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/tokens_util.dart'; import 'package:fluffychat/utils/error_reporter.dart'; import 'package:fluffychat/utils/file_selector.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/event_extension.dart'; @@ -1972,7 +1972,7 @@ class ChatController extends State Event event, { PangeaMessageEvent? pangeaMessageEvent, PangeaToken? selectedToken, - MessageMode? mode, + MessagePracticeMode? mode, Event? nextEvent, Event? prevEvent, }) { diff --git a/lib/pages/chat/events/audio_player.dart b/lib/pages/chat/events/audio_player.dart index 2a445d9d5..418dfc0f4 100644 --- a/lib/pages/chat/events/audio_player.dart +++ b/lib/pages/chat/events/audio_player.dart @@ -14,8 +14,8 @@ import 'package:path_provider/path_provider.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/themes.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_audio_card.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_audio_card.dart'; +import 'package:fluffychat/pangea/toolbar/message_selection_overlay.dart'; import 'package:fluffychat/utils/error_reporter.dart'; import 'package:fluffychat/utils/file_description.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; diff --git a/lib/pages/chat/events/html_message.dart b/lib/pages/chat/events/html_message.dart index 48a2fca5b..43497b0dc 100644 --- a/lib/pages/chat/events/html_message.dart +++ b/lib/pages/chat/events/html_message.dart @@ -13,12 +13,12 @@ import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/pages/chat/chat.dart'; import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_model.dart'; -import 'package:fluffychat/pangea/message_token_text/token_emoji_button.dart'; -import 'package:fluffychat/pangea/message_token_text/token_practice_button.dart'; -import 'package:fluffychat/pangea/message_token_text/tokens_util.dart'; -import 'package:fluffychat/pangea/toolbar/enums/reading_assistance_mode_enum.dart'; -import 'package:fluffychat/pangea/toolbar/utils/token_rendering_util.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/layout/reading_assistance_mode_enum.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/token_practice_button.dart'; +import 'package:fluffychat/pangea/toolbar/message_selection_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/token_emoji_button.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/token_rendering_util.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/tokens_util.dart'; import 'package:fluffychat/utils/event_checkbox_extension.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; diff --git a/lib/pages/chat/events/message_content.dart b/lib/pages/chat/events/message_content.dart index 7aa5794e4..814a37e57 100644 --- a/lib/pages/chat/events/message_content.dart +++ b/lib/pages/chat/events/message_content.dart @@ -11,8 +11,8 @@ import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dar import 'package:fluffychat/pangea/events/extensions/pangea_event_extension.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_model.dart'; import 'package:fluffychat/pangea/text_to_speech/tts_controller.dart'; -import 'package:fluffychat/pangea/toolbar/enums/reading_assistance_mode_enum.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/layout/reading_assistance_mode_enum.dart'; +import 'package:fluffychat/pangea/toolbar/message_selection_overlay.dart'; import 'package:fluffychat/utils/event_checkbox_extension.dart'; import '../../../config/app_config.dart'; import '../../../utils/platform_infos.dart'; diff --git a/lib/pages/chat/input_bar.dart b/lib/pages/chat/input_bar.dart index 0e5f2f4fa..e2a8cf3b8 100644 --- a/lib/pages/chat/input_bar.dart +++ b/lib/pages/chat/input_bar.dart @@ -13,9 +13,9 @@ import 'package:fluffychat/pangea/choreographer/choreographer.dart'; import 'package:fluffychat/pangea/choreographer/text_editing/edit_type_enum.dart'; import 'package:fluffychat/pangea/choreographer/text_editing/pangea_text_controller.dart'; import 'package:fluffychat/pangea/common/utils/overlay.dart'; +import 'package:fluffychat/pangea/common/widgets/shrinkable_text.dart'; import 'package:fluffychat/pangea/subscription/controllers/subscription_controller.dart'; import 'package:fluffychat/pangea/subscription/widgets/paywall_card.dart'; -import 'package:fluffychat/pangea/toolbar/utils/shrinkable_text.dart'; import 'package:fluffychat/utils/markdown_context_builder.dart'; import 'package:fluffychat/widgets/mxc_image.dart'; import '../../widgets/avatar.dart'; diff --git a/lib/pages/chat/recording_dialog.dart b/lib/pages/chat/recording_dialog.dart index 93ef79f1a..ae33c7735 100644 --- a/lib/pages/chat/recording_dialog.dart +++ b/lib/pages/chat/recording_dialog.dart @@ -12,7 +12,6 @@ import 'package:wakelock_plus/wakelock_plus.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/setting_keys.dart'; import 'package:fluffychat/l10n/l10n.dart'; -import 'package:fluffychat/pangea/toolbar/utils/update_version_dialog.dart'; import 'package:fluffychat/utils/platform_infos.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'events/audio_player.dart'; @@ -66,32 +65,19 @@ class RecordingDialogState extends State { } await WakelockPlus.enable(); - // #Pangea - final isNotError = await showUpdateVersionDialog( - future: () async => - // Pangea# - await _audioRecorder.start( - RecordConfig( - bitRate: AppSettings.audioRecordingBitRate.getItem(store), - sampleRate: AppSettings.audioRecordingSamplingRate.getItem(store), - numChannels: AppSettings.audioRecordingNumChannels.getItem(store), - autoGain: AppSettings.audioRecordingAutoGain.getItem(store), - echoCancel: AppSettings.audioRecordingEchoCancel.getItem(store), - noiseSuppress: - AppSettings.audioRecordingNoiseSuppress.getItem(store), - encoder: codec, - ), - path: path ?? '', + await _audioRecorder.start( + RecordConfig( + bitRate: AppSettings.audioRecordingBitRate.getItem(store), + sampleRate: AppSettings.audioRecordingSamplingRate.getItem(store), + numChannels: AppSettings.audioRecordingNumChannels.getItem(store), + autoGain: AppSettings.audioRecordingAutoGain.getItem(store), + echoCancel: AppSettings.audioRecordingEchoCancel.getItem(store), + noiseSuppress: AppSettings.audioRecordingNoiseSuppress.getItem(store), + encoder: codec, ), - // #Pangea - context: context, + path: path ?? '', ); - if (!isNotError) { - Navigator.of(context).pop(); - return; - } - // Pangea# setState(() => _duration = Duration.zero); _recorderSubscription?.cancel(); _recorderSubscription = diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 643151963..b9b8ddd9f 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -20,8 +20,8 @@ import 'package:fluffychat/pangea/chat_settings/constants/pangea_room_types.dart import 'package:fluffychat/pangea/chat_settings/widgets/chat_context_menu_action.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; -import 'package:fluffychat/pangea/spaces/space_code_controller.dart'; -import 'package:fluffychat/pangea/spaces/space_code_repo.dart'; +import 'package:fluffychat/pangea/join_codes/space_code_controller.dart'; +import 'package:fluffychat/pangea/join_codes/space_code_repo.dart'; import 'package:fluffychat/pangea/subscription/widgets/subscription_snackbar.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart index e737655bf..55094500f 100644 --- a/lib/pages/login/login.dart +++ b/lib/pages/login/login.dart @@ -4,10 +4,10 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pangea/authentication/p_login.dart'; import 'package:fluffychat/pangea/login/pages/login_options_view.dart'; import 'package:fluffychat/pangea/login/pages/pangea_login_view.dart'; import 'package:fluffychat/pangea/login/widgets/p_sso_button.dart'; -import 'package:fluffychat/pangea/user/p_login.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; diff --git a/lib/pages/new_group/new_group.dart b/lib/pages/new_group/new_group.dart index d2dace989..b30d78046 100644 --- a/lib/pages/new_group/new_group.dart +++ b/lib/pages/new_group/new_group.dart @@ -13,7 +13,7 @@ import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/common/utils/firebase_analytics.dart'; import 'package:fluffychat/pangea/extensions/join_rule_extension.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; -import 'package:fluffychat/pangea/spaces/utils/client_spaces_extension.dart'; +import 'package:fluffychat/pangea/spaces/client_spaces_extension.dart'; import 'package:fluffychat/utils/file_selector.dart'; import 'package:fluffychat/widgets/matrix.dart'; diff --git a/lib/pages/settings/settings.dart b/lib/pages/settings/settings.dart index e6da2c762..2928126f6 100644 --- a/lib/pages/settings/settings.dart +++ b/lib/pages/settings/settings.dart @@ -5,7 +5,7 @@ import 'package:image_picker/image_picker.dart'; import 'package:matrix/matrix.dart'; import 'package:fluffychat/l10n/l10n.dart'; -import 'package:fluffychat/pangea/user/p_logout.dart'; +import 'package:fluffychat/pangea/authentication/p_logout.dart'; import 'package:fluffychat/utils/file_selector.dart'; import 'package:fluffychat/utils/platform_infos.dart'; import 'package:fluffychat/widgets/adaptive_dialogs/show_modal_action_popup.dart'; diff --git a/lib/pangea/activity_sessions/activity_participant_list.dart b/lib/pangea/activity_sessions/activity_participant_list.dart index d983e7104..cae1390b3 100644 --- a/lib/pangea/activity_sessions/activity_participant_list.dart +++ b/lib/pangea/activity_sessions/activity_participant_list.dart @@ -6,7 +6,7 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/pangea/activity_planner/activity_plan_model.dart'; import 'package:fluffychat/pangea/activity_sessions/activity_participant_indicator.dart'; import 'package:fluffychat/pangea/activity_sessions/activity_role_model.dart'; -import 'package:fluffychat/pangea/spaces/widgets/load_participants_builder.dart'; +import 'package:fluffychat/pangea/spaces/load_participants_builder.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/member_actions_popup_menu_button.dart'; diff --git a/lib/pangea/activity_sessions/activity_session_chat/activity_vocab_widget.dart b/lib/pangea/activity_sessions/activity_session_chat/activity_vocab_widget.dart index 5a3278112..088093ae9 100644 --- a/lib/pangea/activity_sessions/activity_session_chat/activity_vocab_widget.dart +++ b/lib/pangea/activity_sessions/activity_session_chat/activity_vocab_widget.dart @@ -6,7 +6,7 @@ import 'package:fluffychat/pangea/analytics_misc/construct_type_enum.dart'; import 'package:fluffychat/pangea/common/utils/overlay.dart'; import 'package:fluffychat/pangea/constructs/construct_identifier.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_text_model.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/word_zoom/word_zoom_widget.dart'; +import 'package:fluffychat/pangea/toolbar/word_card/word_zoom_widget.dart'; import 'package:fluffychat/widgets/matrix.dart'; class ActivityVocabWidget extends StatelessWidget { diff --git a/lib/pangea/analytics_details_popup/vocab_analytics_details_view.dart b/lib/pangea/analytics_details_popup/vocab_analytics_details_view.dart index 0f8b289c5..bb7486149 100644 --- a/lib/pangea/analytics_details_popup/vocab_analytics_details_view.dart +++ b/lib/pangea/analytics_details_popup/vocab_analytics_details_view.dart @@ -4,18 +4,18 @@ import 'package:collection/collection.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/analytics_details_popup/analytics_details_popup_content.dart'; +import 'package:fluffychat/pangea/analytics_details_popup/word_text_with_audio_button.dart'; import 'package:fluffychat/pangea/analytics_misc/construct_use_model.dart'; +import 'package:fluffychat/pangea/common/widgets/shrinkable_text.dart'; import 'package:fluffychat/pangea/constructs/construct_identifier.dart'; import 'package:fluffychat/pangea/constructs/construct_level_enum.dart'; import 'package:fluffychat/pangea/lemmas/lemma_highlight_emoji_row.dart'; +import 'package:fluffychat/pangea/lemmas/lemma_meaning_builder.dart'; +import 'package:fluffychat/pangea/lemmas/lemma_meaning_widget.dart'; import 'package:fluffychat/pangea/morphs/get_grammar_copy.dart'; import 'package:fluffychat/pangea/morphs/morph_features_enum.dart'; import 'package:fluffychat/pangea/morphs/morph_icon.dart'; import 'package:fluffychat/pangea/phonetic_transcription/phonetic_transcription_widget.dart'; -import 'package:fluffychat/pangea/toolbar/utils/shrinkable_text.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/practice_activity/word_text_with_audio_button.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/word_zoom/lemma_meaning_builder.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/word_zoom/lemma_meaning_widget.dart'; import 'package:fluffychat/widgets/matrix.dart'; /// Displays information about selected lemma, and its usage diff --git a/lib/pangea/analytics_details_popup/vocab_analytics_list_tile.dart b/lib/pangea/analytics_details_popup/vocab_analytics_list_tile.dart index c5a11e1fe..c24e4b496 100644 --- a/lib/pangea/analytics_details_popup/vocab_analytics_list_tile.dart +++ b/lib/pangea/analytics_details_popup/vocab_analytics_list_tile.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/pangea/analytics_misc/construct_use_model.dart'; +import 'package:fluffychat/pangea/common/widgets/shrinkable_text.dart'; import 'package:fluffychat/pangea/constructs/construct_level_enum.dart'; -import 'package:fluffychat/pangea/toolbar/utils/shrinkable_text.dart'; class VocabAnalyticsListTile extends StatefulWidget { const VocabAnalyticsListTile({ diff --git a/lib/pangea/toolbar/widgets/practice_activity/word_text_with_audio_button.dart b/lib/pangea/analytics_details_popup/word_text_with_audio_button.dart similarity index 91% rename from lib/pangea/toolbar/widgets/practice_activity/word_text_with_audio_button.dart rename to lib/pangea/analytics_details_popup/word_text_with_audio_button.dart index 9297d3b3a..a2224cb66 100644 --- a/lib/pangea/toolbar/widgets/practice_activity/word_text_with_audio_button.dart +++ b/lib/pangea/analytics_details_popup/word_text_with_audio_button.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/practice_activity/word_audio_button.dart'; +import 'package:fluffychat/pangea/common/widgets/word_audio_button.dart'; class WordTextWithAudioButton extends StatelessWidget { final String text; diff --git a/lib/pangea/user/p_login.dart b/lib/pangea/authentication/p_login.dart similarity index 100% rename from lib/pangea/user/p_login.dart rename to lib/pangea/authentication/p_login.dart diff --git a/lib/pangea/user/p_logout.dart b/lib/pangea/authentication/p_logout.dart similarity index 100% rename from lib/pangea/user/p_logout.dart rename to lib/pangea/authentication/p_logout.dart diff --git a/lib/pangea/chat/utils/unlocked_morphs_snackbar.dart b/lib/pangea/chat/utils/unlocked_morphs_snackbar.dart index 193b84799..68b0bb22b 100644 --- a/lib/pangea/chat/utils/unlocked_morphs_snackbar.dart +++ b/lib/pangea/chat/utils/unlocked_morphs_snackbar.dart @@ -10,12 +10,12 @@ import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/analytics_misc/construct_type_enum.dart'; +import 'package:fluffychat/pangea/chat/widgets/icon_rain.dart'; import 'package:fluffychat/pangea/common/utils/overlay.dart'; import 'package:fluffychat/pangea/constructs/construct_identifier.dart'; import 'package:fluffychat/pangea/morphs/get_grammar_copy.dart'; import 'package:fluffychat/pangea/morphs/morph_features_enum.dart'; import 'package:fluffychat/pangea/morphs/morph_icon.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/icon_rain.dart'; import 'package:fluffychat/widgets/matrix.dart'; class ConstructNotificationUtil { diff --git a/lib/pangea/toolbar/widgets/icon_rain.dart b/lib/pangea/chat/widgets/icon_rain.dart similarity index 100% rename from lib/pangea/toolbar/widgets/icon_rain.dart rename to lib/pangea/chat/widgets/icon_rain.dart diff --git a/lib/pangea/chat_list/utils/chat_list_handle_space_tap.dart b/lib/pangea/chat_list/utils/chat_list_handle_space_tap.dart index a722356b2..aad62e677 100644 --- a/lib/pangea/chat_list/utils/chat_list_handle_space_tap.dart +++ b/lib/pangea/chat_list/utils/chat_list_handle_space_tap.dart @@ -5,7 +5,7 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; -import 'package:fluffychat/pangea/spaces/space_code_repo.dart'; +import 'package:fluffychat/pangea/join_codes/space_code_repo.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; diff --git a/lib/pangea/public_spaces/public_room_bottom_sheet.dart b/lib/pangea/chat_list/widgets/public_room_bottom_sheet.dart similarity index 99% rename from lib/pangea/public_spaces/public_room_bottom_sheet.dart rename to lib/pangea/chat_list/widgets/public_room_bottom_sheet.dart index 7fcbd7219..686a22432 100644 --- a/lib/pangea/public_spaces/public_room_bottom_sheet.dart +++ b/lib/pangea/chat_list/widgets/public_room_bottom_sheet.dart @@ -7,7 +7,7 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/extensions/pangea_rooms_chunk_extension.dart'; -import 'package:fluffychat/pangea/spaces/space_code_controller.dart'; +import 'package:fluffychat/pangea/join_codes/space_code_controller.dart'; import 'package:fluffychat/utils/adaptive_bottom_sheet.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; diff --git a/lib/pangea/chat_settings/pages/room_participants_widget.dart b/lib/pangea/chat_settings/pages/room_participants_widget.dart index 06e3aa848..a95640afd 100644 --- a/lib/pangea/chat_settings/pages/room_participants_widget.dart +++ b/lib/pangea/chat_settings/pages/room_participants_widget.dart @@ -8,7 +8,7 @@ import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/analytics_misc/level_display_name.dart'; import 'package:fluffychat/pangea/bot/utils/bot_name.dart'; -import 'package:fluffychat/pangea/spaces/widgets/load_participants_builder.dart'; +import 'package:fluffychat/pangea/spaces/load_participants_builder.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/hover_builder.dart'; import 'package:fluffychat/widgets/member_actions_popup_menu_button.dart'; diff --git a/lib/pangea/choreographer/it/word_data_card.dart b/lib/pangea/choreographer/it/word_data_card.dart index 7f3802e08..ae8c1ab57 100644 --- a/lib/pangea/choreographer/it/word_data_card.dart +++ b/lib/pangea/choreographer/it/word_data_card.dart @@ -6,8 +6,8 @@ import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/bot/utils/bot_style.dart'; import 'package:fluffychat/pangea/choreographer/it/contextual_definition_repo.dart'; import 'package:fluffychat/pangea/choreographer/it/contextual_definition_request_model.dart'; +import 'package:fluffychat/pangea/common/widgets/content_loading_indicator.dart'; import 'package:fluffychat/pangea/languages/language_constants.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/toolbar_content_loading_indicator.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; import 'package:fluffychat/widgets/matrix.dart'; @@ -50,7 +50,7 @@ class WordDataCard extends StatelessWidget { future: _fetchDefinition(), builder: (context, snapshot) { if (!snapshot.hasData) { - return const ToolbarContentLoadingIndicator(); + return const ContentLoadingIndicator(); } final result = snapshot.data!; if (result.isError) { diff --git a/lib/pangea/common/controllers/pangea_controller.dart b/lib/pangea/common/controllers/pangea_controller.dart index 010942840..d1276f444 100644 --- a/lib/pangea/common/controllers/pangea_controller.dart +++ b/lib/pangea/common/controllers/pangea_controller.dart @@ -13,7 +13,7 @@ import 'package:fluffychat/config/setting_keys.dart'; import 'package:fluffychat/pangea/analytics_misc/get_analytics_controller.dart'; import 'package:fluffychat/pangea/analytics_misc/put_analytics_controller.dart'; import 'package:fluffychat/pangea/chat_settings/utils/bot_client_extension.dart'; -import 'package:fluffychat/pangea/guard/p_vguard.dart'; +import 'package:fluffychat/pangea/common/utils/p_vguard.dart'; import 'package:fluffychat/pangea/languages/locale_provider.dart'; import 'package:fluffychat/pangea/languages/p_language_store.dart'; import 'package:fluffychat/pangea/subscription/controllers/subscription_controller.dart'; diff --git a/lib/pangea/guard/p_vguard.dart b/lib/pangea/common/utils/p_vguard.dart similarity index 97% rename from lib/pangea/guard/p_vguard.dart rename to lib/pangea/common/utils/p_vguard.dart index 42ec76e87..c977618c1 100644 --- a/lib/pangea/guard/p_vguard.dart +++ b/lib/pangea/common/utils/p_vguard.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:fluffychat/widgets/matrix.dart'; -import '../common/controllers/pangea_controller.dart'; +import '../controllers/pangea_controller.dart'; class PAuthGaurd { static bool isPublicLeaving = false; diff --git a/lib/pangea/toolbar/widgets/toolbar_content_loading_indicator.dart b/lib/pangea/common/widgets/content_loading_indicator.dart similarity index 85% rename from lib/pangea/toolbar/widgets/toolbar_content_loading_indicator.dart rename to lib/pangea/common/widgets/content_loading_indicator.dart index c1118a179..15655d9ee 100644 --- a/lib/pangea/toolbar/widgets/toolbar_content_loading_indicator.dart +++ b/lib/pangea/common/widgets/content_loading_indicator.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:fluffychat/config/app_config.dart'; -class ToolbarContentLoadingIndicator extends StatelessWidget { - const ToolbarContentLoadingIndicator({ +class ContentLoadingIndicator extends StatelessWidget { + const ContentLoadingIndicator({ super.key, this.height, }); diff --git a/lib/pangea/toolbar/utils/shrinkable_text.dart b/lib/pangea/common/widgets/shrinkable_text.dart similarity index 100% rename from lib/pangea/toolbar/utils/shrinkable_text.dart rename to lib/pangea/common/widgets/shrinkable_text.dart diff --git a/lib/pangea/toolbar/widgets/practice_activity/word_audio_button.dart b/lib/pangea/common/widgets/word_audio_button.dart similarity index 100% rename from lib/pangea/toolbar/widgets/practice_activity/word_audio_button.dart rename to lib/pangea/common/widgets/word_audio_button.dart diff --git a/lib/pangea/course_chats/course_chats_page.dart b/lib/pangea/course_chats/course_chats_page.dart index e909fc1c1..b3de44e39 100644 --- a/lib/pangea/course_chats/course_chats_page.dart +++ b/lib/pangea/course_chats/course_chats_page.dart @@ -11,6 +11,7 @@ import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pages/chat_list/chat_list.dart'; import 'package:fluffychat/pangea/activity_planner/activity_plan_model.dart'; import 'package:fluffychat/pangea/activity_sessions/activity_room_extension.dart'; +import 'package:fluffychat/pangea/chat_list/widgets/public_room_bottom_sheet.dart'; import 'package:fluffychat/pangea/chat_settings/constants/pangea_room_types.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/course_chats/course_chats_view.dart'; @@ -20,7 +21,6 @@ import 'package:fluffychat/pangea/course_plans/course_activities/activity_summar import 'package:fluffychat/pangea/course_plans/courses/course_plan_builder.dart'; import 'package:fluffychat/pangea/course_plans/courses/course_plan_room_extension.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; -import 'package:fluffychat/pangea/public_spaces/public_room_bottom_sheet.dart'; import 'package:fluffychat/pangea/spaces/space_constants.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; diff --git a/lib/pangea/course_chats/course_chats_view.dart b/lib/pangea/course_chats/course_chats_view.dart index bdeb19275..8936cc03c 100644 --- a/lib/pangea/course_chats/course_chats_view.dart +++ b/lib/pangea/course_chats/course_chats_view.dart @@ -16,7 +16,7 @@ import 'package:fluffychat/pangea/course_chats/course_chats_page.dart'; import 'package:fluffychat/pangea/course_chats/course_default_chats_enum.dart'; import 'package:fluffychat/pangea/course_chats/unjoined_chat_list_item.dart'; import 'package:fluffychat/pangea/space_analytics/analytics_request_indicator.dart'; -import 'package:fluffychat/pangea/spaces/widgets/knocking_users_indicator.dart'; +import 'package:fluffychat/pangea/spaces/knocking_users_indicator.dart'; import 'package:fluffychat/utils/stream_extension.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; diff --git a/lib/pangea/course_creation/selected_course_page.dart b/lib/pangea/course_creation/selected_course_page.dart index 54fd2eca4..9e658f029 100644 --- a/lib/pangea/course_creation/selected_course_page.dart +++ b/lib/pangea/course_creation/selected_course_page.dart @@ -12,7 +12,7 @@ import 'package:fluffychat/pangea/course_plans/courses/course_plan_builder.dart' import 'package:fluffychat/pangea/course_plans/courses/course_plan_model.dart'; import 'package:fluffychat/pangea/course_plans/courses/course_plan_room_extension.dart'; import 'package:fluffychat/pangea/events/constants/pangea_event_types.dart'; -import 'package:fluffychat/pangea/spaces/utils/client_spaces_extension.dart'; +import 'package:fluffychat/pangea/spaces/client_spaces_extension.dart'; import 'package:fluffychat/widgets/matrix.dart'; enum SelectedCourseMode { launch, addToSpace, join } diff --git a/lib/pangea/course_settings/topic_participant_list.dart b/lib/pangea/course_settings/topic_participant_list.dart index 1490946ac..e0bee5c2a 100644 --- a/lib/pangea/course_settings/topic_participant_list.dart +++ b/lib/pangea/course_settings/topic_participant_list.dart @@ -6,7 +6,7 @@ import 'package:collection/collection.dart'; import 'package:matrix/matrix.dart'; import 'package:fluffychat/l10n/l10n.dart'; -import 'package:fluffychat/pangea/spaces/widgets/load_participants_builder.dart'; +import 'package:fluffychat/pangea/spaces/load_participants_builder.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/member_actions_popup_menu_button.dart'; diff --git a/lib/pangea/emojis/emoji_stack.dart b/lib/pangea/emojis/emoji_stack.dart deleted file mode 100644 index 962229f4b..000000000 --- a/lib/pangea/emojis/emoji_stack.dart +++ /dev/null @@ -1,36 +0,0 @@ -import 'package:flutter/material.dart'; - -class EmojiStack extends StatelessWidget { - const EmojiStack({ - super.key, - required List emoji, - this.style, - }) : _emoji = emoji; - - final List _emoji; - final TextStyle? style; - - @override - Widget build(BuildContext context) { - // return Text( - // _emoji.first, - // style: style, - // ); - return Text( - _emoji.join(''), - style: style, - ); - // return Stack( - // children: [ - // for (final emoji in _emoji) - // Positioned( - // left: _emoji.indexOf(emoji) * style!.fontSize! * 0.5, - // child: Text( - // emoji, - // style: style, - // ), - // ), - // ], - // ); - } -} diff --git a/lib/pangea/events/event_wrappers/pangea_message_event.dart b/lib/pangea/events/event_wrappers/pangea_message_event.dart index aea9115c4..95cbf50c1 100644 --- a/lib/pangea/events/event_wrappers/pangea_message_event.dart +++ b/lib/pangea/events/event_wrappers/pangea_message_event.dart @@ -26,7 +26,7 @@ import 'package:fluffychat/pangea/speech_to_text/speech_to_text_response_model.d import 'package:fluffychat/pangea/text_to_speech/text_to_speech_repo.dart'; import 'package:fluffychat/pangea/text_to_speech/text_to_speech_request_model.dart'; import 'package:fluffychat/pangea/text_to_speech/text_to_speech_response_model.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_audio_card.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_audio_card.dart'; import 'package:fluffychat/pangea/translation/full_text_translation_repo.dart'; import 'package:fluffychat/pangea/translation/full_text_translation_request_model.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; diff --git a/lib/pangea/events/extensions/pangea_event_extension.dart b/lib/pangea/events/extensions/pangea_event_extension.dart index 8d18c5ec5..4609a3ef0 100644 --- a/lib/pangea/events/extensions/pangea_event_extension.dart +++ b/lib/pangea/events/extensions/pangea_event_extension.dart @@ -12,7 +12,7 @@ import 'package:fluffychat/pangea/events/models/representation_content_model.dar import 'package:fluffychat/pangea/events/models/tokens_event_content_model.dart'; import 'package:fluffychat/pangea/practice_activities/practice_activity_model.dart'; import 'package:fluffychat/pangea/text_to_speech/text_to_speech_response_model.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_audio_card.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_audio_card.dart'; extension PangeaEvent on Event { V getPangeaContent() { diff --git a/lib/pangea/events/models/pangea_token_model.dart b/lib/pangea/events/models/pangea_token_model.dart index b03d2f550..05387e842 100644 --- a/lib/pangea/events/models/pangea_token_model.dart +++ b/lib/pangea/events/models/pangea_token_model.dart @@ -14,7 +14,7 @@ import 'package:fluffychat/pangea/events/models/pangea_token_text_model.dart'; import 'package:fluffychat/pangea/morphs/morph_features_enum.dart'; import 'package:fluffychat/pangea/morphs/morph_repo.dart'; import 'package:fluffychat/pangea/practice_activities/activity_type_enum.dart'; -import 'package:fluffychat/pangea/toolbar/reading_assistance_input_row/message_morph_choice.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_morph_choice.dart'; import 'package:fluffychat/widgets/matrix.dart'; import '../../common/constants/model_keys.dart'; import '../../lemmas/lemma.dart'; diff --git a/lib/pangea/extensions/join_rule_extension.dart b/lib/pangea/extensions/join_rule_extension.dart index 97981f6d6..ede8eef50 100644 --- a/lib/pangea/extensions/join_rule_extension.dart +++ b/lib/pangea/extensions/join_rule_extension.dart @@ -2,7 +2,7 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/pangea/common/constants/model_keys.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; -import 'package:fluffychat/pangea/spaces/utils/space_code_extension.dart'; +import 'package:fluffychat/pangea/join_codes/space_code_extension.dart'; extension JoinRuleExtension on Client { Future pangeaJoinRules( diff --git a/lib/pangea/find_your_people/find_your_people_constants.dart b/lib/pangea/find_your_people/find_your_people_constants.dart deleted file mode 100644 index 04cf879ff..000000000 --- a/lib/pangea/find_your_people/find_your_people_constants.dart +++ /dev/null @@ -1,3 +0,0 @@ -class FindYourPeopleConstants { - static const String sideBearFileName = "Bear_Find_your_people.png"; -} diff --git a/lib/pangea/spaces/widgets/join_with_link_page.dart b/lib/pangea/join_codes/join_with_link_page.dart similarity index 94% rename from lib/pangea/spaces/widgets/join_with_link_page.dart rename to lib/pangea/join_codes/join_with_link_page.dart index 89d3a3ac9..ddf28debb 100644 --- a/lib/pangea/spaces/widgets/join_with_link_page.dart +++ b/lib/pangea/join_codes/join_with_link_page.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; -import 'package:fluffychat/pangea/spaces/space_code_repo.dart'; +import 'package:fluffychat/pangea/join_codes/space_code_repo.dart'; //if on home with classcode in url and not logged in, then save it soemhow and after llogin, join class automatically //if on home with classcode in url and logged in, then join class automatically diff --git a/lib/pangea/spaces/utils/knock_space_extension.dart b/lib/pangea/join_codes/knock_space_extension.dart similarity index 100% rename from lib/pangea/spaces/utils/knock_space_extension.dart rename to lib/pangea/join_codes/knock_space_extension.dart diff --git a/lib/pangea/spaces/space_code_controller.dart b/lib/pangea/join_codes/space_code_controller.dart similarity index 95% rename from lib/pangea/spaces/space_code_controller.dart rename to lib/pangea/join_codes/space_code_controller.dart index 7fce10adb..1606f2792 100644 --- a/lib/pangea/spaces/space_code_controller.dart +++ b/lib/pangea/join_codes/space_code_controller.dart @@ -10,10 +10,10 @@ import 'package:http/http.dart' hide Client; import 'package:matrix/matrix.dart'; import 'package:fluffychat/l10n/l10n.dart'; -import 'package:fluffychat/pangea/spaces/space_code_repo.dart'; +import 'package:fluffychat/pangea/join_codes/knock_space_extension.dart'; +import 'package:fluffychat/pangea/join_codes/space_code_repo.dart'; +import 'package:fluffychat/pangea/join_codes/too_many_requests_dialog.dart'; import 'package:fluffychat/pangea/spaces/space_constants.dart'; -import 'package:fluffychat/pangea/spaces/utils/knock_space_extension.dart'; -import 'package:fluffychat/pangea/spaces/widgets/too_many_requests_dialog.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; import 'package:fluffychat/widgets/matrix.dart'; import '../common/controllers/base_controller.dart'; diff --git a/lib/pangea/spaces/utils/space_code_extension.dart b/lib/pangea/join_codes/space_code_extension.dart similarity index 100% rename from lib/pangea/spaces/utils/space_code_extension.dart rename to lib/pangea/join_codes/space_code_extension.dart diff --git a/lib/pangea/spaces/space_code_repo.dart b/lib/pangea/join_codes/space_code_repo.dart similarity index 100% rename from lib/pangea/spaces/space_code_repo.dart rename to lib/pangea/join_codes/space_code_repo.dart diff --git a/lib/pangea/spaces/widgets/too_many_requests_dialog.dart b/lib/pangea/join_codes/too_many_requests_dialog.dart similarity index 100% rename from lib/pangea/spaces/widgets/too_many_requests_dialog.dart rename to lib/pangea/join_codes/too_many_requests_dialog.dart diff --git a/lib/pangea/lemmas/lemma_highlight_emoji_row.dart b/lib/pangea/lemmas/lemma_highlight_emoji_row.dart index d1a5dc8bb..142a37753 100644 --- a/lib/pangea/lemmas/lemma_highlight_emoji_row.dart +++ b/lib/pangea/lemmas/lemma_highlight_emoji_row.dart @@ -12,7 +12,7 @@ import 'package:fluffychat/pangea/analytics_misc/lemma_emoji_setter_mixin.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/common/utils/overlay.dart'; import 'package:fluffychat/pangea/constructs/construct_identifier.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/word_zoom/lemma_meaning_builder.dart'; +import 'package:fluffychat/pangea/lemmas/lemma_meaning_builder.dart'; import 'package:fluffychat/widgets/matrix.dart'; class LemmaHighlightEmojiRow extends StatefulWidget { diff --git a/lib/pangea/toolbar/widgets/word_zoom/lemma_meaning_builder.dart b/lib/pangea/lemmas/lemma_meaning_builder.dart similarity index 100% rename from lib/pangea/toolbar/widgets/word_zoom/lemma_meaning_builder.dart rename to lib/pangea/lemmas/lemma_meaning_builder.dart diff --git a/lib/pangea/toolbar/widgets/word_zoom/lemma_meaning_widget.dart b/lib/pangea/lemmas/lemma_meaning_widget.dart similarity index 95% rename from lib/pangea/toolbar/widgets/word_zoom/lemma_meaning_widget.dart rename to lib/pangea/lemmas/lemma_meaning_widget.dart index 67c440508..29edac24e 100644 --- a/lib/pangea/toolbar/widgets/word_zoom/lemma_meaning_widget.dart +++ b/lib/pangea/lemmas/lemma_meaning_widget.dart @@ -5,7 +5,7 @@ import 'package:fluffychat/pangea/analytics_misc/construct_use_model.dart'; import 'package:fluffychat/pangea/analytics_misc/text_loading_shimmer.dart'; import 'package:fluffychat/pangea/common/network/requests.dart'; import 'package:fluffychat/pangea/common/widgets/error_indicator.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/word_zoom/lemma_meaning_builder.dart'; +import 'package:fluffychat/pangea/lemmas/lemma_meaning_builder.dart'; import 'package:fluffychat/widgets/matrix.dart'; class LemmaMeaningWidget extends StatelessWidget { diff --git a/lib/pangea/login/pages/course_code_page.dart b/lib/pangea/login/pages/course_code_page.dart index 5052747e3..6d3cd55ce 100644 --- a/lib/pangea/login/pages/course_code_page.dart +++ b/lib/pangea/login/pages/course_code_page.dart @@ -5,8 +5,8 @@ import 'package:go_router/go_router.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pangea/join_codes/space_code_controller.dart'; import 'package:fluffychat/pangea/login/pages/add_course_page.dart'; -import 'package:fluffychat/pangea/spaces/space_code_controller.dart'; import 'package:fluffychat/widgets/matrix.dart'; class CourseCodePage extends StatefulWidget { diff --git a/lib/pangea/login/pages/create_pangea_account_page.dart b/lib/pangea/login/pages/create_pangea_account_page.dart index 599866b76..6565912ef 100644 --- a/lib/pangea/login/pages/create_pangea_account_page.dart +++ b/lib/pangea/login/pages/create_pangea_account_page.dart @@ -13,11 +13,11 @@ import 'package:fluffychat/pangea/common/widgets/error_indicator.dart'; import 'package:fluffychat/pangea/course_plans/courses/course_plan_room_extension.dart'; import 'package:fluffychat/pangea/course_plans/courses/course_plans_repo.dart'; import 'package:fluffychat/pangea/course_plans/courses/get_localized_courses_request.dart'; +import 'package:fluffychat/pangea/join_codes/space_code_controller.dart'; +import 'package:fluffychat/pangea/join_codes/space_code_repo.dart'; import 'package:fluffychat/pangea/languages/language_service.dart'; import 'package:fluffychat/pangea/languages/p_language_store.dart'; import 'package:fluffychat/pangea/login/utils/lang_code_repo.dart'; -import 'package:fluffychat/pangea/spaces/space_code_controller.dart'; -import 'package:fluffychat/pangea/spaces/space_code_repo.dart'; import 'package:fluffychat/widgets/matrix.dart'; class CreatePangeaAccountPage extends StatefulWidget { diff --git a/lib/pangea/login/pages/login_or_signup_view.dart b/lib/pangea/login/pages/login_or_signup_view.dart index 7482f55b5..b0b8086c4 100644 --- a/lib/pangea/login/pages/login_or_signup_view.dart +++ b/lib/pangea/login/pages/login_or_signup_view.dart @@ -6,8 +6,8 @@ import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/common/config/environment.dart'; import 'package:fluffychat/pangea/common/widgets/pangea_logo_svg.dart'; +import 'package:fluffychat/pangea/join_codes/space_code_repo.dart'; import 'package:fluffychat/pangea/login/widgets/app_config_dialog.dart'; -import 'package:fluffychat/pangea/spaces/space_code_repo.dart'; class LoginOrSignupView extends StatefulWidget { const LoginOrSignupView({super.key}); diff --git a/lib/pangea/login/pages/public_courses_page.dart b/lib/pangea/login/pages/public_courses_page.dart index d56ec291b..db782fcf4 100644 --- a/lib/pangea/login/pages/public_courses_page.dart +++ b/lib/pangea/login/pages/public_courses_page.dart @@ -13,7 +13,7 @@ import 'package:fluffychat/pangea/course_plans/courses/course_plan_model.dart'; import 'package:fluffychat/pangea/course_plans/courses/course_plans_repo.dart'; import 'package:fluffychat/pangea/course_plans/courses/get_localized_courses_request.dart'; import 'package:fluffychat/pangea/languages/language_model.dart'; -import 'package:fluffychat/pangea/spaces/utils/public_course_extension.dart'; +import 'package:fluffychat/pangea/spaces/public_course_extension.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/matrix.dart'; diff --git a/lib/pangea/message_token_text/hidden_text.dart b/lib/pangea/message_token_text/hidden_text.dart deleted file mode 100644 index 7ac6415e3..000000000 --- a/lib/pangea/message_token_text/hidden_text.dart +++ /dev/null @@ -1,46 +0,0 @@ -import 'package:flutter/material.dart'; - -class HiddenText extends StatelessWidget { - final String text; - final TextStyle style; - - const HiddenText({ - super.key, - required this.text, - required this.style, - }); - - @override - Widget build(BuildContext context) { - final TextPainter textPainter = TextPainter( - text: TextSpan(text: text, style: style), - textDirection: TextDirection.ltr, - )..layout(); - - final textWidth = textPainter.size.width; - final textHeight = textPainter.size.height; - - textPainter.dispose(); - - return SizedBox( - height: textHeight, - child: Stack( - children: [ - Container( - width: textWidth, - height: textHeight, - color: Colors.transparent, - ), - Positioned( - bottom: 0, - child: Container( - width: textWidth, - height: 1, - color: style.color, - ), - ), - ], - ), - ); - } -} diff --git a/lib/pangea/spaces/utils/client_spaces_extension.dart b/lib/pangea/spaces/client_spaces_extension.dart similarity index 100% rename from lib/pangea/spaces/utils/client_spaces_extension.dart rename to lib/pangea/spaces/client_spaces_extension.dart diff --git a/lib/pangea/spaces/widgets/knocking_users_indicator.dart b/lib/pangea/spaces/knocking_users_indicator.dart similarity index 100% rename from lib/pangea/spaces/widgets/knocking_users_indicator.dart rename to lib/pangea/spaces/knocking_users_indicator.dart diff --git a/lib/pangea/spaces/widgets/load_participants_builder.dart b/lib/pangea/spaces/load_participants_builder.dart similarity index 100% rename from lib/pangea/spaces/widgets/load_participants_builder.dart rename to lib/pangea/spaces/load_participants_builder.dart diff --git a/lib/pangea/spaces/utils/public_course_extension.dart b/lib/pangea/spaces/public_course_extension.dart similarity index 100% rename from lib/pangea/spaces/utils/public_course_extension.dart rename to lib/pangea/spaces/public_course_extension.dart diff --git a/lib/pangea/spaces/space_constants.dart b/lib/pangea/spaces/space_constants.dart index 5dde4e2e2..f6315356f 100644 --- a/lib/pangea/spaces/space_constants.dart +++ b/lib/pangea/spaces/space_constants.dart @@ -26,4 +26,6 @@ class SpaceConstants { '${AppConfig.assetsBaseURL}/Space+template+5.png', '${AppConfig.assetsBaseURL}/Space+template+6.png', ]; + + static const String sideBearFileName = "Bear_Find_your_people.png"; } diff --git a/lib/pangea/token_info_feedback/token_info_feedback_dialog.dart b/lib/pangea/token_info_feedback/token_info_feedback_dialog.dart index 3a4c480a0..0660185bf 100644 --- a/lib/pangea/token_info_feedback/token_info_feedback_dialog.dart +++ b/lib/pangea/token_info_feedback/token_info_feedback_dialog.dart @@ -16,7 +16,7 @@ import 'package:fluffychat/pangea/phonetic_transcription/phonetic_transcription_ import 'package:fluffychat/pangea/token_info_feedback/token_info_feedback_repo.dart'; import 'package:fluffychat/pangea/token_info_feedback/token_info_feedback_request.dart'; import 'package:fluffychat/pangea/token_info_feedback/token_info_feedback_response.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/word_zoom/word_zoom_widget.dart'; +import 'package:fluffychat/pangea/toolbar/word_card/word_zoom_widget.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; import 'package:fluffychat/widgets/matrix.dart'; diff --git a/lib/pangea/toolbar/widgets/measure_render_box.dart b/lib/pangea/toolbar/layout/measure_render_box.dart similarity index 100% rename from lib/pangea/toolbar/widgets/measure_render_box.dart rename to lib/pangea/toolbar/layout/measure_render_box.dart diff --git a/lib/pangea/toolbar/widgets/message_selection_positioner.dart b/lib/pangea/toolbar/layout/message_selection_positioner.dart similarity index 97% rename from lib/pangea/toolbar/widgets/message_selection_positioner.dart rename to lib/pangea/toolbar/layout/message_selection_positioner.dart index 88ce53576..7b8e2c68d 100644 --- a/lib/pangea/toolbar/widgets/message_selection_positioner.dart +++ b/lib/pangea/toolbar/layout/message_selection_positioner.dart @@ -14,12 +14,12 @@ import 'package:fluffychat/pages/chat/chat.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_model.dart'; -import 'package:fluffychat/pangea/toolbar/enums/reading_assistance_mode_enum.dart'; -import 'package:fluffychat/pangea/toolbar/reading_assistance_input_row/reading_assistance_input_bar.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/over_message_overlay.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/practice_mode_transition_animation.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/word_card_switcher.dart'; +import 'package:fluffychat/pangea/toolbar/layout/over_message_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/layout/practice_mode_transition_animation.dart'; +import 'package:fluffychat/pangea/toolbar/layout/reading_assistance_mode_enum.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/reading_assistance_input_bar.dart'; +import 'package:fluffychat/pangea/toolbar/message_selection_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/word_card/word_card_switcher.dart'; import 'package:fluffychat/utils/adaptive_bottom_sheet.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/matrix.dart'; diff --git a/lib/pangea/toolbar/widgets/over_message_overlay.dart b/lib/pangea/toolbar/layout/over_message_overlay.dart similarity index 90% rename from lib/pangea/toolbar/widgets/over_message_overlay.dart rename to lib/pangea/toolbar/layout/over_message_overlay.dart index a75d9a6ab..98e3d8fd6 100644 --- a/lib/pangea/toolbar/widgets/over_message_overlay.dart +++ b/lib/pangea/toolbar/layout/over_message_overlay.dart @@ -3,11 +3,11 @@ import 'dart:math'; import 'package:flutter/material.dart'; import 'package:fluffychat/config/themes.dart'; -import 'package:fluffychat/pangea/toolbar/enums/reading_assistance_mode_enum.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_positioner.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/overlay_center_content.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/select_mode_buttons.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/word_card_switcher.dart'; +import 'package:fluffychat/pangea/toolbar/layout/message_selection_positioner.dart'; +import 'package:fluffychat/pangea/toolbar/layout/overlay_center_content.dart'; +import 'package:fluffychat/pangea/toolbar/layout/reading_assistance_mode_enum.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/select_mode_buttons.dart'; +import 'package:fluffychat/pangea/toolbar/word_card/word_card_switcher.dart'; import 'package:fluffychat/widgets/matrix.dart'; class OverMessageOverlay extends StatelessWidget { diff --git a/lib/pangea/toolbar/widgets/overlay_center_content.dart b/lib/pangea/toolbar/layout/overlay_center_content.dart similarity index 91% rename from lib/pangea/toolbar/widgets/overlay_center_content.dart rename to lib/pangea/toolbar/layout/overlay_center_content.dart index be5c31c92..79623237b 100644 --- a/lib/pangea/toolbar/widgets/overlay_center_content.dart +++ b/lib/pangea/toolbar/layout/overlay_center_content.dart @@ -5,10 +5,10 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/pages/chat/chat.dart'; import 'package:fluffychat/pages/chat/events/pangea_message_reactions.dart'; -import 'package:fluffychat/pangea/toolbar/enums/reading_assistance_mode_enum.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/measure_render_box.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/overlay_message.dart'; +import 'package:fluffychat/pangea/toolbar/layout/measure_render_box.dart'; +import 'package:fluffychat/pangea/toolbar/layout/overlay_message.dart'; +import 'package:fluffychat/pangea/toolbar/layout/reading_assistance_mode_enum.dart'; +import 'package:fluffychat/pangea/toolbar/message_selection_overlay.dart'; class OverlayCenterContent extends StatelessWidget { final Event event; diff --git a/lib/pangea/toolbar/widgets/overlay_message.dart b/lib/pangea/toolbar/layout/overlay_message.dart similarity index 97% rename from lib/pangea/toolbar/widgets/overlay_message.dart rename to lib/pangea/toolbar/layout/overlay_message.dart index 59149cc6b..475fffdc3 100644 --- a/lib/pangea/toolbar/widgets/overlay_message.dart +++ b/lib/pangea/toolbar/layout/overlay_message.dart @@ -17,11 +17,11 @@ import 'package:fluffychat/pangea/events/models/pangea_token_model.dart'; import 'package:fluffychat/pangea/languages/language_model.dart'; import 'package:fluffychat/pangea/languages/p_language_store.dart'; import 'package:fluffychat/pangea/phonetic_transcription/phonetic_transcription_widget.dart'; -import 'package:fluffychat/pangea/toolbar/enums/reading_assistance_mode_enum.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/select_mode_buttons.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/select_mode_controller.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/stt_transcript_tokens.dart'; +import 'package:fluffychat/pangea/toolbar/layout/reading_assistance_mode_enum.dart'; +import 'package:fluffychat/pangea/toolbar/message_selection_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/select_mode_buttons.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/select_mode_controller.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/stt_transcript_tokens.dart'; import 'package:fluffychat/utils/date_time_extension.dart'; import 'package:fluffychat/utils/file_description.dart'; import 'package:fluffychat/widgets/avatar.dart'; diff --git a/lib/pangea/toolbar/widgets/practice_mode_transition_animation.dart b/lib/pangea/toolbar/layout/practice_mode_transition_animation.dart similarity index 97% rename from lib/pangea/toolbar/widgets/practice_mode_transition_animation.dart rename to lib/pangea/toolbar/layout/practice_mode_transition_animation.dart index 3f9b14320..c10fbf13b 100644 --- a/lib/pangea/toolbar/widgets/practice_mode_transition_animation.dart +++ b/lib/pangea/toolbar/layout/practice_mode_transition_animation.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/themes.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_positioner.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/overlay_center_content.dart'; +import 'package:fluffychat/pangea/toolbar/layout/message_selection_positioner.dart'; +import 'package:fluffychat/pangea/toolbar/layout/overlay_center_content.dart'; import 'package:fluffychat/widgets/matrix.dart'; class PracticeModeTransitionAnimation extends StatefulWidget { diff --git a/lib/pangea/toolbar/enums/reading_assistance_mode_enum.dart b/lib/pangea/toolbar/layout/reading_assistance_mode_enum.dart similarity index 100% rename from lib/pangea/toolbar/enums/reading_assistance_mode_enum.dart rename to lib/pangea/toolbar/layout/reading_assistance_mode_enum.dart diff --git a/lib/pangea/message_token_text/dotted_border_painter.dart b/lib/pangea/toolbar/message_practice/dotted_border_painter.dart similarity index 100% rename from lib/pangea/message_token_text/dotted_border_painter.dart rename to lib/pangea/toolbar/message_practice/dotted_border_painter.dart diff --git a/lib/pangea/toolbar/widgets/message_audio_card.dart b/lib/pangea/toolbar/message_practice/message_audio_card.dart similarity index 100% rename from lib/pangea/toolbar/widgets/message_audio_card.dart rename to lib/pangea/toolbar/message_practice/message_audio_card.dart diff --git a/lib/pangea/toolbar/reading_assistance_input_row/message_morph_choice.dart b/lib/pangea/toolbar/message_practice/message_morph_choice.dart similarity index 97% rename from lib/pangea/toolbar/reading_assistance_input_row/message_morph_choice.dart rename to lib/pangea/toolbar/message_practice/message_morph_choice.dart index 263a56371..851589f93 100644 --- a/lib/pangea/toolbar/reading_assistance_input_row/message_morph_choice.dart +++ b/lib/pangea/toolbar/message_practice/message_morph_choice.dart @@ -13,8 +13,8 @@ import 'package:fluffychat/pangea/morphs/morph_features_enum.dart'; import 'package:fluffychat/pangea/morphs/morph_icon.dart'; import 'package:fluffychat/pangea/practice_activities/practice_activity_model.dart'; import 'package:fluffychat/pangea/practice_activities/practice_choice.dart'; -import 'package:fluffychat/pangea/toolbar/reading_assistance_input_row/message_morph_choice_item.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/practice_controller.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_morph_choice_item.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/practice_controller.dart'; // this widget will handle the content of the input bar when mode == MessageMode.wordMorph diff --git a/lib/pangea/toolbar/reading_assistance_input_row/message_morph_choice_item.dart b/lib/pangea/toolbar/message_practice/message_morph_choice_item.dart similarity index 100% rename from lib/pangea/toolbar/reading_assistance_input_row/message_morph_choice_item.dart rename to lib/pangea/toolbar/message_practice/message_morph_choice_item.dart diff --git a/lib/pangea/toolbar/enums/message_mode_enum.dart b/lib/pangea/toolbar/message_practice/message_practice_mode_enum.dart similarity index 58% rename from lib/pangea/toolbar/enums/message_mode_enum.dart rename to lib/pangea/toolbar/message_practice/message_practice_mode_enum.dart index 75958cfc2..be0375e31 100644 --- a/lib/pangea/toolbar/enums/message_mode_enum.dart +++ b/lib/pangea/toolbar/message_practice/message_practice_mode_enum.dart @@ -6,7 +6,7 @@ import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/practice_activities/activity_type_enum.dart'; -enum MessageMode { +enum MessagePracticeMode { wordEmoji, wordMeaning, wordMorph, @@ -15,30 +15,30 @@ enum MessageMode { IconData get icon { switch (this) { - case MessageMode.listening: + case MessagePracticeMode.listening: return Icons.volume_up; - case MessageMode.wordMeaning: + case MessagePracticeMode.wordMeaning: return Symbols.dictionary; - case MessageMode.noneSelected: + case MessagePracticeMode.noneSelected: return Icons.error; - case MessageMode.wordEmoji: + case MessagePracticeMode.wordEmoji: return Symbols.imagesmode; - case MessageMode.wordMorph: + case MessagePracticeMode.wordMorph: return Symbols.toys_and_games; } } String tooltip(BuildContext context) { switch (this) { - case MessageMode.listening: + case MessagePracticeMode.listening: return L10n.of(context).listen; - case MessageMode.noneSelected: + case MessagePracticeMode.noneSelected: return ''; - case MessageMode.wordEmoji: + case MessagePracticeMode.wordEmoji: return L10n.of(context).image; - case MessageMode.wordMorph: + case MessagePracticeMode.wordMorph: return L10n.of(context).grammar; - case MessageMode.wordMeaning: + case MessagePracticeMode.wordMeaning: return L10n.of(context).meaning; } } @@ -51,23 +51,23 @@ enum MessageMode { ActivityTypeEnum? get associatedActivityType { switch (this) { - case MessageMode.wordMeaning: + case MessagePracticeMode.wordMeaning: return ActivityTypeEnum.wordMeaning; - case MessageMode.listening: + case MessagePracticeMode.listening: return ActivityTypeEnum.wordFocusListening; - case MessageMode.wordEmoji: + case MessagePracticeMode.wordEmoji: return ActivityTypeEnum.emoji; - case MessageMode.wordMorph: + case MessagePracticeMode.wordMorph: return ActivityTypeEnum.morphId; - case MessageMode.noneSelected: + case MessagePracticeMode.noneSelected: return null; } } - static List get practiceModes => [ - MessageMode.listening, - MessageMode.wordMorph, - MessageMode.wordMeaning, - MessageMode.wordEmoji, + static List get practiceModes => [ + MessagePracticeMode.listening, + MessagePracticeMode.wordMorph, + MessagePracticeMode.wordMeaning, + MessagePracticeMode.wordEmoji, ]; } diff --git a/lib/pangea/toolbar/reading_assistance_input_row/morph_selection.dart b/lib/pangea/toolbar/message_practice/morph_selection.dart similarity index 100% rename from lib/pangea/toolbar/reading_assistance_input_row/morph_selection.dart rename to lib/pangea/toolbar/message_practice/morph_selection.dart diff --git a/lib/pangea/toolbar/widgets/practice_activity/practice_activity_card.dart b/lib/pangea/toolbar/message_practice/practice_activity_card.dart similarity index 89% rename from lib/pangea/toolbar/widgets/practice_activity/practice_activity_card.dart rename to lib/pangea/toolbar/message_practice/practice_activity_card.dart index f036ae220..4a6eb7ff0 100644 --- a/lib/pangea/toolbar/widgets/practice_activity/practice_activity_card.dart +++ b/lib/pangea/toolbar/message_practice/practice_activity_card.dart @@ -5,13 +5,13 @@ import 'package:flutter/material.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/common/utils/async_state.dart'; import 'package:fluffychat/pangea/common/widgets/card_error_widget.dart'; +import 'package:fluffychat/pangea/common/widgets/content_loading_indicator.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_model.dart'; import 'package:fluffychat/pangea/practice_activities/practice_activity_model.dart'; import 'package:fluffychat/pangea/practice_activities/practice_target.dart'; -import 'package:fluffychat/pangea/toolbar/reading_assistance_input_row/message_morph_choice.dart'; -import 'package:fluffychat/pangea/toolbar/reading_assistance_input_row/practice_match_card.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/practice_controller.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/toolbar_content_loading_indicator.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_morph_choice.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/practice_controller.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/practice_match_card.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; import 'package:fluffychat/widgets/matrix.dart'; @@ -92,7 +92,7 @@ class PracticeActivityCardState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ switch (state) { - AsyncLoading() => const ToolbarContentLoadingIndicator( + AsyncLoading() => const ContentLoadingIndicator( height: 40, ), AsyncError() => CardErrorWidget( diff --git a/lib/pangea/toolbar/widgets/practice_controller.dart b/lib/pangea/toolbar/message_practice/practice_controller.dart similarity index 93% rename from lib/pangea/toolbar/widgets/practice_controller.dart rename to lib/pangea/toolbar/message_practice/practice_controller.dart index 0da3485ea..00fee09d3 100644 --- a/lib/pangea/toolbar/widgets/practice_controller.dart +++ b/lib/pangea/toolbar/message_practice/practice_controller.dart @@ -16,8 +16,8 @@ import 'package:fluffychat/pangea/practice_activities/practice_generation_repo.d import 'package:fluffychat/pangea/practice_activities/practice_selection.dart'; import 'package:fluffychat/pangea/practice_activities/practice_selection_repo.dart'; import 'package:fluffychat/pangea/practice_activities/practice_target.dart'; -import 'package:fluffychat/pangea/toolbar/enums/message_mode_enum.dart'; -import 'package:fluffychat/pangea/toolbar/reading_assistance_input_row/morph_selection.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_practice_mode_enum.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/morph_selection.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; import 'package:fluffychat/widgets/matrix.dart'; @@ -28,7 +28,7 @@ class PracticeController with ChangeNotifier { PracticeActivityModel? _activity; - MessageMode practiceMode = MessageMode.noneSelected; + MessagePracticeMode practiceMode = MessagePracticeMode.noneSelected; MorphSelection? selectedMorph; PracticeChoice? selectedChoice; @@ -84,10 +84,10 @@ class PracticeController with ChangeNotifier { .firstWhereOrNull((a) => a.tokens.contains(token)); } - void updateToolbarMode(MessageMode mode) { + void updateToolbarMode(MessagePracticeMode mode) { selectedChoice = null; practiceMode = mode; - if (practiceMode != MessageMode.wordMorph) { + if (practiceMode != MessagePracticeMode.wordMorph) { selectedMorph = null; } notifyListeners(); @@ -104,7 +104,7 @@ class PracticeController with ChangeNotifier { } void onSelectMorph(MorphSelection newMorph) { - practiceMode = MessageMode.wordMorph; + practiceMode = MessagePracticeMode.wordMorph; selectedMorph = newMorph; notifyListeners(); } diff --git a/lib/pangea/toolbar/reading_assistance_input_row/practice_match_card.dart b/lib/pangea/toolbar/message_practice/practice_match_card.dart similarity index 86% rename from lib/pangea/toolbar/reading_assistance_input_row/practice_match_card.dart rename to lib/pangea/toolbar/message_practice/practice_match_card.dart index 3d170dd95..93928a188 100644 --- a/lib/pangea/toolbar/reading_assistance_input_row/practice_match_card.dart +++ b/lib/pangea/toolbar/message_practice/practice_match_card.dart @@ -10,10 +10,10 @@ import 'package:fluffychat/pangea/common/widgets/choice_animation.dart'; import 'package:fluffychat/pangea/practice_activities/activity_type_enum.dart'; import 'package:fluffychat/pangea/practice_activities/practice_activity_model.dart'; import 'package:fluffychat/pangea/practice_activities/practice_choice.dart'; -import 'package:fluffychat/pangea/toolbar/enums/message_mode_enum.dart'; -import 'package:fluffychat/pangea/toolbar/reading_assistance_input_row/practice_match_item.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_audio_card.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/practice_controller.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_audio_card.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_practice_mode_enum.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/practice_controller.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/practice_match_item.dart'; class MatchActivityCard extends StatelessWidget { final PracticeActivityModel currentActivity; @@ -60,7 +60,8 @@ class MatchActivityCard extends StatelessWidget { 26; final mode = controller.practiceMode; - if (mode == MessageMode.listening || mode == MessageMode.wordEmoji) { + if (mode == MessagePracticeMode.listening || + mode == MessagePracticeMode.wordEmoji) { fontSize = fontSize * 1.5; } @@ -69,7 +70,7 @@ class MatchActivityCard extends StatelessWidget { mainAxisSize: MainAxisSize.max, spacing: 4.0, children: [ - if (mode == MessageMode.listening) + if (mode == MessagePracticeMode.listening) MessageAudioCard(messageEvent: controller.pangeaMessageEvent), Wrap( alignment: WrapAlignment.center, diff --git a/lib/pangea/toolbar/reading_assistance_input_row/practice_match_item.dart b/lib/pangea/toolbar/message_practice/practice_match_item.dart similarity index 98% rename from lib/pangea/toolbar/reading_assistance_input_row/practice_match_item.dart rename to lib/pangea/toolbar/message_practice/practice_match_item.dart index d05042c15..46f031512 100644 --- a/lib/pangea/toolbar/reading_assistance_input_row/practice_match_item.dart +++ b/lib/pangea/toolbar/message_practice/practice_match_item.dart @@ -8,7 +8,7 @@ import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_model.dart'; import 'package:fluffychat/pangea/practice_activities/practice_choice.dart'; import 'package:fluffychat/pangea/text_to_speech/tts_controller.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/practice_controller.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/practice_controller.dart'; import 'package:fluffychat/widgets/matrix.dart'; class PracticeMatchItem extends StatefulWidget { diff --git a/lib/pangea/toolbar/reading_assistance_input_row/reading_assistance_input_bar.dart b/lib/pangea/toolbar/message_practice/reading_assistance_input_bar.dart similarity index 91% rename from lib/pangea/toolbar/reading_assistance_input_row/reading_assistance_input_bar.dart rename to lib/pangea/toolbar/message_practice/reading_assistance_input_bar.dart index 8e89872ec..66e4bd350 100644 --- a/lib/pangea/toolbar/reading_assistance_input_row/reading_assistance_input_bar.dart +++ b/lib/pangea/toolbar/message_practice/reading_assistance_input_bar.dart @@ -4,10 +4,10 @@ import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_model.dart'; import 'package:fluffychat/pangea/practice_activities/practice_target.dart'; -import 'package:fluffychat/pangea/toolbar/enums/message_mode_enum.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/practice_activity/practice_activity_card.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/practice_controller.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/toolbar_button.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_practice_mode_enum.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/practice_activity_card.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/practice_controller.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/toolbar_button.dart'; import 'package:fluffychat/widgets/matrix.dart'; const double minContentHeight = 120; @@ -50,7 +50,7 @@ class ReadingAssistanceInputBarState extends State { spacing: 4.0, mainAxisSize: MainAxisSize.min, children: [ - ...MessageMode.practiceModes.map( + ...MessagePracticeMode.practiceModes.map( (m) => ToolbarButton( mode: m, setMode: () => widget.controller.updateToolbarMode(m), @@ -120,7 +120,7 @@ class _ReadingAssistanceBarContent extends StatelessWidget { activityType != null && controller.isPracticeActivityDone(activityType); switch (mode) { - case MessageMode.noneSelected: + case MessagePracticeMode.noneSelected: return controller.isTotallyDone ? const _AllDoneWidget() : Text( @@ -132,9 +132,9 @@ class _ReadingAssistanceBarContent extends StatelessWidget { textAlign: TextAlign.center, ); - case MessageMode.wordEmoji: - case MessageMode.wordMeaning: - case MessageMode.listening: + case MessagePracticeMode.wordEmoji: + case MessagePracticeMode.wordMeaning: + case MessagePracticeMode.listening: if (controller.isTotallyDone) { return const _AllDoneWidget(); } @@ -154,7 +154,7 @@ class _ReadingAssistanceBarContent extends StatelessWidget { selectedToken: selectedToken, maxWidth: maxWidth, ); - case MessageMode.wordMorph: + case MessagePracticeMode.wordMorph: if (controller.isTotallyDone) { return const _AllDoneWidget(); } diff --git a/lib/pangea/message_token_text/token_practice_button.dart b/lib/pangea/toolbar/message_practice/token_practice_button.dart similarity index 90% rename from lib/pangea/message_token_text/token_practice_button.dart rename to lib/pangea/toolbar/message_practice/token_practice_button.dart index e0c7a7fb5..107b57bd8 100644 --- a/lib/pangea/message_token_text/token_practice_button.dart +++ b/lib/pangea/toolbar/message_practice/token_practice_button.dart @@ -9,15 +9,15 @@ import 'package:shimmer/shimmer.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_model.dart'; -import 'package:fluffychat/pangea/message_token_text/dotted_border_painter.dart'; import 'package:fluffychat/pangea/morphs/get_grammar_copy.dart'; import 'package:fluffychat/pangea/morphs/morph_features_enum.dart'; import 'package:fluffychat/pangea/morphs/morph_icon.dart'; import 'package:fluffychat/pangea/practice_activities/practice_choice.dart'; import 'package:fluffychat/pangea/practice_activities/practice_target.dart'; -import 'package:fluffychat/pangea/toolbar/enums/message_mode_enum.dart'; -import 'package:fluffychat/pangea/toolbar/reading_assistance_input_row/morph_selection.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/practice_controller.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/dotted_border_painter.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_practice_mode_enum.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/morph_selection.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/practice_controller.dart'; import 'package:fluffychat/widgets/hover_builder.dart'; const double tokenButtonHeight = 40.0; @@ -56,15 +56,17 @@ class TokenPracticeButton extends StatelessWidget { bool get _isEmpty { final mode = controller.practiceMode; - if (MessageMode.wordEmoji == mode && + if (MessagePracticeMode.wordEmoji == mode && token.vocabConstructID.userSetEmoji.firstOrNull != null) { return false; } return _activity == null || (isActivityCompleteOrNullForToken && - ![MessageMode.wordEmoji, MessageMode.wordMorph].contains(mode)) || - (MessageMode.wordMorph == mode && _activity?.morphFeature == null); + ![MessagePracticeMode.wordEmoji, MessagePracticeMode.wordMorph] + .contains(mode)) || + (MessagePracticeMode.wordMorph == mode && + _activity?.morphFeature == null); } bool get _isSelected => @@ -91,7 +93,7 @@ class TokenPracticeButton extends StatelessWidget { target: _activity, emojiStyle: _emojiStyle, ); - } else if (practiceMode == MessageMode.wordMorph) { + } else if (practiceMode == MessagePracticeMode.wordMorph) { child = _MorphMatchButton( active: _isSelected, textColor: textColor, @@ -229,7 +231,7 @@ class _MorphMatchButton extends StatelessWidget { } class _NoActivityContentButton extends StatelessWidget { - final MessageMode practiceMode; + final MessagePracticeMode practiceMode; final PangeaToken token; final PracticeTarget? target; final TextStyle emojiStyle; @@ -243,7 +245,7 @@ class _NoActivityContentButton extends StatelessWidget { @override Widget build(BuildContext context) { - if (practiceMode == MessageMode.wordEmoji) { + if (practiceMode == MessagePracticeMode.wordEmoji) { final displayEmoji = target?.record.responses .firstWhereOrNull( (res) => res.cId == token.vocabConstructID && res.isCorrect, @@ -256,7 +258,7 @@ class _NoActivityContentButton extends StatelessWidget { style: emojiStyle, ); } - if (practiceMode == MessageMode.wordMorph && target != null) { + if (practiceMode == MessagePracticeMode.wordMorph && target != null) { final morphFeature = target!.morphFeature!; final morphTag = token.morphIdByFeature(morphFeature); if (morphTag != null) { diff --git a/lib/pangea/toolbar/widgets/toolbar_button.dart b/lib/pangea/toolbar/message_practice/toolbar_button.dart similarity index 91% rename from lib/pangea/toolbar/widgets/toolbar_button.dart rename to lib/pangea/toolbar/message_practice/toolbar_button.dart index 79a6599ed..0e7206349 100644 --- a/lib/pangea/toolbar/widgets/toolbar_button.dart +++ b/lib/pangea/toolbar/message_practice/toolbar_button.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:fluffychat/pangea/common/widgets/pressable_button.dart'; -import 'package:fluffychat/pangea/toolbar/enums/message_mode_enum.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_practice_mode_enum.dart'; class ToolbarButton extends StatelessWidget { - final MessageMode mode; + final MessagePracticeMode mode; final VoidCallback setMode; final bool isComplete; diff --git a/lib/pangea/toolbar/widgets/message_selection_overlay.dart b/lib/pangea/toolbar/message_selection_overlay.dart similarity index 95% rename from lib/pangea/toolbar/widgets/message_selection_overlay.dart rename to lib/pangea/toolbar/message_selection_overlay.dart index fd1f9c052..00351097d 100644 --- a/lib/pangea/toolbar/widgets/message_selection_overlay.dart +++ b/lib/pangea/toolbar/message_selection_overlay.dart @@ -18,12 +18,12 @@ import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dar import 'package:fluffychat/pangea/events/event_wrappers/pangea_representation_event.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_model.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_text_model.dart'; -import 'package:fluffychat/pangea/message_token_text/tokens_util.dart'; import 'package:fluffychat/pangea/text_to_speech/text_to_speech_response_model.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_positioner.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/practice_controller.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/select_mode_buttons.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/select_mode_controller.dart'; +import 'package:fluffychat/pangea/toolbar/layout/message_selection_positioner.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/practice_controller.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/select_mode_buttons.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/select_mode_controller.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/tokens_util.dart'; import 'package:fluffychat/widgets/matrix.dart'; /// Controls data at the top level of the toolbar (mainly token / toolbar mode selection) diff --git a/lib/pangea/toolbar/reading_assistance_input_row/lemma_emoji_choice_item.dart b/lib/pangea/toolbar/reading_assistance/lemma_emoji_choice_item.dart similarity index 100% rename from lib/pangea/toolbar/reading_assistance_input_row/lemma_emoji_choice_item.dart rename to lib/pangea/toolbar/reading_assistance/lemma_emoji_choice_item.dart diff --git a/lib/pangea/lemmas/lemma_emoji_picker.dart b/lib/pangea/toolbar/reading_assistance/lemma_emoji_picker.dart similarity index 92% rename from lib/pangea/lemmas/lemma_emoji_picker.dart rename to lib/pangea/toolbar/reading_assistance/lemma_emoji_picker.dart index c99a79214..965787745 100644 --- a/lib/pangea/lemmas/lemma_emoji_picker.dart +++ b/lib/pangea/toolbar/reading_assistance/lemma_emoji_picker.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:fluffychat/pangea/toolbar/reading_assistance_input_row/lemma_emoji_choice_item.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/lemma_emoji_choice_item.dart'; class LemmaEmojiPicker extends StatelessWidget { final List emojis; diff --git a/lib/pangea/toolbar/widgets/word_zoom/new_word_overlay.dart b/lib/pangea/toolbar/reading_assistance/new_word_overlay.dart similarity index 98% rename from lib/pangea/toolbar/widgets/word_zoom/new_word_overlay.dart rename to lib/pangea/toolbar/reading_assistance/new_word_overlay.dart index ed0180347..d5a2ee6be 100644 --- a/lib/pangea/toolbar/widgets/word_zoom/new_word_overlay.dart +++ b/lib/pangea/toolbar/reading_assistance/new_word_overlay.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:material_symbols_icons/symbols.dart'; import 'package:fluffychat/pangea/common/utils/overlay.dart'; -import 'package:fluffychat/pangea/message_token_text/tokens_util.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/tokens_util.dart'; import 'package:fluffychat/widgets/matrix.dart'; class NewWordOverlay extends StatefulWidget { diff --git a/lib/pangea/toolbar/widgets/select_mode_buttons.dart b/lib/pangea/toolbar/reading_assistance/select_mode_buttons.dart similarity index 98% rename from lib/pangea/toolbar/widgets/select_mode_buttons.dart rename to lib/pangea/toolbar/reading_assistance/select_mode_buttons.dart index c824d7236..4bc0117b8 100644 --- a/lib/pangea/toolbar/widgets/select_mode_buttons.dart +++ b/lib/pangea/toolbar/reading_assistance/select_mode_buttons.dart @@ -18,9 +18,9 @@ import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dar import 'package:fluffychat/pangea/events/extensions/pangea_event_extension.dart'; import 'package:fluffychat/pangea/events/utils/report_message.dart'; import 'package:fluffychat/pangea/text_to_speech/tts_controller.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_audio_card.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/select_mode_controller.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_audio_card.dart'; +import 'package:fluffychat/pangea/toolbar/message_selection_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/select_mode_controller.dart'; import 'package:fluffychat/widgets/matrix.dart'; enum SelectMode { diff --git a/lib/pangea/toolbar/widgets/select_mode_controller.dart b/lib/pangea/toolbar/reading_assistance/select_mode_controller.dart similarity index 97% rename from lib/pangea/toolbar/widgets/select_mode_controller.dart rename to lib/pangea/toolbar/reading_assistance/select_mode_controller.dart index 4b330100e..ea01b16ba 100644 --- a/lib/pangea/toolbar/widgets/select_mode_controller.dart +++ b/lib/pangea/toolbar/reading_assistance/select_mode_controller.dart @@ -9,8 +9,8 @@ import 'package:path_provider/path_provider.dart'; import 'package:fluffychat/pangea/common/utils/async_state.dart'; import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart'; import 'package:fluffychat/pangea/speech_to_text/speech_to_text_response_model.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_audio_card.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/select_mode_buttons.dart'; +import 'package:fluffychat/pangea/toolbar/message_practice/message_audio_card.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/select_mode_buttons.dart'; import 'package:fluffychat/widgets/matrix.dart'; class _TranscriptionLoader extends AsyncLoader { diff --git a/lib/pangea/toolbar/widgets/stt_transcript_tokens.dart b/lib/pangea/toolbar/reading_assistance/stt_transcript_tokens.dart similarity index 97% rename from lib/pangea/toolbar/widgets/stt_transcript_tokens.dart rename to lib/pangea/toolbar/reading_assistance/stt_transcript_tokens.dart index d25230fd6..b725aa7ef 100644 --- a/lib/pangea/toolbar/widgets/stt_transcript_tokens.dart +++ b/lib/pangea/toolbar/reading_assistance/stt_transcript_tokens.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_model.dart'; -import 'package:fluffychat/pangea/message_token_text/tokens_util.dart'; import 'package:fluffychat/pangea/speech_to_text/speech_to_text_response_model.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/tokens_util.dart'; class SttTranscriptTokens extends StatelessWidget { final SpeechToTextResponseModel model; diff --git a/lib/pangea/message_token_text/token_emoji_button.dart b/lib/pangea/toolbar/reading_assistance/token_emoji_button.dart similarity index 96% rename from lib/pangea/message_token_text/token_emoji_button.dart rename to lib/pangea/toolbar/reading_assistance/token_emoji_button.dart index b60faa0fd..9ce1be5af 100644 --- a/lib/pangea/message_token_text/token_emoji_button.dart +++ b/lib/pangea/toolbar/reading_assistance/token_emoji_button.dart @@ -6,9 +6,9 @@ import 'package:fluffychat/pangea/analytics_misc/lemma_emoji_setter_mixin.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/common/utils/overlay.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_model.dart'; -import 'package:fluffychat/pangea/lemmas/lemma_emoji_picker.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/select_mode_buttons.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/word_zoom/lemma_meaning_builder.dart'; +import 'package:fluffychat/pangea/lemmas/lemma_meaning_builder.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/lemma_emoji_picker.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/select_mode_buttons.dart'; import 'package:fluffychat/widgets/matrix.dart'; class TokenEmojiButton extends StatefulWidget { diff --git a/lib/pangea/toolbar/utils/token_rendering_util.dart b/lib/pangea/toolbar/reading_assistance/token_rendering_util.dart similarity index 95% rename from lib/pangea/toolbar/utils/token_rendering_util.dart rename to lib/pangea/toolbar/reading_assistance/token_rendering_util.dart index abb7a15bf..6d9fe1ad9 100644 --- a/lib/pangea/toolbar/utils/token_rendering_util.dart +++ b/lib/pangea/toolbar/reading_assistance/token_rendering_util.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart'; -import 'package:fluffychat/pangea/toolbar/enums/reading_assistance_mode_enum.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/layout/reading_assistance_mode_enum.dart'; +import 'package:fluffychat/pangea/toolbar/message_selection_overlay.dart'; class TokenRenderingUtil { final PangeaMessageEvent? pangeaMessageEvent; diff --git a/lib/pangea/message_token_text/tokens_util.dart b/lib/pangea/toolbar/reading_assistance/tokens_util.dart similarity index 100% rename from lib/pangea/message_token_text/tokens_util.dart rename to lib/pangea/toolbar/reading_assistance/tokens_util.dart diff --git a/lib/pangea/toolbar/utils/update_version_dialog.dart b/lib/pangea/toolbar/utils/update_version_dialog.dart deleted file mode 100644 index 88961f3f5..000000000 --- a/lib/pangea/toolbar/utils/update_version_dialog.dart +++ /dev/null @@ -1,28 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:fluffychat/l10n/l10n.dart'; -import 'package:fluffychat/pangea/common/utils/error_handler.dart'; -import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; - -Future showUpdateVersionDialog({ - required Future Function() future, - required BuildContext context, -}) async { - try { - await future(); - return true; - } catch (err, s) { - ErrorHandler.logError( - e: err, - s: s, - data: {}, - ); - await showOkAlertDialog( - context: context, - title: L10n.of(context).oopsSomethingWentWrong, - message: L10n.of(context).updatePhoneOS, - okLabel: L10n.of(context).close, - ); - return false; - } -} diff --git a/lib/pangea/toolbar/widgets/message_toolbar_selection_area.dart b/lib/pangea/toolbar/widgets/message_toolbar_selection_area.dart deleted file mode 100644 index eae99d9ae..000000000 --- a/lib/pangea/toolbar/widgets/message_toolbar_selection_area.dart +++ /dev/null @@ -1,54 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:matrix/matrix.dart'; - -import 'package:fluffychat/pages/chat/chat.dart'; -import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart'; - -class ToolbarSelectionArea extends StatelessWidget { - final Event event; - final ChatController controller; - final PangeaMessageEvent? pangeaMessageEvent; - final bool isOverlay; - final Widget child; - final Event? nextEvent; - final Event? prevEvent; - - const ToolbarSelectionArea({ - required this.event, - required this.controller, - this.pangeaMessageEvent, - this.isOverlay = false, - required this.child, - this.nextEvent, - this.prevEvent, - super.key, - }); - - @override - Widget build(BuildContext context) { - return GestureDetector( - onTap: () { - if (pangeaMessageEvent != null && !isOverlay) { - controller.showToolbar( - event, - pangeaMessageEvent: pangeaMessageEvent, - nextEvent: nextEvent, - prevEvent: prevEvent, - ); - } - }, - onLongPress: () { - if (pangeaMessageEvent != null && !isOverlay) { - controller.showToolbar( - event, - pangeaMessageEvent: pangeaMessageEvent, - nextEvent: nextEvent, - prevEvent: prevEvent, - ); - } - }, - child: child, - ); - } -} diff --git a/lib/pangea/toolbar/widgets/missing_voice_button.dart b/lib/pangea/toolbar/widgets/missing_voice_button.dart deleted file mode 100644 index 4e1666ec2..000000000 --- a/lib/pangea/toolbar/widgets/missing_voice_button.dart +++ /dev/null @@ -1,50 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; - -import 'package:android_intent_plus/android_intent.dart'; - -import 'package:fluffychat/l10n/l10n.dart'; -import 'package:fluffychat/widgets/future_loading_dialog.dart'; -import 'package:fluffychat/widgets/matrix.dart'; - -class MissingVoiceButton extends StatelessWidget { - const MissingVoiceButton({super.key}); - - Future launchTTSSettings(BuildContext context) async { - if (!kIsWeb && Platform.isAndroid) { - const intent = AndroidIntent( - action: 'com.android.settings.TTS_SETTINGS', - package: 'com.talktolearn.chat', - ); - - await showFutureLoadingDialog( - context: context, - future: intent.launch, - ); - } - } - - @override - Widget build(BuildContext context) { - if (kIsWeb || !Platform.isAndroid) { - return const SizedBox(); - } - - return TextButton( - style: ButtonStyle( - backgroundColor: WidgetStateProperty.all( - Theme.of(context).colorScheme.primary.withAlpha(25), - ), - ), - onPressed: () async { - MatrixState.pAnyState.closeOverlay(); - await launchTTSSettings(context); - }, - child: Center( - child: Text(L10n.of(context).openVoiceSettings), - ), - ); - } -} diff --git a/lib/pangea/toolbar/widgets/practice_activity/word_zoom_activity_button.dart b/lib/pangea/toolbar/widgets/practice_activity/word_zoom_activity_button.dart deleted file mode 100644 index 67f47d261..000000000 --- a/lib/pangea/toolbar/widgets/practice_activity/word_zoom_activity_button.dart +++ /dev/null @@ -1,65 +0,0 @@ -import 'package:flutter/material.dart'; - -class WordZoomActivityButton extends StatelessWidget { - final Widget icon; - final bool isSelected; - final VoidCallback onPressed; - final VoidCallback? onDoubleTap; - final VoidCallback? onLongPress; - final String? tooltip; - final double? opacity; - - const WordZoomActivityButton({ - required this.icon, - required this.isSelected, - required this.onPressed, - this.onDoubleTap, - this.onLongPress, - this.tooltip, - this.opacity, - super.key, - }); - - @override - Widget build(BuildContext context) { - Widget buttonContent = AnimatedSize( - duration: const Duration(milliseconds: 200), - curve: Curves.easeInOut, - child: GestureDetector( - onDoubleTap: onDoubleTap, - onLongPress: onLongPress, - child: IconButton( - onPressed: onPressed, - icon: AnimatedBuilder( - animation: Listenable.merge([ValueNotifier(isSelected)]), - builder: (context, child) { - return Transform.scale( - scale: isSelected ? 1.25 : 1.0, - child: icon, - ); - }, - ), - iconSize: 24, // Keep this constant as scaling handles the size change - color: isSelected ? Theme.of(context).colorScheme.primary : null, - visualDensity: VisualDensity.compact, - ), - ), - ); - - if (opacity != null) { - buttonContent = Opacity( - opacity: opacity!, - child: buttonContent, - ); - } - - if (tooltip != null) { - buttonContent = Tooltip( - message: tooltip!, - child: buttonContent, - ); - } - - return buttonContent; - } -} diff --git a/lib/pangea/lemmas/lemma_reaction_picker.dart b/lib/pangea/toolbar/word_card/lemma_reaction_picker.dart similarity index 96% rename from lib/pangea/lemmas/lemma_reaction_picker.dart rename to lib/pangea/toolbar/word_card/lemma_reaction_picker.dart index 8e9f86da5..b4d69b71c 100644 --- a/lib/pangea/lemmas/lemma_reaction_picker.dart +++ b/lib/pangea/toolbar/word_card/lemma_reaction_picker.dart @@ -4,7 +4,7 @@ import 'package:collection/collection.dart'; import 'package:matrix/matrix.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; -import 'package:fluffychat/pangea/lemmas/lemma_emoji_picker.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/lemma_emoji_picker.dart'; class LemmaReactionPicker extends StatelessWidget { final List emojis; diff --git a/lib/pangea/toolbar/widgets/message_unsubscribed_card.dart b/lib/pangea/toolbar/word_card/message_unsubscribed_card.dart similarity index 100% rename from lib/pangea/toolbar/widgets/message_unsubscribed_card.dart rename to lib/pangea/toolbar/word_card/message_unsubscribed_card.dart diff --git a/lib/pangea/toolbar/widgets/reading_assistance_content.dart b/lib/pangea/toolbar/word_card/reading_assistance_content.dart similarity index 94% rename from lib/pangea/toolbar/widgets/reading_assistance_content.dart rename to lib/pangea/toolbar/word_card/reading_assistance_content.dart index 7086f7b1e..b607b0d1d 100644 --- a/lib/pangea/toolbar/widgets/reading_assistance_content.dart +++ b/lib/pangea/toolbar/word_card/reading_assistance_content.dart @@ -4,8 +4,8 @@ import 'package:matrix/matrix_api_lite/model/message_types.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/pangea/token_info_feedback/token_info_feedback_request.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/word_zoom/word_zoom_widget.dart'; +import 'package:fluffychat/pangea/toolbar/message_selection_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/word_card/word_zoom_widget.dart'; import 'package:fluffychat/widgets/matrix.dart'; const double minCardHeight = 70; diff --git a/lib/pangea/toolbar/widgets/word_card_switcher.dart b/lib/pangea/toolbar/word_card/word_card_switcher.dart similarity index 81% rename from lib/pangea/toolbar/widgets/word_card_switcher.dart rename to lib/pangea/toolbar/word_card/word_card_switcher.dart index 1050d6c8f..1e2ab854f 100644 --- a/lib/pangea/toolbar/widgets/word_card_switcher.dart +++ b/lib/pangea/toolbar/word_card/word_card_switcher.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:fluffychat/config/themes.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_selection_positioner.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/reading_assistance_content.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/select_mode_buttons.dart'; +import 'package:fluffychat/pangea/toolbar/layout/message_selection_positioner.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/select_mode_buttons.dart'; +import 'package:fluffychat/pangea/toolbar/word_card/reading_assistance_content.dart'; class WordCardSwitcher extends StatelessWidget { final MessageSelectionPositionerState controller; diff --git a/lib/pangea/toolbar/widgets/word_zoom/word_zoom_widget.dart b/lib/pangea/toolbar/word_card/word_zoom_widget.dart similarity index 96% rename from lib/pangea/toolbar/widgets/word_zoom/word_zoom_widget.dart rename to lib/pangea/toolbar/word_card/word_zoom_widget.dart index 931097089..d88a4e787 100644 --- a/lib/pangea/toolbar/widgets/word_zoom/word_zoom_widget.dart +++ b/lib/pangea/toolbar/word_card/word_zoom_widget.dart @@ -5,16 +5,16 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/common/widgets/error_indicator.dart'; +import 'package:fluffychat/pangea/common/widgets/word_audio_button.dart'; import 'package:fluffychat/pangea/constructs/construct_identifier.dart'; import 'package:fluffychat/pangea/events/models/pangea_token_text_model.dart'; import 'package:fluffychat/pangea/languages/language_model.dart'; import 'package:fluffychat/pangea/languages/p_language_store.dart'; -import 'package:fluffychat/pangea/lemmas/lemma_reaction_picker.dart'; +import 'package:fluffychat/pangea/lemmas/lemma_meaning_builder.dart'; import 'package:fluffychat/pangea/phonetic_transcription/phonetic_transcription_widget.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/message_unsubscribed_card.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/practice_activity/word_audio_button.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/word_zoom/lemma_meaning_builder.dart'; -import 'package:fluffychat/pangea/toolbar/widgets/word_zoom/new_word_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/reading_assistance/new_word_overlay.dart'; +import 'package:fluffychat/pangea/toolbar/word_card/lemma_reaction_picker.dart'; +import 'package:fluffychat/pangea/toolbar/word_card/message_unsubscribed_card.dart'; import 'package:fluffychat/widgets/matrix.dart'; class WordZoomWidget extends StatelessWidget { diff --git a/lib/pangea/word_bank/vocab_bank_repo.dart b/lib/pangea/word_bank/vocab_bank_repo.dart deleted file mode 100644 index 0373f7072..000000000 --- a/lib/pangea/word_bank/vocab_bank_repo.dart +++ /dev/null @@ -1,1161 +0,0 @@ -import 'dart:convert'; -import 'dart:developer'; - -import 'package:flutter/foundation.dart'; - -import 'package:get_storage/get_storage.dart'; -import 'package:http/http.dart'; - -import 'package:fluffychat/pangea/analytics_misc/construct_type_enum.dart'; -import 'package:fluffychat/pangea/common/config/environment.dart'; -import 'package:fluffychat/pangea/common/network/requests.dart'; -import 'package:fluffychat/pangea/common/network/urls.dart'; -import 'package:fluffychat/pangea/common/utils/error_handler.dart'; -import 'package:fluffychat/pangea/constructs/construct_identifier.dart'; -import 'package:fluffychat/pangea/languages/language_constants.dart'; -import 'package:fluffychat/pangea/languages/language_model.dart'; -import 'package:fluffychat/pangea/languages/p_language_store.dart'; -import 'package:fluffychat/pangea/word_bank/vocab_request.dart'; -import 'package:fluffychat/pangea/word_bank/vocab_response.dart'; -import 'package:fluffychat/widgets/matrix.dart'; - -class VocabRepo { - static final GetStorage _lemmaStorage = GetStorage('vocab_storage'); - - static void set(VocabRequest request, VocabResponse response) { - // set expireAt if not set - response.expireAt ??= DateTime.now().add(const Duration(days: 100)); - _lemmaStorage.write(request.storageKey, response.toJson()); - } - - static Future get( - VocabRequest request, [ - bool useExpireAt = false, - ]) async { - try { - debugger(when: kDebugMode); - final cachedJson = _lemmaStorage.read(request.storageKey); - - final cached = - cachedJson == null ? null : VocabResponse.fromJson(cachedJson); - - if (cached != null) { - // at this point we have a cache without feedback - if (!useExpireAt) { - // return cache as is if we're not using expireAt - return cached; - } else if (cached.expireAt != null) { - if (DateTime.now().isBefore(cached.expireAt!)) { - // return cache as is if we're using expireAt and it's set but not expired - return cached; - } - } - } - - final Requests req = Requests( - choreoApiKey: Environment.choreoApiKey, - accessToken: MatrixState.pangeaController.userController.accessToken, - ); - - final Response res = await req.post( - url: PApiUrls.lemmaDictionary, - body: request.toJson(), - ); - - final decodedBody = jsonDecode(utf8.decode(res.bodyBytes)); - final response = VocabResponse.fromJson(decodedBody); - - set(request, response); - - return response; - } catch (err, stack) { - ErrorHandler.logError( - e: err, - s: stack, - data: { - "request": request.toJson(), - }, - ); - - return VocabRepo.placeholderData(); - } - } - - /// Preference previously used words if list is non-empty - /// Otherwise, pull from a set of starter words for each language - static Future getAllCandidateVocab( - VocabRequest request, - ) async { - final List myVocab = MatrixState - .pangeaController.getAnalytics.constructListModel - .constructList(type: ConstructTypeEnum.vocab) - .map((use) => use.id) - .toList(); - - final List vocabBank = - (await VocabRepo.get(request)).vocab; - - final List all = [...myVocab, ...vocabBank]; - - final deduped = all.toSet().toList(); - - return VocabResponse(vocab: deduped); - } - - static Future getSemanticallySimilarWords( - VocabRequest request, - ) async { - // Pull from a list of semantically similar words - // Either from - final candidates = (await VocabRepo.getAllCandidateVocab(request)).vocab; - - // we filter out words that do not share the same part of speech as the token - // TODO: semantic similarity is not implemented yet - final sharingPos = candidates - .where( - (element) => - (element.category.toLowerCase() == request.pos?.toLowerCase() && - element.lemma.toLowerCase() != request.lemma?.toLowerCase()), - ) - .toList(); - - // we prefer to return words that share the same part of speech as the token - // but if there are no words that share the same part of speech, we return all words - final similarWords = sharingPos.isEmpty ? candidates : sharingPos; - - return VocabResponse(vocab: similarWords); - } - - Future getSementicallyDisimiliarWords( - VocabRequest request, - ) async { - // Pull from previously used words if list is non-empty - // Otherwise, pull from a set of starter words for each language - final candidates = (await VocabRepo.getAllCandidateVocab(request)).vocab; - - final sharingPos = candidates - .where( - (element) => - element.category.toLowerCase() != request.pos?.toLowerCase() && - element.lemma.toLowerCase() != request.lemma?.toLowerCase(), - ) - .toList(); - - final disSimilarWords = sharingPos.isEmpty ? candidates : sharingPos; - - return VocabResponse(vocab: disSimilarWords); - } - - VocabResponse getWordPredictor(VocabRequest request) { - // Pull from previously used words if list is non-empty - // Otherwise, pull from a set of starter words for each language - - // Can we locally narrow down the candidate words to a smaller set based some simple rules? - // For example, if the user is learning a language with a different script, we can filter out words that are not in the target script - // we might be able to narrow it down based on a model that predicts the next morphological features/tags of a word, independent of language or context. - // This kind of model could be shared across languages, and could be used to predict the next word in a sentence, or the next morphological feature of a word. - // We could use this to go from the user's vocabularly list to a list of candidate words that are likely to be useful to the user. - - // we then use a server-side service, likely LLM but could be a simpler model, to rank the words based on the context, the previous words as well as previous two messages - // in the conversation - return VocabResponse(); - } - - static VocabResponse placeholderData([LanguageModel? language]) { - language ??= MatrixState.pangeaController.userController.userL2 == null - ? PLanguageStore.byLangCode(LanguageKeys.defaultLanguage) - : MatrixState.pangeaController.userController.userL2!; - - //TODO - move this to the server and fill out all our languages - final Map placeholder = { - "es": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "hola", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "adios", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "tarde", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "noche", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "dia", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "bueno", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "zh": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "你好", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "再见", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "下午", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "晚上", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "天", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "好", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "fr": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "bonjour", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "au revoir", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "après-midi", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "soir", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "jour", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "bon", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "de": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "hallo", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "auf wiedersehen", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "nachmittag", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "abend", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "tag", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "gut", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "en": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "hello", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "goodbye", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "afternoon", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "evening", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "day", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "good", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "it": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "ciao", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "arrivederci", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "pomeriggio", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "sera", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "giorno", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "buono", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "pt": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "oi", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "tchau", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "tarde", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "noite", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "dia", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "bom", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "ru": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "привет", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "до свидания", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "день", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "вечер", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "ночь", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "хороший", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "ja": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "こんにちは", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "さようなら", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "午後", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "夜", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "日", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "良い", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "ko": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "안녕하세요", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "안녕히 가세요", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "오후", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "밤", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "낮", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "좋은", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "ar": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "مرحبا", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "وداعا", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "مساء", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "ليل", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "يوم", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "جيد", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "hi": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "नमस्ते", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "अलविदा", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "दोपहर", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "रात", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "दिन", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "अच्छा", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "tr": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "merhaba", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "hoşça kal", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "öğleden sonra", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "akşam", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "gün", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "iyi", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "nl": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "hallo", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "tot ziens", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "middag", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "avond", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "dag", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "goed", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "pl": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "cześć", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "do widzenia", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "popołudnie", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "wieczór", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "dzień", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "dobry", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "sv": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "hej", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "hej då", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "eftermiddag", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "kväll", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "dag", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "bra", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "da": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "hej", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "farvel", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "eftermiddag", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "aften", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "dag", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "god", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "no": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "hei", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "ha det", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "ettermiddag", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "kveld", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "dag", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "god", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "fi": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "hei", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "hei hei", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "iltapäivä", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "ilta", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "päivä", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "hyvä", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "cs": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "ahoj", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "na shledanou", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "odpoledne", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "večer", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "den", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "dobrý", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "hu": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "szia", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "viszontlátásra", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "délután", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "este", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "nap", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "jó", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "ro": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "salut", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "la revedere", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "după-amiază", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "seară", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "zi", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "bun", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "el": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "γεια", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "αντίο", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "απόγευμα", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "βράδυ", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "ημέρα", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "καλό", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "bg": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "здравей", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "довиждане", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "следобед", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "вечер", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "ден", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "добър", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "uk": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "привіт", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "до побачення", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "після обіду", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "вечір", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "день", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "добрий", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "hr": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "zdravo", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "doviđenja", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "popodne", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "večer", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "dan", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "dobar", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "sr": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "здраво", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "довиђења", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "поподне", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "вече", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "дан", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "добар", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "bs": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "zdravo", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "doviđenja", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "popodne", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "veče", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "dan", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "dobar", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - "vi": VocabResponse( - vocab: [ - ConstructIdentifier( - lemma: "xin chào", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "tạm biệt", - category: "INTJ", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "buổi chiều", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "buổi tối", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "ngày", - category: "NOUN", - type: ConstructTypeEnum.vocab, - ), - ConstructIdentifier( - lemma: "tốt", - category: "ADJ", - type: ConstructTypeEnum.vocab, - ), - ], - ), - }; - - return placeholder[language!.langCodeShort]!; - } -} diff --git a/lib/pangea/word_bank/vocab_request.dart b/lib/pangea/word_bank/vocab_request.dart deleted file mode 100644 index 06935d152..000000000 --- a/lib/pangea/word_bank/vocab_request.dart +++ /dev/null @@ -1,68 +0,0 @@ -import 'package:fluffychat/pangea/learning_settings/language_level_type_enum.dart'; - -class VocabRequest { - String langCode; - LanguageLevelTypeEnum level; - String? prefix; - String? suffix; - String? lemma; - String? pos; - - int count; - - VocabRequest({ - required this.langCode, - required this.level, - this.lemma, - this.pos, - this.prefix, - this.suffix, - this.count = 10, - }); - - VocabRequest.fromJson(Map json) - : langCode = json['langCode'], - level = LanguageLevelTypeEnum.values[json['level']], - prefix = json['prefix'], - suffix = json['suffix'], - count = json['count'], - lemma = json['lemma'], - pos = json['pos']; - - Map toJson() => { - 'langCode': langCode, - 'level': level.index, - 'prefix': prefix, - 'suffix': suffix, - 'lemma': lemma, - 'pos': pos, - 'count': count, - }; - - String get storageKey => - '${langCode}_${level.index}_${prefix}_${suffix}_$count'; - - @override - operator ==(Object other) { - if (other is VocabRequest) { - return langCode == other.langCode && - level == other.level && - prefix == other.prefix && - suffix == other.suffix && - count == other.count && - lemma == other.lemma && - pos == other.pos; - } - return false; - } - - @override - int get hashCode => - langCode.hashCode ^ - level.hashCode ^ - prefix.hashCode ^ - suffix.hashCode ^ - count.hashCode ^ - lemma.hashCode ^ - pos.hashCode; -} diff --git a/lib/pangea/word_bank/vocab_response.dart b/lib/pangea/word_bank/vocab_response.dart deleted file mode 100644 index a66e4fe26..000000000 --- a/lib/pangea/word_bank/vocab_response.dart +++ /dev/null @@ -1,20 +0,0 @@ -import 'package:fluffychat/pangea/constructs/construct_identifier.dart'; - -class VocabResponse { - List vocab; - - DateTime? expireAt; - - VocabResponse({this.vocab = const []}) { - expireAt = DateTime.now().add(const Duration(days: 100)); - } - - VocabResponse.fromJson(Map json) - : vocab = (json['vocab'] as List) - .map((e) => ConstructIdentifier.fromJson(e)) - .toList(); - - Map toJson() => { - 'vocab': vocab.map((e) => e.toJson()).toList(), - }; -} diff --git a/lib/utils/url_launcher.dart b/lib/utils/url_launcher.dart index 102297718..00ef99abc 100644 --- a/lib/utils/url_launcher.dart +++ b/lib/utils/url_launcher.dart @@ -8,7 +8,7 @@ import 'package:url_launcher/url_launcher_string.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/l10n/l10n.dart'; -import 'package:fluffychat/pangea/public_spaces/public_room_bottom_sheet.dart'; +import 'package:fluffychat/pangea/chat_list/widgets/public_room_bottom_sheet.dart'; import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; import 'package:fluffychat/widgets/adaptive_dialogs/user_dialog.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; diff --git a/lib/widgets/layouts/two_column_layout.dart b/lib/widgets/layouts/two_column_layout.dart index 292c17d60..fec117765 100644 --- a/lib/widgets/layouts/two_column_layout.dart +++ b/lib/widgets/layouts/two_column_layout.dart @@ -10,7 +10,7 @@ import 'package:fluffychat/pages/settings/settings.dart'; import 'package:fluffychat/pangea/analytics_misc/construct_type_enum.dart'; import 'package:fluffychat/pangea/analytics_page/analytics_page.dart'; import 'package:fluffychat/pangea/analytics_summary/progress_indicators_enum.dart'; -import 'package:fluffychat/pangea/find_your_people/find_your_people_constants.dart'; +import 'package:fluffychat/pangea/spaces/space_constants.dart'; import 'package:fluffychat/widgets/navigation_rail.dart'; class TwoColumnLayout extends StatelessWidget { @@ -140,7 +140,7 @@ class _MainView extends StatelessWidget { width: 250.0, child: CachedNetworkImage( imageUrl: - "${AppConfig.assetsBaseURL}/${FindYourPeopleConstants.sideBearFileName}", + "${AppConfig.assetsBaseURL}/${SpaceConstants.sideBearFileName}", errorWidget: (context, url, error) => const SizedBox(), placeholder: (context, url) => const Center( child: CircularProgressIndicator.adaptive(), diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index 7411a8694..f45fc2b26 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -23,8 +23,8 @@ import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/common/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/common/utils/any_state_holder.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; +import 'package:fluffychat/pangea/join_codes/space_code_controller.dart'; import 'package:fluffychat/pangea/languages/locale_provider.dart'; -import 'package:fluffychat/pangea/spaces/space_code_controller.dart'; import 'package:fluffychat/utils/client_manager.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_file_extension.dart'; import 'package:fluffychat/utils/platform_infos.dart';