From d3629bcf634261dddf10dfa96c49ecb247b2f531 Mon Sep 17 00:00:00 2001 From: BarsTiger Date: Fri, 12 May 2023 17:16:33 +0300 Subject: [PATCH] Logging out works --- modules/menu/callbacks/delete/__init__.py | 1 + modules/menu/callbacks/delete/callbacks.py | 18 ++++++++++++++++++ modules/menu/dynamic/delete/__init__.py | 1 + modules/menu/dynamic/delete/submenu.py | 13 +++++++++++++ modules/menu/items/manage/fields.py | 4 +++- 5 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 modules/menu/callbacks/delete/__init__.py create mode 100644 modules/menu/callbacks/delete/callbacks.py create mode 100644 modules/menu/dynamic/delete/submenu.py diff --git a/modules/menu/callbacks/delete/__init__.py b/modules/menu/callbacks/delete/__init__.py new file mode 100644 index 0000000..2e908f7 --- /dev/null +++ b/modules/menu/callbacks/delete/__init__.py @@ -0,0 +1 @@ +from .callbacks import log_out_callback diff --git a/modules/menu/callbacks/delete/callbacks.py b/modules/menu/callbacks/delete/callbacks.py new file mode 100644 index 0000000..e5cc042 --- /dev/null +++ b/modules/menu/callbacks/delete/callbacks.py @@ -0,0 +1,18 @@ +from modules.decorators.callback import async_callback +from modules.client import GeneratedClient +from modules.config import sessions +from rich import print + + +@async_callback +async def log_out_callback(session_name: str): + if input('Do you really want to log out? If you don\'t have access to phone number or you are not logged in ' + 'on other devices/clients, you will loose your account! (y/N) ') not in ['y', 'Y']: + return + print('Logging out...') + await (client := GeneratedClient(name=session_name)).start() + await client.log_out() + del sessions[session_name] + + print(f'[green]Logged out[/] from {session_name}. Go back in menu to update interface...') + input() diff --git a/modules/menu/dynamic/delete/__init__.py b/modules/menu/dynamic/delete/__init__.py index e69de29..3c1382e 100644 --- a/modules/menu/dynamic/delete/__init__.py +++ b/modules/menu/dynamic/delete/__init__.py @@ -0,0 +1 @@ +from .submenu import get_submenu_item diff --git a/modules/menu/dynamic/delete/submenu.py b/modules/menu/dynamic/delete/submenu.py new file mode 100644 index 0000000..2e446db --- /dev/null +++ b/modules/menu/dynamic/delete/submenu.py @@ -0,0 +1,13 @@ +from cursesmenu import CursesMenu +from modules.custom_items.DynamicSubmenu import DynamicSubmenuItem +from ..common_generators.valid_sessions_generator import generate_sessions_list +from ...callbacks.delete.callbacks import log_out_callback + + +def get_submenu_item(parent_menu: CursesMenu): + return DynamicSubmenuItem( + text='Delete sessions (log out)', + generator=generate_sessions_list, + args=['Log out from', log_out_callback], + menu=parent_menu + ) diff --git a/modules/menu/items/manage/fields.py b/modules/menu/items/manage/fields.py index b0941e8..9294e1a 100644 --- a/modules/menu/items/manage/fields.py +++ b/modules/menu/items/manage/fields.py @@ -1,9 +1,11 @@ from cursesmenu import CursesMenu from ...dynamic import update +from ...dynamic import delete def get_items_list(menu: CursesMenu): _ = [ - update.get_submenu_item + update.get_submenu_item, + delete.get_submenu_item ] return [x(menu) for x in _]