mirror of
https://github.com/dw-0/kiauh.git
synced 2025-12-17 20:44:28 +05:00
feat: implement message service
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
@@ -18,9 +18,10 @@ from components.webui_client.client_utils import (
|
|||||||
get_nginx_listen_port,
|
get_nginx_listen_port,
|
||||||
set_listen_port,
|
set_listen_port,
|
||||||
)
|
)
|
||||||
from core.logger import DialogType, Logger
|
from core.logger import Logger
|
||||||
from core.menus import Option
|
from core.menus import Option
|
||||||
from core.menus.base_menu import BaseMenu
|
from core.menus.base_menu import BaseMenu
|
||||||
|
from core.services.message_service import Message
|
||||||
from core.settings.kiauh_settings import KiauhSettings, WebUiSettings
|
from core.settings.kiauh_settings import KiauhSettings, WebUiSettings
|
||||||
from core.types.color import Color
|
from core.types.color import Color
|
||||||
from utils.sys_utils import cmd_sysctl_service, get_ipv4_addr
|
from utils.sys_utils import cmd_sysctl_service, get_ipv4_addr
|
||||||
@@ -85,16 +86,15 @@ class ClientInstallMenu(BaseMenu):
|
|||||||
cmd_sysctl_service("nginx", "start")
|
cmd_sysctl_service("nginx", "start")
|
||||||
|
|
||||||
# noinspection HttpUrlsUsage
|
# noinspection HttpUrlsUsage
|
||||||
Logger.print_dialog(
|
message = Message(
|
||||||
DialogType.CUSTOM,
|
title="Port reconfiguration complete!",
|
||||||
custom_title="Port reconfiguration complete!",
|
text=[
|
||||||
custom_color=Color.GREEN,
|
|
||||||
center_content=True,
|
|
||||||
content=[
|
|
||||||
f"Open {self.client.display_name} now on: "
|
f"Open {self.client.display_name} now on: "
|
||||||
f"http://{get_ipv4_addr()}:{new_port}",
|
f"http://{get_ipv4_addr()}:{new_port}",
|
||||||
],
|
],
|
||||||
|
color=Color.GREEN,
|
||||||
)
|
)
|
||||||
|
self.message_service.set_message(message)
|
||||||
|
|
||||||
def _get_current_port(self) -> int:
|
def _get_current_port(self) -> int:
|
||||||
curr_port = get_nginx_listen_port(self.client.nginx_config)
|
curr_port = get_nginx_listen_port(self.client.nginx_config)
|
||||||
@@ -103,7 +103,3 @@ class ClientInstallMenu(BaseMenu):
|
|||||||
# the default port from the kiauh settings as fallback
|
# the default port from the kiauh settings as fallback
|
||||||
return int(self.client_settings.port)
|
return int(self.client_settings.port)
|
||||||
return curr_port
|
return curr_port
|
||||||
|
|
||||||
def _go_back(self, **kwargs) -> None:
|
|
||||||
if self.previous_menu is not None:
|
|
||||||
self.previous_menu().run()
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ from typing import Dict, Type
|
|||||||
|
|
||||||
from core.logger import Logger
|
from core.logger import Logger
|
||||||
from core.menus import FooterType, Option
|
from core.menus import FooterType, Option
|
||||||
|
from core.services.message_service import MessageService
|
||||||
from core.spinner import Spinner
|
from core.spinner import Spinner
|
||||||
from core.types.color import Color
|
from core.types.color import Color
|
||||||
from utils.input_utils import get_selection_input
|
from utils.input_utils import get_selection_input
|
||||||
@@ -123,6 +124,8 @@ class BaseMenu(metaclass=PostInitCaller):
|
|||||||
help_menu: Type[BaseMenu] | None = None
|
help_menu: Type[BaseMenu] | None = None
|
||||||
footer_type: FooterType = FooterType.BACK
|
footer_type: FooterType = FooterType.BACK
|
||||||
|
|
||||||
|
message_service = MessageService()
|
||||||
|
|
||||||
def __init__(self, **kwargs) -> None:
|
def __init__(self, **kwargs) -> None:
|
||||||
if type(self) is BaseMenu:
|
if type(self) is BaseMenu:
|
||||||
raise NotImplementedError("BaseMenu cannot be instantiated directly.")
|
raise NotImplementedError("BaseMenu cannot be instantiated directly.")
|
||||||
@@ -207,8 +210,11 @@ class BaseMenu(metaclass=PostInitCaller):
|
|||||||
raise NotImplementedError("FooterType not correctly implemented!")
|
raise NotImplementedError("FooterType not correctly implemented!")
|
||||||
|
|
||||||
def __display_menu(self) -> None:
|
def __display_menu(self) -> None:
|
||||||
|
self.message_service.display_message()
|
||||||
|
|
||||||
if self.header:
|
if self.header:
|
||||||
print_header()
|
print_header()
|
||||||
|
|
||||||
self.__print_menu_title()
|
self.__print_menu_title()
|
||||||
self.print_menu()
|
self.print_menu()
|
||||||
self.__print_footer()
|
self.__print_footer()
|
||||||
|
|||||||
0
kiauh/core/services/__init__.py
Normal file
0
kiauh/core/services/__init__.py
Normal file
57
kiauh/core/services/message_service.py
Normal file
57
kiauh/core/services/message_service.py
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# ======================================================================= #
|
||||||
|
# Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
|
||||||
|
# #
|
||||||
|
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||||
|
# https://github.com/dw-0/kiauh #
|
||||||
|
# #
|
||||||
|
# This file may be distributed under the terms of the GNU GPLv3 license #
|
||||||
|
# ======================================================================= #
|
||||||
|
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
from core.logger import DialogType, Logger
|
||||||
|
from core.types.color import Color
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass()
|
||||||
|
class Message:
|
||||||
|
title: str
|
||||||
|
text: List[str]
|
||||||
|
color: Color
|
||||||
|
|
||||||
|
|
||||||
|
class MessageService:
|
||||||
|
_instance = None
|
||||||
|
|
||||||
|
def __new__(cls) -> "MessageService":
|
||||||
|
if cls._instance is None:
|
||||||
|
cls._instance = super(MessageService, cls).__new__(cls)
|
||||||
|
return cls._instance
|
||||||
|
|
||||||
|
def __init__(self) -> None:
|
||||||
|
if not hasattr(self, "__initialized"):
|
||||||
|
self.__initialized = False
|
||||||
|
if self.__initialized:
|
||||||
|
return
|
||||||
|
self.__initialized = True
|
||||||
|
self.message = None
|
||||||
|
|
||||||
|
def set_message(self, message: Message) -> None:
|
||||||
|
self.message = message
|
||||||
|
|
||||||
|
def display_message(self) -> None:
|
||||||
|
if self.message is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
Logger.print_dialog(
|
||||||
|
title=DialogType.CUSTOM,
|
||||||
|
content=self.message.text,
|
||||||
|
custom_title=self.message.title,
|
||||||
|
custom_color=self.message.color,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.__clear_message()
|
||||||
|
|
||||||
|
def __clear_message(self) -> None:
|
||||||
|
self.message = None
|
||||||
Reference in New Issue
Block a user