diff --git a/bot.py b/bot.py index e00a85b..e27d14b 100644 --- a/bot.py +++ b/bot.py @@ -2823,8 +2823,12 @@ async def cmd_settings(update: Update, context: ContextTypes.DEFAULT_TYPE): runtime = _ACTIVE_RUNTIME.get() product = runtime.store.product_profile(runtime.user_id) try: - product.update(runtime.store.get_mirror_preferences(runtime.user_id)) - product["mirror_mode"] = product.pop("mode") + preferences = runtime.store.get_mirror_preferences(runtime.user_id) + product.update({ + "mirror_mode": preferences["mode"], + "mirror_depth": preferences["depth"], + "mirror_level": preferences["level"], + }) except (AttributeError, TypeError, ValueError): pass locale = interface_locale_for_update(update) @@ -3145,8 +3149,12 @@ async def start_menu_cb(update: Update, context: ContextTypes.DEFAULT_TYPE): runtime = _ACTIVE_RUNTIME.get() product = runtime.store.product_profile(runtime.user_id) try: - product.update(runtime.store.get_mirror_preferences(runtime.user_id)) - product["mirror_mode"] = product.pop("mode") + preferences = runtime.store.get_mirror_preferences(runtime.user_id) + product.update({ + "mirror_mode": preferences["mode"], + "mirror_depth": preferences["depth"], + "mirror_level": preferences["level"], + }) except (AttributeError, TypeError, ValueError): pass mirror_policy = AdminStore(runtime.store).get_mirror_control_plane() @@ -3301,8 +3309,12 @@ async def settings_cb(update: Update, context: ContextTypes.DEFAULT_TYPE): translate("settings_unavailable", locale), show_alert=True ) return - product.update(runtime.store.get_mirror_preferences(runtime.user_id)) - product["mirror_mode"] = product.pop("mode") + preferences = runtime.store.get_mirror_preferences(runtime.user_id) + product.update({ + "mirror_mode": preferences["mode"], + "mirror_depth": preferences["depth"], + "mirror_level": preferences["level"], + }) await query.edit_message_text( settings_text(current, product, locale=locale, section=section), reply_markup=settings_keyboard( diff --git a/tests/test_telegram_settings_navigation_e2e_v1.py b/tests/test_telegram_settings_navigation_e2e_v1.py index 8c97639..18d95e9 100644 --- a/tests/test_telegram_settings_navigation_e2e_v1.py +++ b/tests/test_telegram_settings_navigation_e2e_v1.py @@ -278,6 +278,18 @@ async def test_saved_choices_remain_in_their_matching_sections(self): }, ) + async def test_selected_tutor_level_moves_checkmark_from_auto_to_b1(self): + query = await self.invoke_settings("settings:mirror-level:b1") + keyboard = query.edit_message_text.await_args.kwargs["reply_markup"] + + checked_callbacks = { + button.callback_data + for row in keyboard.inline_keyboard + for button in row + if button.text.endswith(" ✓") + } + self.assertEqual(checked_callbacks, {"settings:mirror-level:b1"}) + async def test_language_choice_is_handled_in_settings_and_stays_in_section(self): pack = bot.switchable_packs()[0] update, query = self.update_for(f"settings:language:{pack.pack_id}")