diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-08-29 18:55:42 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-08-29 18:55:42 +0200 |
| commit | a2215bb071c4e1ce11c616d26df8fd4e7a8fdf57 (patch) | |
| tree | de2969394d8673194d219b22c4af0dd7faef2d10 /packages/meshbay-node/src/meshbay_node/roster.py | |
| parent | c37fe3047367f401765351e5aca73f8f0ed6810c (diff) | |
| parent | 1f8a52484412b48205e5ff6aac506428e2fb77ed (diff) | |
| download | meshbay-a2215bb071c4e1ce11c616d26df8fd4e7a8fdf57.tar.gz | |
Merge remote-tracking branch 'origin/main'
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/roster.py')
| -rw-r--r-- | packages/meshbay-node/src/meshbay_node/roster.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/roster.py b/packages/meshbay-node/src/meshbay_node/roster.py index ff5282d..cf0d421 100644 --- a/packages/meshbay-node/src/meshbay_node/roster.py +++ b/packages/meshbay-node/src/meshbay_node/roster.py @@ -754,6 +754,41 @@ class Roster: str(float(debounce_secs)), set_by) return await self.scan_settings(group_id) + # ── Node-wide daemon settings ─────────────────────────────────────────── + # Same pattern as TMDB config: stored under NODE_WIDE_GROUP_ID. + # On startup, node.toml values are the defaults; the roster override + # takes precedence at runtime. Changing a setting writes to both + # roster.db (immediate) and node.toml (survives a DB wipe). + SETTING_INVITE_TTL = "invite_ttl_hours" + SETTING_PAIR_TTL = "pair_ttl_hours" + SETTING_DEVICE_TTL = "device_request_ttl_minutes" + SETTING_MAX_STREAMS = "max_concurrent_streams" + SETTING_TRANSCODE = "transcode_incompatible_video" + + async def node_settings(self, defaults: dict) -> dict: + """Current effective settings: roster override if present, else config default.""" + result = {} + for key, setting in [ + ("invite_ttl_hours", self.SETTING_INVITE_TTL), + ("pair_ttl_hours", self.SETTING_PAIR_TTL), + ("device_request_ttl_minutes", self.SETTING_DEVICE_TTL), + ("max_concurrent_streams", self.SETTING_MAX_STREAMS), + ("transcode_incompatible_video", self.SETTING_TRANSCODE), + ]: + stored = await self.get_setting(self.NODE_WIDE_GROUP_ID, setting) + if stored is not None: + if key == "transcode_incompatible_video": + result[key] = stored != "0" + else: + result[key] = int(stored) + else: + result[key] = defaults.get(key) + return result + + async def set_node_setting(self, key: str, value: str, + set_by: str = "") -> None: + await self.set_setting(self.NODE_WIDE_GROUP_ID, key, value, set_by) + async def create_invite( self, group_id: str, |