Source code for mailos.ui.display
"""UI display functions."""
from pywebio.output import clear, put_markdown, use_scope
from mailos.ui.actions import handle_checker_action, handle_global_control
from mailos.ui.checker_form import create_checker_form
from mailos.ui.checker_list import display_checker, display_checker_controls
from mailos.utils.config_utils import load_config
[docs]
def display_checkers(config, save_checker=None):
"""Display configured email checkers."""
if not config["checkers"]:
put_markdown("### No email checkers configured yet")
return
put_markdown("### Configured Email Checkers")
def on_filter_change(value):
clear("checker_list")
with use_scope("checker_list"):
for checker in config["checkers"]:
display_checker(
checker,
lambda checker_id, action: handle_checker_action(
checker_id,
action,
edit_callback=lambda x: create_checker_form(x, save_checker),
refresh_callback=lambda: refresh_display(save_checker),
),
status_filter=value,
)
# Add handler for global controls and filter
display_checker_controls(
lambda action: handle_global_control(
action, lambda: refresh_display(save_checker)
),
on_filter=on_filter_change,
)
# Initial display
with use_scope("checker_list"):
for checker in config["checkers"]:
display_checker(
checker,
lambda checker_id, action: handle_checker_action(
checker_id,
action,
edit_callback=lambda x: create_checker_form(x, save_checker),
refresh_callback=lambda: refresh_display(save_checker),
),
)
put_markdown("---")
[docs]
def refresh_display(save_checker=None):
"""Refresh the display of configured email checkers."""
config = load_config()
clear("checkers")
with use_scope("checkers"):
display_checkers(config, save_checker)