Add livekit config option

This commit is contained in:
Jon Staab
2026-03-03 11:45:57 -08:00
parent 0482c2710a
commit 01d9d3bd05
9 changed files with 45 additions and 2 deletions
+1
View File
@@ -6,6 +6,7 @@ pub struct RelayConfig {
pub groups: Option<serde_json::Value>, pub groups: Option<serde_json::Value>,
pub management: Option<serde_json::Value>, pub management: Option<serde_json::Value>,
pub blossom: Option<serde_json::Value>, pub blossom: Option<serde_json::Value>,
pub livekit: Option<serde_json::Value>,
pub push: Option<serde_json::Value>, pub push: Option<serde_json::Value>,
} }
+8
View File
@@ -42,6 +42,7 @@ impl Provisioner {
let url = format!("{}/relay/{}", self.base_url.trim_end_matches('/'), relay.id); let url = format!("{}/relay/{}", self.base_url.trim_end_matches('/'), relay.id);
let blossom_default = relay.plan != "free"; let blossom_default = relay.plan != "free";
let livekit_default = relay.plan != "free";
let cfg = relay.config.as_ref(); let cfg = relay.config.as_ref();
let host = format!("{}.{}", relay.subdomain, self.relay_domain); let host = format!("{}.{}", relay.subdomain, self.relay_domain);
let secret = generate_secret_hex(); let secret = generate_secret_hex();
@@ -72,6 +73,9 @@ impl Provisioner {
"blossom": { "blossom": {
"enabled": cfg_bool(cfg, |c| &c.blossom, "enabled", blossom_default), "enabled": cfg_bool(cfg, |c| &c.blossom, "enabled", blossom_default),
}, },
"livekit": {
"enabled": cfg_bool(cfg, |c| &c.livekit, "enabled", livekit_default),
},
"roles": { "roles": {
"member": { "pubkeys": [], "can_invite": true, "can_manage": false } "member": { "pubkeys": [], "can_invite": true, "can_manage": false }
}, },
@@ -102,6 +106,7 @@ impl Provisioner {
let url = format!("{}/relay/{}", self.base_url.trim_end_matches('/'), relay.id); let url = format!("{}/relay/{}", self.base_url.trim_end_matches('/'), relay.id);
let host = format!("{}.{}", relay.subdomain, self.relay_domain); let host = format!("{}.{}", relay.subdomain, self.relay_domain);
let blossom_default = relay.plan != "free"; let blossom_default = relay.plan != "free";
let livekit_default = relay.plan != "free";
let cfg = relay.config.as_ref(); let cfg = relay.config.as_ref();
let patch = json!({ let patch = json!({
"host": host, "host": host,
@@ -127,6 +132,9 @@ impl Provisioner {
"blossom": { "blossom": {
"enabled": cfg_bool(cfg, |c| &c.blossom, "enabled", blossom_default), "enabled": cfg_bool(cfg, |c| &c.blossom, "enabled", blossom_default),
}, },
"livekit": {
"enabled": cfg_bool(cfg, |c| &c.livekit, "enabled", livekit_default),
},
}); });
let auth = self.build_auth_header(&url, HttpMethod::PATCH).await?; let auth = self.build_auth_header(&url, HttpMethod::PATCH).await?;
+3 -2
View File
@@ -84,6 +84,7 @@ type RelayDetailCardProps = {
onToggleGroups?: () => void onToggleGroups?: () => void
onToggleManagement?: () => void onToggleManagement?: () => void
onToggleMediaStorage?: () => void onToggleMediaStorage?: () => void
onToggleLivekitSupport?: () => void
onTogglePushNotifications?: () => void onTogglePushNotifications?: () => void
} }
@@ -246,7 +247,7 @@ export default function RelayDetailCard(props: RelayDetailCardProps) {
/> />
</Show> </Show>
</ToggleField> </ToggleField>
<ToggleField label="Audio Rooms"> <ToggleField label="LiveKit support">
<Show <Show
when={r().plan !== "free"} when={r().plan !== "free"}
fallback={ fallback={
@@ -260,7 +261,7 @@ export default function RelayDetailCard(props: RelayDetailCardProps) {
> >
<ToggleButton <ToggleButton
enabled={cfg()?.livekit.enabled ?? true} enabled={cfg()?.livekit.enabled ?? true}
onToggle={props.onToggleMediaStorage} onToggle={props.onToggleLivekitSupport}
/> />
</Show> </Show>
</ToggleField> </ToggleField>
+3
View File
@@ -104,6 +104,9 @@ export type RelayConfig = {
blossom: { blossom: {
enabled: boolean enabled: boolean
} }
livekit: {
enabled: boolean
}
push: { push: {
enabled: boolean enabled: boolean
} }
@@ -45,6 +45,9 @@ export default function AdminRelayDetail() {
blossom: { blossom: {
enabled: config?.blossom.enabled ?? (relay()?.plan !== "free"), enabled: config?.blossom.enabled ?? (relay()?.plan !== "free"),
}, },
livekit: {
enabled: config?.livekit.enabled ?? (relay()?.plan !== "free"),
},
push: { push: {
enabled: config?.push.enabled ?? true, enabled: config?.push.enabled ?? true,
}, },
@@ -131,6 +134,15 @@ export default function AdminRelayDetail() {
void updateFlags(nextConfig, config) void updateFlags(nextConfig, config)
} }
function toggleLivekitSupport() {
const config = withDefaults(relay()?.config)
const nextConfig = {
...config,
livekit: { enabled: !config.livekit.enabled },
}
void updateFlags(nextConfig, config)
}
return ( return (
<PageContainer> <PageContainer>
<BackLink href="/admin/relays" label="Relays" /> <BackLink href="/admin/relays" label="Relays" />
@@ -157,6 +169,7 @@ export default function AdminRelayDetail() {
onToggleGroups={toggleGroups} onToggleGroups={toggleGroups}
onToggleManagement={toggleManagement} onToggleManagement={toggleManagement}
onToggleMediaStorage={toggleMediaStorage} onToggleMediaStorage={toggleMediaStorage}
onToggleLivekitSupport={toggleLivekitSupport}
onTogglePushNotifications={togglePushNotifications} onTogglePushNotifications={togglePushNotifications}
/> />
</div> </div>
@@ -13,6 +13,7 @@ const DEFAULT_CONFIG: RelayConfig = {
groups: { enabled: false, auto_join: false }, groups: { enabled: false, auto_join: false },
management: { enabled: false }, management: { enabled: false },
blossom: { enabled: false }, blossom: { enabled: false },
livekit: { enabled: false },
push: { enabled: false }, push: { enabled: false },
} }
+13
View File
@@ -50,6 +50,9 @@ export default function RelayDetail() {
blossom: { blossom: {
enabled: config?.blossom.enabled ?? (relay()?.plan !== "free"), enabled: config?.blossom.enabled ?? (relay()?.plan !== "free"),
}, },
livekit: {
enabled: config?.livekit.enabled ?? (relay()?.plan !== "free"),
},
push: { push: {
enabled: config?.push.enabled ?? true, enabled: config?.push.enabled ?? true,
}, },
@@ -132,6 +135,15 @@ export default function RelayDetail() {
void updateFlags(nextConfig, config) void updateFlags(nextConfig, config)
} }
function toggleLivekitSupport() {
const config = withDefaults(relay()?.config)
const nextConfig = {
...config,
livekit: { enabled: !config.livekit.enabled },
}
void updateFlags(nextConfig, config)
}
return ( return (
<PageContainer> <PageContainer>
<BackLink href="/relays" label="Relays" /> <BackLink href="/relays" label="Relays" />
@@ -158,6 +170,7 @@ export default function RelayDetail() {
onToggleGroups={toggleGroups} onToggleGroups={toggleGroups}
onToggleManagement={toggleManagement} onToggleManagement={toggleManagement}
onToggleMediaStorage={toggleMediaStorage} onToggleMediaStorage={toggleMediaStorage}
onToggleLivekitSupport={toggleLivekitSupport}
onTogglePushNotifications={togglePushNotifications} onTogglePushNotifications={togglePushNotifications}
/> />
</div> </div>
+1
View File
@@ -13,6 +13,7 @@ const DEFAULT_CONFIG: RelayConfig = {
groups: { enabled: false, auto_join: false }, groups: { enabled: false, auto_join: false },
management: { enabled: false }, management: { enabled: false },
blossom: { enabled: false }, blossom: { enabled: false },
livekit: { enabled: false },
push: { enabled: false }, push: { enabled: false },
} }
+2
View File
@@ -16,6 +16,7 @@ const DEFAULT_CONFIG: RelayConfig = {
groups: { enabled: true, auto_join: true }, groups: { enabled: true, auto_join: true },
management: { enabled: true }, management: { enabled: true },
blossom: { enabled: false }, blossom: { enabled: false },
livekit: { enabled: false },
push: { enabled: true }, push: { enabled: true },
} }
@@ -51,6 +52,7 @@ export default function RelayNew() {
config: { config: {
...DEFAULT_CONFIG, ...DEFAULT_CONFIG,
blossom: { enabled: plan() !== "free" }, blossom: { enabled: plan() !== "free" },
livekit: { enabled: plan() !== "free" },
}, },
}) })
navigate(`/relays/${relay.id}`) navigate(`/relays/${relay.id}`)