Provide a developer mode when running ktem (#135)

Implement and utilize `on_app_created` to support the developer mode.
This commit is contained in:
Duc Nguyen (john)
2024-01-23 11:46:59 +07:00
committed by GitHub
parent 2dd531114f
commit ebc61400d8
4 changed files with 109 additions and 80 deletions

View File

@@ -34,6 +34,8 @@ class BaseApp:
"""
def __init__(self):
self.dev_mode = getattr(settings, "KH_MODE", "") == "dev"
dir_assets = Path(__file__).parent / "assets"
with (dir_assets / "css" / "main.css").open() as fi:
self._css = fi.read()
@@ -56,7 +58,7 @@ class BaseApp:
self.default_settings.index.finalize()
self.settings_state = gr.State(self.default_settings.flatten())
self.user_id = gr.State(None)
self.user_id = gr.State(1 if self.dev_mode else None)
def register_indices(self):
"""Register the index components from app settings"""
@@ -155,6 +157,10 @@ class BaseApp:
if isinstance(value, BasePage):
value.register_events()
for value in self.__dict__.values():
if isinstance(value, BasePage):
value.on_app_created()
demo.load(lambda: None, None, None, js=f"() => {{{self._js}}}")
return demo
@@ -177,6 +183,9 @@ class BasePage:
def on_register_events(self):
"""Register all events to the app"""
def _on_app_created(self):
"""Called when the app is created"""
def declare_public_events(self):
"""Declare an event for the app"""
for event in self.public_events:
@@ -199,3 +208,10 @@ class BasePage:
for value in self.__dict__.values():
if isinstance(value, BasePage):
value.register_events()
def on_app_created(self):
"""Execute on app created callbacks"""
self._on_app_created()
for value in self.__dict__.values():
if isinstance(value, BasePage):
value.on_app_created()