Add livekit config option
This commit is contained in:
@@ -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>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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?;
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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 },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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 },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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}`)
|
||||||
|
|||||||
Reference in New Issue
Block a user