Skip to content

Commit

Permalink
Merge pull request #354 from lubaskinc0de/develop
Browse files Browse the repository at this point in the history
provide support for ShowMode in SwitchTo and Cancel widgets #350
  • Loading branch information
Tishka17 committed Feb 2, 2024
2 parents 3f3444b + 779c27f commit 9c855ad
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions src/aiogram_dialog/widgets/kbd/state.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
from aiogram.fsm.state import State
from aiogram.types import CallbackQuery

from aiogram_dialog.api.entities import ChatEvent, Data, StartMode
from aiogram_dialog.api.entities import ChatEvent, Data, ShowMode, StartMode
from aiogram_dialog.api.protocols import DialogManager
from aiogram_dialog.widgets.common import WhenCondition
from aiogram_dialog.widgets.kbd.button import Button, OnClick
from aiogram_dialog.widgets.text import Const, Text
from aiogram_dialog.widgets.widget_event import WidgetEventProcessor
from .button import Button, OnClick

BACK_TEXT = Const("Back")
NEXT_TEXT = Const("Next")
Expand Down Expand Up @@ -41,6 +41,7 @@ def __init__(
state: State,
on_click: Optional[OnClick] = None,
when: WhenCondition = None,
show_mode: Optional[ShowMode] = None,
):
super().__init__(
text=text, on_click=self._on_click,
Expand All @@ -49,14 +50,15 @@ def __init__(
self.text = text
self.user_on_click = on_click
self.state = state
self.show_mode = show_mode

async def _on_click(
self, callback: CallbackQuery, button: Button,
manager: DialogManager,
):
if self.user_on_click:
await self.user_on_click(callback, self, manager)
await manager.switch_to(self.state)
await manager.switch_to(self.state, show_mode=self.show_mode)


class Next(EventProcessorButton):
Expand Down Expand Up @@ -117,6 +119,7 @@ def __init__(
result: Any = None,
on_click: Optional[OnClick] = None,
when: WhenCondition = None,
show_mode: Optional[ShowMode] = None,
):
super().__init__(
text=text, on_click=self._on_click,
Expand All @@ -125,14 +128,15 @@ def __init__(
self.text = text
self.result = result
self.user_on_click = on_click
self.show_mode = show_mode

async def _on_click(
self, callback: CallbackQuery, button: Button,
manager: DialogManager,
):
if self.user_on_click:
await self.user_on_click(callback, self, manager)
await manager.done(self.result)
await manager.done(self.result, show_mode=self.show_mode)


class Start(EventProcessorButton):
Expand Down

0 comments on commit 9c855ad

Please sign in to comment.