aboutsummaryrefslogtreecommitdiff
path: root/client-web/source/preferences.ts
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-09-09 10:39:13 +0200
committermetamuffin <metamuffin@disroot.org>2022-09-09 10:39:13 +0200
commitafed94bb4609bd796102c9184f13fa29c5f92a48 (patch)
tree6d40b78dcc6174e148cf5b9531366e3712c223f7 /client-web/source/preferences.ts
parent7c039b507695d0dbb8d00e583f7ce29b6925dcdc (diff)
downloadkeks-meet-afed94bb4609bd796102c9184f13fa29c5f92a48.tar
keks-meet-afed94bb4609bd796102c9184f13fa29c5f92a48.tar.bz2
keks-meet-afed94bb4609bd796102c9184f13fa29c5f92a48.tar.zst
server is only a relay now.
Diffstat (limited to 'client-web/source/preferences.ts')
-rw-r--r--client-web/source/preferences.ts16
1 files changed, 10 insertions, 6 deletions
diff --git a/client-web/source/preferences.ts b/client-web/source/preferences.ts
index e7fc7bb..63efeb2 100644
--- a/client-web/source/preferences.ts
+++ b/client-web/source/preferences.ts
@@ -1,9 +1,12 @@
+import { hex_id } from "./helper.ts";
export interface PrefDecl<T> {
name: string,
- default: T
+ default: T,
+ type?: Type,
description: string,
possible_values?: T[]
+ optional?: boolean,
}
type Type = "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
@@ -13,7 +16,9 @@ export function register_prefs<T extends Record<string, PrefDecl<unknown>>>(ds:
const p: PrefMap<T> = {} as PrefMap<T>
for (const key in ds) {
const d = ds[key];
- let value = get_param(d.default, d.name) ?? d.default;
+ let type = typeof d.default;
+ if (type == "undefined") { if (d.type) type = d.type; else throw new Error("type needed"); }
+ let value = get_param(type, d.name) ?? d.default;
if (d.possible_values) if (!d.possible_values.includes(value)) value = d.default
p[key] = value
}
@@ -31,10 +36,9 @@ export function load_query_params(): { [key: string]: string } {
return q
}
-export function get_param<T>(example: T, key: string): T | undefined {
+export function get_param<T>(ty: string, key: string): T | undefined {
const v = raw_params[key]
if (v == undefined) return undefined
- const ty = typeof example
if (ty == "string") return v as unknown as T
else if (ty == "number") {
const n = parseInt(v)
@@ -50,14 +54,14 @@ export function get_param<T>(example: T, key: string): T | undefined {
return undefined
}
-
const PREF_DECLS = {
rnnoise: { name: "rnnoise", default: true, description: "Use RNNoise for noise suppression" },
native_noise_suppression: { name: "native_noise_suppression", default: false, description: "Suggest the browser to do noise suppression" },
- username: { name: "username", default: "guest", description: "Username" },
+ username: { name: "username", default: "guest-" + hex_id(), description: "Username" },
microphone_gain: { name: "microphone_gain", default: 1, description: "Amplify microphone volume" },
microphone_enabled: { name: "microphone_enabled", default: false, description: "Add one microphone track on startup" },
camera_enabled: { name: "camera_enabled", default: false, description: "Add one camera track on startup" },
screencast_enabled: { name: "screencast_enabled", default: false, description: "Add one screencast track on startup" },
+ camera_facing_mode: { name: "camera_facing_mode", default: undefined as undefined | string, type: "string" as const, possible_values: ["environment", "user", undefined], description: "Prefer user-facing or env-facing camera" }
}
export const PREFS = register_prefs(PREF_DECLS)