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 management: Option<serde_json::Value>,
pub blossom: Option<serde_json::Value>,
pub livekit: 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 blossom_default = relay.plan != "free";
let livekit_default = relay.plan != "free";
let cfg = relay.config.as_ref();
let host = format!("{}.{}", relay.subdomain, self.relay_domain);
let secret = generate_secret_hex();
@@ -72,6 +73,9 @@ impl Provisioner {
"blossom": {
"enabled": cfg_bool(cfg, |c| &c.blossom, "enabled", blossom_default),
},
"livekit": {
"enabled": cfg_bool(cfg, |c| &c.livekit, "enabled", livekit_default),
},
"roles": {
"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 host = format!("{}.{}", relay.subdomain, self.relay_domain);
let blossom_default = relay.plan != "free";
let livekit_default = relay.plan != "free";
let cfg = relay.config.as_ref();
let patch = json!({
"host": host,
@@ -127,6 +132,9 @@ impl Provisioner {
"blossom": {
"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?;
+3 -2
View File
@@ -84,6 +84,7 @@ type RelayDetailCardProps = {
onToggleGroups?: () => void
onToggleManagement?: () => void
onToggleMediaStorage?: () => void
onToggleLivekitSupport?: () => void
onTogglePushNotifications?: () => void
}
@@ -246,7 +247,7 @@ export default function RelayDetailCard(props: RelayDetailCardProps) {
/>
</Show>
</ToggleField>
<ToggleField label="Audio Rooms">
<ToggleField label="LiveKit support">
<Show
when={r().plan !== "free"}
fallback={
@@ -260,7 +261,7 @@ export default function RelayDetailCard(props: RelayDetailCardProps) {
>
<ToggleButton
enabled={cfg()?.livekit.enabled ?? true}
onToggle={props.onToggleMediaStorage}
onToggle={props.onToggleLivekitSupport}
/>
</Show>
</ToggleField>
+3
View File
@@ -104,6 +104,9 @@ export type RelayConfig = {
blossom: {
enabled: boolean
}
livekit: {
enabled: boolean
}
push: {
enabled: boolean
}
@@ -45,6 +45,9 @@ export default function AdminRelayDetail() {
blossom: {
enabled: config?.blossom.enabled ?? (relay()?.plan !== "free"),
},
livekit: {
enabled: config?.livekit.enabled ?? (relay()?.plan !== "free"),
},
push: {
enabled: config?.push.enabled ?? true,
},
@@ -131,6 +134,15 @@ export default function AdminRelayDetail() {
void updateFlags(nextConfig, config)
}
function toggleLivekitSupport() {
const config = withDefaults(relay()?.config)
const nextConfig = {
...config,
livekit: { enabled: !config.livekit.enabled },
}
void updateFlags(nextConfig, config)
}
return (
<PageContainer>
<BackLink href="/admin/relays" label="Relays" />
@@ -157,6 +169,7 @@ export default function AdminRelayDetail() {
onToggleGroups={toggleGroups}
onToggleManagement={toggleManagement}
onToggleMediaStorage={toggleMediaStorage}
onToggleLivekitSupport={toggleLivekitSupport}
onTogglePushNotifications={togglePushNotifications}
/>
</div>
@@ -13,6 +13,7 @@ const DEFAULT_CONFIG: RelayConfig = {
groups: { enabled: false, auto_join: false },
management: { enabled: false },
blossom: { enabled: false },
livekit: { enabled: false },
push: { enabled: false },
}
+13
View File
@@ -50,6 +50,9 @@ export default function RelayDetail() {
blossom: {
enabled: config?.blossom.enabled ?? (relay()?.plan !== "free"),
},
livekit: {
enabled: config?.livekit.enabled ?? (relay()?.plan !== "free"),
},
push: {
enabled: config?.push.enabled ?? true,
},
@@ -132,6 +135,15 @@ export default function RelayDetail() {
void updateFlags(nextConfig, config)
}
function toggleLivekitSupport() {
const config = withDefaults(relay()?.config)
const nextConfig = {
...config,
livekit: { enabled: !config.livekit.enabled },
}
void updateFlags(nextConfig, config)
}
return (
<PageContainer>
<BackLink href="/relays" label="Relays" />
@@ -158,6 +170,7 @@ export default function RelayDetail() {
onToggleGroups={toggleGroups}
onToggleManagement={toggleManagement}
onToggleMediaStorage={toggleMediaStorage}
onToggleLivekitSupport={toggleLivekitSupport}
onTogglePushNotifications={togglePushNotifications}
/>
</div>
+1
View File
@@ -13,6 +13,7 @@ const DEFAULT_CONFIG: RelayConfig = {
groups: { enabled: false, auto_join: false },
management: { enabled: false },
blossom: { enabled: false },
livekit: { enabled: false },
push: { enabled: false },
}
+2
View File
@@ -16,6 +16,7 @@ const DEFAULT_CONFIG: RelayConfig = {
groups: { enabled: true, auto_join: true },
management: { enabled: true },
blossom: { enabled: false },
livekit: { enabled: false },
push: { enabled: true },
}
@@ -51,6 +52,7 @@ export default function RelayNew() {
config: {
...DEFAULT_CONFIG,
blossom: { enabled: plan() !== "free" },
livekit: { enabled: plan() !== "free" },
},
})
navigate(`/relays/${relay.id}`)