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,
|
||||
set_listen_port,
|
||||
)
|
||||
from core.logger import DialogType, Logger
|
||||
from core.logger import Logger
|
||||
from core.menus import Option
|
||||
from core.menus.base_menu import BaseMenu
|
||||
from core.services.message_service import Message
|
||||
from core.settings.kiauh_settings import KiauhSettings, WebUiSettings
|
||||
from core.types.color import Color
|
||||
from utils.sys_utils import cmd_sysctl_service, get_ipv4_addr
|
||||
@@ -85,16 +86,15 @@ class ClientInstallMenu(BaseMenu):
|
||||
cmd_sysctl_service("nginx", "start")
|
||||
|
||||
# noinspection HttpUrlsUsage
|
||||
Logger.print_dialog(
|
||||
DialogType.CUSTOM,
|
||||
custom_title="Port reconfiguration complete!",
|
||||
custom_color=Color.GREEN,
|
||||
center_content=True,
|
||||
content=[
|
||||
message = Message(
|
||||
title="Port reconfiguration complete!",
|
||||
text=[
|
||||
f"Open {self.client.display_name} now on: "
|
||||
f"http://{get_ipv4_addr()}:{new_port}",
|
||||
],
|
||||
color=Color.GREEN,
|
||||
)
|
||||
self.message_service.set_message(message)
|
||||
|
||||
def _get_current_port(self) -> int:
|
||||
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
|
||||
return int(self.client_settings.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.menus import FooterType, Option
|
||||
from core.services.message_service import MessageService
|
||||
from core.spinner import Spinner
|
||||
from core.types.color import Color
|
||||
from utils.input_utils import get_selection_input
|
||||
@@ -123,6 +124,8 @@ class BaseMenu(metaclass=PostInitCaller):
|
||||
help_menu: Type[BaseMenu] | None = None
|
||||
footer_type: FooterType = FooterType.BACK
|
||||
|
||||
message_service = MessageService()
|
||||
|
||||
def __init__(self, **kwargs) -> None:
|
||||
if type(self) is BaseMenu:
|
||||
raise NotImplementedError("BaseMenu cannot be instantiated directly.")
|
||||
@@ -207,8 +210,11 @@ class BaseMenu(metaclass=PostInitCaller):
|
||||
raise NotImplementedError("FooterType not correctly implemented!")
|
||||
|
||||
def __display_menu(self) -> None:
|
||||
self.message_service.display_message()
|
||||
|
||||
if self.header:
|
||||
print_header()
|
||||
|
||||
self.__print_menu_title()
|
||||
self.print_menu()
|
||||
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