fix addons config layout / fix selection handling

This commit is contained in:
Capybara-z
2026-01-22 00:04:43 +03:00
parent 12c1d5badb
commit 786e2d2288
3 changed files with 22 additions and 12 deletions
+4 -4
View File
@@ -273,11 +273,11 @@ async def render_addons_screen(callback: CallbackQuery, state: FSMContext, sessi
row.append(traffic_buttons[i]) row.append(traffic_buttons[i])
builder.row(*row) builder.row(*row)
elif device_buttons: elif device_buttons:
for button in device_buttons: for i in range(0, len(device_buttons), 2):
builder.row(button) builder.row(*device_buttons[i : i + 2])
elif traffic_buttons: elif traffic_buttons:
for button in traffic_buttons: for i in range(0, len(traffic_buttons), 2):
builder.row(button) builder.row(*traffic_buttons[i : i + 2])
if allow_downgrade and (devices_downgrade or traffic_downgrade): if allow_downgrade and (devices_downgrade or traffic_downgrade):
builder.row( builder.row(
+4 -4
View File
@@ -359,11 +359,11 @@ async def render_addons_screen(callback: CallbackQuery, state: FSMContext, sessi
row.append(traffic_buttons[i]) row.append(traffic_buttons[i])
builder.row(*row) builder.row(*row)
elif device_buttons: elif device_buttons:
for button in device_buttons: for i in range(0, len(device_buttons), 2):
builder.row(button) builder.row(*device_buttons[i : i + 2])
elif traffic_buttons: elif traffic_buttons:
for button in traffic_buttons: for i in range(0, len(traffic_buttons), 2):
builder.row(button) builder.row(*traffic_buttons[i : i + 2])
builder.row( builder.row(
InlineKeyboardButton( InlineKeyboardButton(
+14 -4
View File
@@ -498,11 +498,11 @@ async def render_user_config_screen(
row.append(traffic_buttons[i]) row.append(traffic_buttons[i])
builder.row(*row) builder.row(*row)
elif device_buttons: elif device_buttons:
for b in device_buttons: for i in range(0, len(device_buttons), 2):
builder.row(b) builder.row(*device_buttons[i : i + 2])
elif traffic_buttons: elif traffic_buttons:
for b in traffic_buttons: for i in range(0, len(traffic_buttons), 2):
builder.row(b) builder.row(*traffic_buttons[i : i + 2])
is_renew_mode = data.get("renew_mode") == "renew" is_renew_mode = data.get("renew_mode") == "renew"
confirm_prefix = "cfg_renew_confirm" if is_renew_mode else "cfg_user_confirm" confirm_prefix = "cfg_renew_confirm" if is_renew_mode else "cfg_user_confirm"
@@ -852,6 +852,11 @@ async def handle_user_devices_choice(callback: CallbackQuery, state: FSMContext,
_, _tariff_id_str, devices_str = callback.data.split("|", 2) _, _tariff_id_str, devices_str = callback.data.split("|", 2)
devices = int(devices_str) devices = int(devices_str)
current = (await state.get_data()).get("config_selected_device_limit")
if current is not None and int(current) == devices:
await callback.answer()
return
await state.update_data(config_selected_device_limit=devices) await state.update_data(config_selected_device_limit=devices)
await render_user_config_screen(callback, state, session) await render_user_config_screen(callback, state, session)
@@ -865,6 +870,11 @@ async def handle_user_traffic_choice(callback: CallbackQuery, state: FSMContext,
_, _tariff_id_str, traffic_str = callback.data.split("|", 2) _, _tariff_id_str, traffic_str = callback.data.split("|", 2)
traffic = int(traffic_str) traffic = int(traffic_str)
current = (await state.get_data()).get("config_selected_traffic_gb")
if current is not None and int(current) == traffic:
await callback.answer()
return
await state.update_data(config_selected_traffic_gb=traffic) await state.update_data(config_selected_traffic_gb=traffic)
await render_user_config_screen(callback, state, session=session) await render_user_config_screen(callback, state, session=session)