move const CONFIG to json file and add documentation in README.md

This commit is contained in:
stefan.tollkuehn committed 2026-10-22 15:33:52 +02:00
1 parent c172c057eb
commit e9ad3882d2
3 files changed
+51 -35

No files matched your search

+15
View File
@@ -2,6 +2,21 @@
A small html/js project to nudge a user to use the desktop client for Jitsi. A small html/js project to nudge a user to use the desktop client for Jitsi.
## Configuration
All settings live in `assets/config.json`, loaded at startup. The launcher stays
up but links break if the file is missing or malformed.
| Parameter | Description |
| --- | --- |
| `jitsiLauncher` | Domain of this Jitsi launcher. Used for the meeting URLs created by the meeting creator (Nextcloud, adhoc link). |
| `jitsiHost` | Jitsi domain. Used for the browser fallback URL, the desktop protocol URL and the UID of generated ICS files. |
| `nextcloudBase` | Nextcloud instance used by the "Create in Nextcloud" button (calendar event creation). |
| `launchTimeout` | Timeout in ms before the browser fallback is shown after trying to start the jitsi-meet-electron client. |
| `backgroundImage` | Path to the page background image. Empty: no background. |
| `logo` | Path to the logo shown in the logo bar. Empty: logo bar stays hidden. |
| `downloads` | Download URLs for the jitsi-meet clients, shown in the fallback view per detected OS: `windows`, `macos`, `linux`, `ios`, `android`. |
## Third-party assets ## Third-party assets
- `assets/lib/ua-parser.min.js` — [ua-parser-js](https://github.com/faisalman/ua-parser-js) v2.0.10, © Faisal Salman, licensed under AGPL-3.0. - `assets/lib/ua-parser.min.js` — [ua-parser-js](https://github.com/faisalman/ua-parser-js) v2.0.10, © Faisal Salman, licensed under AGPL-3.0.
+15
View File
@@ -0,0 +1,15 @@
{
"jitsiLauncher": "meet.bnvb.eu",
"jitsiHost": "meet.bnvb-ingenieure.de",
"nextcloudBase": "https://cloud.bnvb-ingenieure.de",
"launchTimeout": 2000,
"backgroundImage": "assets/images/background.png",
"logo": "assets/images/logo.svg",
"downloads": {
"windows": "https://github.com/jitsi/jitsi-meet-electron/releases/latest/download/jitsi-meet.exe",
"macos": "https://github.com/jitsi/jitsi-meet-electron/releases/latest/download/jitsi-meet.dmg",
"linux": "https://github.com/jitsi/jitsi-meet-electron/releases",
"ios": "https://apps.apple.com/app/jitsi-meet/id1165103905",
"android": "https://play.google.com/store/apps/details?id=org.jitsi.meet"
}
}
+21 -35
View File
@@ -5,42 +5,12 @@
* ============================================================ * ============================================================
*/ */
const CONFIG = { /*
/* * Konfiguration liegt in assets/config.json und wird beim
* Your Jitsi Launcher domain * Start asynchron geladen (siehe START).
*/ */
jitsiLauncher: "meet.bnvb.eu", let CONFIG = {};
/* const CONFIG_URL = "assets/config.json";
* Your Jitsi domain.
*/
jitsiHost: "meet.bnvb-ingenieure.de",
/*
* Your Nextcloud instance (calendar event creation).
*/
nextcloudBase: "https://cloud.bnvb-ingenieure.de",
/*
* Timeout trying to start the jitsi-meet-electron client
*/
launchTimeout: 2000,
/*
* set wallpaper for webpage
*/
backgroundImage: "assets/images/background.png",
/*
* Set logo
*/
logo: "assets/images/logo.svg",
/*
* Download URLs for jitsi-meet clients
*/
downloads: {
windows: "https://github.com/jitsi/jitsi-meet-electron/releases/latest/download/jitsi-meet.exe",
macos: "https://github.com/jitsi/jitsi-meet-electron/releases/latest/download/jitsi-meet.dmg",
linux: "https://github.com/jitsi/jitsi-meet-electron/releases",
ios: "https://apps.apple.com/app/jitsi-meet/id1165103905",
android: "https://play.google.com/store/apps/details?id=org.jitsi.meet"
}
};
/* ============================================================ /* ============================================================
* Translations * Translations
@@ -1440,6 +1410,19 @@ window
* ============================================================ * ============================================================
*/ */
async function loadConfig() {
try {
const response = await fetch(CONFIG_URL);
CONFIG = await response.json();
} catch (error) {
/*
* Ohne Datei bleiben Launcher unbrauchbar – Fehler
* melden und mit leerer Konfiguration fortfahren.
*/
console.error("Error loading config:", error);
}
}
async function loadTranslations() { async function loadTranslations() {
try { try {
const response = await fetch(I18N_URL); const response = await fetch(I18N_URL);
@@ -1461,6 +1444,9 @@ async function loadTranslations() {
*/ */
async function start() { async function start() {
applyTheme(); applyTheme();
await loadConfig();
applyBackgroundImage(); applyBackgroundImage();
applyLogo(); applyLogo();