Fix runtime config update by Server Options panel.
This commit is contained in:
@@ -29,3 +29,31 @@ def _load_config() -> "RuntimeConfig | None":
|
||||
return None
|
||||
|
||||
return msgspec.json.decode(config_json.encode(), type=RuntimeConfig)
|
||||
|
||||
|
||||
def update_runtime_config(new_config: Config) -> None:
|
||||
"""Update the runtime configuration with a new Config and refresh the cache."""
|
||||
current_runtime = _load_config()
|
||||
if not current_runtime:
|
||||
return # No runtime config to update
|
||||
|
||||
# Recompute site_url and site_path based on new config
|
||||
site_path = "/" if new_config.auth_host else "/auth/"
|
||||
if new_config.auth_host:
|
||||
site_url = new_config.auth_host
|
||||
elif new_config.origins:
|
||||
site_url = new_config.origins[0]
|
||||
else:
|
||||
# Keep current site_url if no auth_host and no origins
|
||||
site_url = current_runtime.site_url
|
||||
|
||||
new_runtime = RuntimeConfig(
|
||||
config=new_config,
|
||||
site_url=site_url,
|
||||
site_path=site_path,
|
||||
save=current_runtime.save,
|
||||
)
|
||||
os.environ["PASKIA_CONFIG"] = msgspec.json.encode(new_runtime).decode()
|
||||
|
||||
# Clear the cache so next access loads the updated config
|
||||
_load_config.cache_clear()
|
||||
|
||||
Reference in New Issue
Block a user