merge from upstream

This commit is contained in:
ctr49 2021-01-15 11:43:38 +01:00
commit 68305cc82e
25 changed files with 267 additions and 198 deletions

View File

@ -9,7 +9,7 @@ Desktop application for [Netzbegruenung Konferenz] based on [Jitsi Meet] built w
- [End-to-End Encryption](https://jitsi.org/blog/e2ee/) support (BETA)
- Works with any Jitsi Meet deployment
- Builtin auto-updates
- Remote control
- ~Remote control~ (currently disabled)
- Always-On-Top window
- Support for deeplinks such as `jitsi-meet://myroom` (will open `myroom` on the configured Jitsi instance) or `jitsi-meet://jitsi.mycompany.com/myroom` (will open `myroom` on the Jitsi instance running on `jitsi.mycompany.com`)
@ -17,10 +17,16 @@ Desktop application for [Netzbegruenung Konferenz] based on [Jitsi Meet] built w
Download our latest release and you're off to the races!
| Windows | macOS | GNU/Linux (64bits only) |
| Windows | macOS | GNU/Linux (64-bit only) |
| -- | -- | -- |
| [Download](https://github.com/netzbegruenung/jitsi-meet-electron/releases/latest/download/netzbegruenung-konferenz.exe) | [Download](https://github.com/netzbegruenung/jitsi-meet-electron/releases/latest/download/netzbegruenung-konferenz.dmg) | [Download](https://github.com/netzbegruenung/jitsi-meet-electron/releases/latest/download/netzbegruenung-konferenz-x86_64.AppImage) |
### Third-Party builds
[<img src="https://flathub.org/assets/badges/flathub-badge-en.svg"
alt="Download On Flathub"
height="60">](https://flathub.org/apps/details/org.jitsi.jitsi-meet)
### Homebrew
For *macOS* user, you can install the application using the following command:
@ -31,18 +37,6 @@ brew cask install jitsi-meet
### Using it with your own Jitsi Meet installation
In order to use this application with your own Jitsi Meet installation it's
necessary to enable the External API. Your server must serve a `external_api.js`
file at the root of the installation.
Here is an example using nginx:
```
location /external_api.js {
alias /usr/share/jitsi-meet/libs/external_api.min.js;
}
```
:warning: The following additional HTTP headers are known to break the Electron App:
```
@ -60,6 +54,25 @@ If you want to hack on this project, here is how you do it.
Install Node.js 12 first (or if you use [nvm](https://github.com/nvm-sh/nvm), switch to Node.js 12 by running `nvm use`).
<details><summary>Extra dependencies for Windows</summary>
```bash
npm install --global --production windows-build-tools
npm config set msvs_version 2017
```
</details>
<details><summary>Extra dependencies for GNU/Linux</summary>
X11, PNG and zlib development packages are necessary. On Debian-like systems then can be installed as follows:
```bash
sudo apt install libx11-dev zlib1g-dev libpng-dev libxtst-dev
```
</details>
Install all required packages:
```bash
npm install
```
@ -131,9 +144,9 @@ Builtin auto-updates are not yet handled in macOS due to unsigned build.
### GNU/Linux
There is a known issue which prevents the app from starting on some Linux distributions: #231
There is a known issue which prevents the app from starting on some Linux distributions: [#231](https://github.com/jitsi/jitsi-meet-electron/issues/231)
If after downloading it, you can't execute the file directly, try running `chmod u+x ./jitsi-meet-x86_64.AppImage.AppImage`
If after downloading it, you can't execute the file directly, try running `chmod u+x ./jitsi-meet-x86_64.AppImage`
The workaround for now is to launch the app like so: `./jitsi-meet-x86_64.AppImage --no-sandbox`

View File

@ -9,7 +9,7 @@ import type { Dispatch } from 'redux';
import { compose } from 'redux';
import config from '../../config';
import { getExternalApiURL } from '../../utils';
import { normalizeServerURL } from '../../utils';
import { setServerURL } from '../actions';
import { Form } from '../styled';
@ -122,25 +122,32 @@ class ServerURLField extends Component<Props, State> {
}
/**
* Validates the Server URL by fetching external_api.js using the HEAD
* method.
* Validates the Server URL.
*
* @returns {void}
*/
_validateServerURL() {
fetch(getExternalApiURL(this.state.serverURL), {
method: 'HEAD'
})
.then((response: Object) => {
this.setState({
isValid: response.ok
});
})
.catch(() => {
this.setState({
isValid: false
});
});
if (!this.state.serverURL.trim()) {
return true;
}
const url = normalizeServerURL(this.state.serverURL);
let isValid;
try {
// eslint-disable-next-line no-new
const tmp = new URL(url);
if (!tmp.protocol.startsWith('http')) {
throw new Error('Invalid protocol');
}
isValid = true;
} catch (_) {
isValid = false;
}
this.setState({ isValid });
}
}

View File

@ -2,22 +2,6 @@
// @flow
import config from '../config';
/**
* Returns the URL of the external_api.js of the server.
*
* @param {string} serverURL - Jitsi Meet Server URL.
* @returns {string} - The external_api.js URL.
*/
export function getExternalApiURL(serverURL: string) {
if (!serverURL) {
// eslint-disable-next-line no-param-reassign
serverURL = config.defaultServerURL;
}
return `${normalizeServerURL(serverURL)}/external_api.js`;
}
/**
* Return true if Electron app is running on Mac system.

View File

@ -7,6 +7,8 @@ const languages = {
en: { translation: require('./lang/en.json') },
es: { translation: require('./lang/es.json') },
fr: { translation: require('./lang/fr.json') },
gl: { translation: require('./lang/gl.json') },
hu: { translation: require('./lang/hu.json') },
it: { translation: require('./lang/it.json') },
ru: { translation: require('./lang/ru.json') }
};

View File

@ -1,39 +1,39 @@
{
"enterConferenceNameOrUrl": "Gib einen Konferenznamen oder eine Jitsi URL ein",
"enterConferenceNameOrUrl": "Bitte einen Konferenznamen oder eine Jitsi-Adresse eingeben",
"go": "LOS",
"help": "Hilfe",
"termsLink": "Nutzungsbedingungen",
"privacyLink": "Datenschutzbedingungen",
"sendFeedbackLink": "Schicke uns Feedback",
"aboutLink": "FAQ",
"sourceLink": "Source Code",
"sendFeedbackLink": "Eine Rückmeldung senden",
"aboutLink": "F&A",
"sourceLink": "Quelltext",
"versionLabel": "Version: {{version}}",
"onboarding": {
"startTour": "Start Tour",
"startTour": "Tour starten",
"skip": "Überspringen",
"welcome": "Willkommen in {{appName}}",
"letUsShowYouAround": "Wir zeigen dir wie alles funktioniert!",
"letUsShowYouAround": "Wir zeigen wie alles funktioniert!",
"next": "Weiter",
"conferenceUrl": "Gib den Namen (oder die ganze URL) des Raumes ein in den du willst.",
"settingsDrawerButton": "Hier klicken um zu den Einstellungen zu gelangen.",
"nameSetting": "Das ist dein Benutzername.",
"emailSetting": "Das E-Mail Feld ist teil deines Profiles, dieses Feld kann leer gelassen werden.",
"startMutedToggles": "Hier kannst du einstellen, ob du alle Konferenzen ohne aktiviertes Audio/Video beitrittst.",
"serverSetting": "Das ist der Server auf dem alle deine Konferenzen stattfinden werden, hier kann auch der eigene Server eingetragen werden!",
"serverTimeout": "Das ist die maximale Zeit, die ein Server zum Antworten auf einen Meetingbeitritt brauchen darf.",
"alwaysOnTop": "Hier kannst du ein kleines Fenster aktivieren, dass die Teilnehmer zeigt auch wenn du die Hauptapp gerade minimiert hast."
"conferenceUrl": "Bitte den Namen (oder die vollständige Adresse) des Raumes eingeben, dem beigetreten werden soll. Es kann ein Name ausgedacht werden, diesen bitte anderen mitteilen, damit sie denselben Namen eingeben.",
"settingsDrawerButton": "Hier klicken, um zu den Einstellungen zu gelangen.",
"nameSetting": "Das ist der Anzeigename, andere werden Sie unter diesem Namen sehen.",
"emailSetting": "Die hier eingegebene E-Mail ist Teil des Benutzerprofils.",
"startMutedToggles": "Hier kann eingestellt werden, ob mit stummgeschaltetem Audio oder Video gestartet wird. Das wird auf alle Konferenzen angewendet.",
"serverSetting": "Das ist der Server, auf dem die Konferenzen stattfinden werden. Es kann ein eigener verwendet werden, muss aber nicht!",
"serverTimeout": "Zeitüberschreitung für den Beitritt zu einer Konferenz. Wenn nicht rechtzeitig beigetreten wurde wird die Konferenz abgebrochen.",
"alwaysOnTop": "Hier kann eingestellt werden, ob das Fenster »Immer im Vordergrung« aktiviert wird. Dieses wird angezeigt, wenn das Hauptfenster den Fokus verliert. Das wird bei allen Konferenzen angewendet."
},
"settings": {
"back": "Zurück",
"name": "Name",
"email": "Email",
"email": "E-Mail",
"advancedSettings": "Erweiterte Einstellungen",
"alwaysOnTopWindow": "Always on Top Window",
"alwaysOnTopWindow": "Immer im Vordergrund",
"startWithAudioMuted": "Ohne Audio starten",
"startWithVideoMuted": "Ohne Video starten",
"invalidServer": "Falsche Server URL oder der Server unterstützt keine externe API",
"invalidServerTimeout": "Üngültiger Wert für die Server Wartezeit",
"serverUrl": "Server URL",
"serverTimeout": "Server Timeout (in Sekunden)"
"invalidServer": "Falsche Server-Adresse",
"invalidServerTimeout": "Üngültiger Wert für die Server-Wartezeit",
"serverUrl": "Server-Adresse",
"serverTimeout": "Server-Wartezeit (in Sekunden)"
}
}

View File

@ -31,7 +31,7 @@
"alwaysOnTopWindow": "Always on Top Window",
"startWithAudioMuted": "Start with Audio muted",
"startWithVideoMuted": "Start with Video muted",
"invalidServer": "Invalid Server URL or external API not enabled",
"invalidServer": "Invalid Server URL",
"invalidServerTimeout": "Invalid value for Server Timeout",
"serverUrl": "Server URL",
"serverTimeout": "Server Timeout (in seconds)"

View File

@ -31,7 +31,7 @@
"alwaysOnTopWindow": "Ventana siempre encima",
"startWithAudioMuted": "Iniciar con audio desactivado",
"startWithVideoMuted": "Iniciar con video desactivado",
"invalidServer": "URL del servidor inválido o API externo no habilitada",
"invalidServer": "URL del servidor inválida",
"serverUrl": "URL del servidor",
"serverTimeout": "Tiempo de desconexión del servidor (en segundos)"
}

View File

@ -31,7 +31,7 @@
"alwaysOnTopWindow": "Fenêtre Toujours au Dessus",
"startWithAudioMuted": "Démarrer avec le micro coupé",
"startWithVideoMuted": "Démarrer avec la caméra coupée",
"invalidServer": "URL invalide ou API externe non activée",
"invalidServer": "URL invalide",
"serverUrl": "URL du serveur",
"serverTimeout": "Délai de connexion au server (en secondes)"
}

39
app/i18n/lang/gl.json Normal file
View File

@ -0,0 +1,39 @@
{
"enterConferenceNameOrUrl": "Introduza un nome para a conferencia ou un URL de Jitsi",
"go": "IR",
"help": "Axuda",
"termsLink": "Termos",
"privacyLink": "Privacidade",
"sendFeedbackLink": "Enviar unha opinión",
"aboutLink": "Sobre",
"sourceLink": "Código fonte",
"versionLabel": "Versión: {{version}}",
"onboarding": {
"startTour": "Comezar a visita guiada",
"skip": "Omitir",
"welcome": "Reciba a benvida a {{appName}}",
"letUsShowYouAround": "Permita que lle mostremos o que hai!",
"next": "Seguinte",
"conferenceUrl": "Introduza o nome (ou URL completo) da sala á que desexa sumarse. Pode dar de alta un nome e permitir que a xente coa que se reúne o saiba para que introduzan o mesmo nome.",
"settingsDrawerButton": "Prema aquí para abrir a gabeta de configuración.",
"nameSetting": "Este será o seu nome e será con el que apareza diante das demais persoas.",
"emailSetting": "O correo electrónico que apareza aquí será parte do seu perfil de usuario.",
"startMutedToggles": "Aquí pode alternar entre comezar co son ou co vídeo desactivados. Isto será aplicábel a todas as conferencias.",
"serverSetting": "Este será o servidor no que se leven a cabo as súas conferencias. Pode usar unha propia, mais non ten por que o facer!",
"serverTimeout": "Tempo de agarda para se sumar a unha reunión; se non se sumou antes de que remate, cancélase.",
"alwaysOnTop": "Pode alternar entre activar e desactivar a xanela «sempre por riba», que se mostra cando a xanela principal perde o foco. Isto é aplicábel a todas as conferencias."
},
"settings": {
"back": "Atrás",
"name": "Nome",
"email": "Correo electrónico",
"advancedSettings": "Configuración avanzada",
"alwaysOnTopWindow": "Xanela sempre por riba",
"startWithAudioMuted": "Comezar co son desactivado",
"startWithVideoMuted": "Comezar co vídeo desactivado",
"invalidServer": "O URL do servidor é incorrecto",
"invalidServerTimeout": "O tempo de agarda do servidor é incorrecto",
"serverUrl": "URL do servidor",
"serverTimeout": "Tempo de agarda do servidor (en segundos)"
}
}

39
app/i18n/lang/hu.json Normal file
View File

@ -0,0 +1,39 @@
{
"enterConferenceNameOrUrl": "Adja meg a konferencia nevét vagy a Jitsi URL-címét",
"go": "Indítás",
"help": "Súgó",
"termsLink": "Feltételek",
"privacyLink": "Adatvédelem",
"sendFeedbackLink": "Visszajelzés",
"aboutLink": "Névjegy",
"sourceLink": "Forráskód",
"versionLabel": "Változat: {{version}}",
"onboarding": {
"startTour": "Bemutató indítása",
"skip": "Kihagyás",
"welcome": "Isten hozott: {{appName}}!",
"letUsShowYouAround": "Hadd mutassuk meg Neked!",
"next": "Következő",
"conferenceUrl": "Írja be a csatlakozni kívánt szoba nevét (vagy teljes URL-címét). Megadhat egy nevet, csak tudassa másokkal, hogy ugyanazt a nevet írják be.",
"settingsDrawerButton": "Kattintson ide a beállítások fiókjának megnyitásához.",
"nameSetting": "Ez lesz a megjelenítendő neve, mások ezzel a névvel fognak látni.",
"emailSetting": "Az itt megadott e-mail része lesz a felhasználói profilnak.",
"startMutedToggles": "Hang elnémítva és videó nélkül kezd be-/kikapcsolással. Minden konferenciára vonatkozik.",
"serverSetting": "Kiszolgáló, ahol a konferenciákat tartják. Használja saját kiszolgálóját; ez azonban nem szükséges.",
"serverTimeout": "Ha a résztvevők nem csatlakoztak az időkorlát bekövetkezése előtt, akkor a találkozót visszavonják.",
"alwaysOnTop": "A „Mindig látható” ablak lehetővé teszi a be-/kikapcsolást. Akkor jelenik meg, amikor a főablak elveszíti a fókuszt. Ezt minden konferenciára alkalmazni kell."
},
"settings": {
"back": "Vissza",
"name": "Név",
"email": "E-mail",
"advancedSettings": "Haladó beállítások",
"alwaysOnTopWindow": "Mindig látható",
"startWithAudioMuted": "Elnémítva kezd",
"startWithVideoMuted": "Videó nélkül kezd",
"invalidServer": "Érvénytelen kiszolgáló URL-címe",
"invalidServerTimeout": "A kiszolgáló időkorlátja érvénytelen",
"serverUrl": "Kiszolgáló URL-címe",
"serverTimeout": "Kiszolgálói időkorlát (másodperc)"
}
}

View File

@ -31,7 +31,7 @@
"alwaysOnTopWindow": "Finestra sempre in primo piano",
"startWithAudioMuted": "Inizia senza audio",
"startWithVideoMuted": "Inizio senza video",
"invalidServer": "URL del server errato o il server non supporta un'API esterna",
"invalidServer": "URL del server errato",
"serverUrl": "URL Server",
"serverTimeout": "Timeout del server (in secondi)"
}

View File

@ -31,7 +31,7 @@
"alwaysOnTopWindow": "Поверх всех окон",
"startWithAudioMuted": "Начать без звука",
"startWithVideoMuted": "Начать без видео",
"invalidServer": "Неверный URL-адрес сервера или внешний API не включен",
"invalidServer": "Неверный URL-адрес сервера",
"serverUrl": "URL-адрес сервера",
"serverTimeout": "Тайм-аут сервера (в секундах)"
}

13
main.js
View File

@ -22,15 +22,15 @@ const path = require('path');
const URL = require('url');
const config = require('./app/features/config');
const { openExternalLink } = require('./app/features/utils/openExternalLink');
const pkgJson = require('./package.json');
const showDevTools = Boolean(process.env.SHOW_DEV_TOOLS) || (process.argv.indexOf('--show-dev-tools') > -1);
// We need this because of https://github.com/electron/electron/issues/18214
app.commandLine.appendSwitch('disable-site-isolation-trials');
// https://bugs.chromium.org/p/chromium/issues/detail?id=1086373
app.commandLine.appendSwitch('disable-webrtc-hw-encoding');
app.commandLine.appendSwitch('disable-webrtc-hw-decoding');
// We need to disable hardware acceleration because its causes the screenshare to flicker.
app.commandLine.appendSwitch('disable-gpu');
// Needed until robot.js is fixed: https://github.com/octalmage/robotjs/issues/580
app.allowRendererProcessReuse = false;
@ -185,12 +185,13 @@ function createJitsiMeetWindow() {
y: windowState.y,
width: windowState.width,
height: windowState.height,
icon: path.resolve(basePath, './resources/icons/icon_512x512.png'),
icon: path.resolve(basePath, './resources/icon.png'),
minWidth: 800,
minHeight: 600,
show: false,
webPreferences: {
experimentalFeatures: true, // Insertable streams, for E2EE.
enableBlinkFeatures: 'RTCInsertableStreams',
enableRemoteModule: true,
nativeWindowOpen: true,
nodeIntegration: false,
preload: path.resolve(basePath, './build/preload.js')
@ -204,7 +205,7 @@ function createJitsiMeetWindow() {
initPopupsConfigurationMain(mainWindow);
setupAlwaysOnTopMain(mainWindow);
setupPowerMonitorMain(mainWindow);
setupScreenSharingMain(mainWindow, config.default.appName);
setupScreenSharingMain(mainWindow, config.default.appName, pkgJson.build.appId);
mainWindow.webContents.on('new-window', (event, url, frameName) => {
const target = getPopupTarget(url, frameName);

214
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "jitsi-meet-electron",
"version": "2.3.0",
"version": "2.4.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -5102,12 +5102,6 @@
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
"accessibility-developer-tools": {
"version": "2.12.0",
"resolved": "https://registry.npmjs.org/accessibility-developer-tools/-/accessibility-developer-tools-2.12.0.tgz",
"integrity": "sha1-PaDM6dbsY3OWS4TzXbfPw996tRQ=",
"dev": true
},
"acorn": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz",
@ -5673,9 +5667,9 @@
}
},
"bl": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz",
"integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==",
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
"integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==",
"requires": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
@ -5683,12 +5677,12 @@
},
"dependencies": {
"buffer": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
"integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"requires": {
"base64-js": "^1.0.2",
"ieee754": "^1.1.4"
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
}
},
"readable-stream": {
@ -5731,9 +5725,9 @@
"dev": true
},
"boolean": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.1.tgz",
"integrity": "sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==",
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.2.tgz",
"integrity": "sha512-RwywHlpCRc3/Wh81MiCKun4ydaIFyW5Ea6JbL6sRCVx5q5irDw7pMXBUFYF/jArQ6YrG36q0kpovc9P/Kd3I4g==",
"dev": true,
"optional": true
},
@ -7311,17 +7305,6 @@
"dev": true,
"optional": true
},
"devtron": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/devtron/-/devtron-1.4.0.tgz",
"integrity": "sha1-tedIvW6Vu+cL/MaKrm/mlhGUQeE=",
"dev": true,
"requires": {
"accessibility-developer-tools": "^2.11.0",
"highlight.js": "^9.3.0",
"humanize-plus": "^1.8.1"
}
},
"diffie-hellman": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
@ -7529,9 +7512,9 @@
}
},
"electron": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/electron/-/electron-9.0.5.tgz",
"integrity": "sha512-bnL9H48LuQ250DML8xUscsKiuSu+xv5umXbpBXYJ0BfvYVmFfNbG3jCfhrsH7aP6UcQKVxOG1R/oQExd0EFneQ==",
"version": "10.1.6",
"resolved": "https://registry.npmjs.org/electron/-/electron-10.1.6.tgz",
"integrity": "sha512-Wyiq5Fy64KAa51i72m+5zayYKSm9O5lnittUdaElAn3PAzGl3yDifYO2QsXR7k/iKxWVSROOPzf43mXYytL67Q==",
"dev": true,
"requires": {
"@electron/get": "^1.0.1",
@ -8030,9 +8013,9 @@
}
},
"elliptic": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz",
"integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==",
"version": "6.5.3",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
"integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
"dev": true,
"requires": {
"bn.js": "^4.4.0",
@ -9284,16 +9267,36 @@
},
"dependencies": {
"core-js": {
"version": "3.6.5",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
"integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==",
"version": "3.8.0",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.0.tgz",
"integrity": "sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA==",
"dev": true,
"optional": true
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"optional": true,
"requires": {
"yallist": "^4.0.0"
}
},
"semver": {
"version": "7.3.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
"integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
"integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
"dev": true,
"optional": true,
"requires": {
"lru-cache": "^6.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true,
"optional": true
}
@ -9527,12 +9530,6 @@
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
},
"highlight.js": {
"version": "9.15.10",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.10.tgz",
"integrity": "sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw==",
"dev": true
},
"history": {
"version": "4.10.1",
"resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
@ -9672,12 +9669,6 @@
"integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
"dev": true
},
"humanize-plus": {
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/humanize-plus/-/humanize-plus-1.8.2.tgz",
"integrity": "sha1-pls0RZrWNnrbs3B6gqPJ+RYWcDA=",
"dev": true
},
"i18next": {
"version": "19.4.5",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-19.4.5.tgz",
@ -9778,9 +9769,9 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"ini": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
"integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ=="
},
"inquirer": {
"version": "6.5.2",
@ -10165,9 +10156,10 @@
}
},
"jitsi-meet-electron-utils": {
"version": "github:jitsi/jitsi-meet-electron-utils#eec44118c8c6a0a0e435727747e575a0381ef67c",
"from": "github:jitsi/jitsi-meet-electron-utils#v2.0.7",
"version": "github:jitsi/jitsi-meet-electron-utils#d606da675a3e8f2e327bcf12b15120b188002d0f",
"from": "github:jitsi/jitsi-meet-electron-utils#v2.0.12",
"requires": {
"jitsi-meet-logger": "github:jitsi/jitsi-meet-logger#v1.0.0",
"mac-screen-capture-permissions": "^1.1.0",
"nan": "^2.14.0",
"postis": "^2.2.0",
@ -10183,6 +10175,10 @@
}
}
},
"jitsi-meet-logger": {
"version": "github:jitsi/jitsi-meet-logger#4add5bac2e4cea73a05f42b7596ee03c7f7a2567",
"from": "github:jitsi/jitsi-meet-logger#v1.0.0"
},
"js-md5": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz",
@ -10464,9 +10460,9 @@
}
},
"lodash": {
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
"version": "4.17.19",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
"integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
},
"lodash.clonedeep": {
"version": "4.5.0",
@ -10521,9 +10517,9 @@
},
"dependencies": {
"cross-spawn": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz",
"integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==",
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"requires": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@ -10547,9 +10543,9 @@
}
},
"get-stream": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
"integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"requires": {
"pump": "^3.0.0"
}
@ -10568,9 +10564,9 @@
}
},
"onetime": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
"integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"requires": {
"mimic-fn": "^2.1.0"
}
@ -11079,9 +11075,9 @@
}
},
"node-abi": {
"version": "2.17.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.17.0.tgz",
"integrity": "sha512-dFRAA0ACk/aBo0TIXQMEWMLUTyWYYT8OBYIzLmEUrQTElGRjxDCvyBZIsDL0QA7QCaj9PrawhOmTEdsuLY4uOQ==",
"version": "2.19.3",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.3.tgz",
"integrity": "sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg==",
"requires": {
"semver": "^5.4.1"
}
@ -11848,15 +11844,15 @@
"integrity": "sha1-3F4yN2WYXd/cv9r8MUGpVprvdak="
},
"prebuild-install": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.3.tgz",
"integrity": "sha512-GV+nsUXuPW2p8Zy7SarF/2W/oiK8bFQgJcncoJ0d7kRpekEA0ftChjfEaF9/Y+QJEc/wFR7RAEa8lYByuUIe2g==",
"version": "5.3.6",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz",
"integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==",
"requires": {
"detect-libc": "^1.0.3",
"expand-template": "^2.0.3",
"github-from-package": "0.0.0",
"minimist": "^1.2.0",
"mkdirp": "^0.5.1",
"minimist": "^1.2.3",
"mkdirp-classic": "^0.5.3",
"napi-build-utils": "^1.0.1",
"node-abi": "^2.7.0",
"noop-logger": "^0.1.1",
@ -11867,13 +11863,6 @@
"tar-fs": "^2.0.0",
"tunnel-agent": "^0.6.0",
"which-pm-runs": "^1.0.0"
},
"dependencies": {
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
}
}
},
"prelude-ls": {
@ -12686,13 +12675,13 @@
}
},
"roarr": {
"version": "2.15.3",
"resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.3.tgz",
"integrity": "sha512-AEjYvmAhlyxOeB9OqPUzQCo3kuAkNfuDk/HqWbZdFsqDFpapkTjiw+p4svNEoRLvuqNTxqfL+s+gtD4eDgZ+CA==",
"version": "2.15.4",
"resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
"integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
"dev": true,
"optional": true,
"requires": {
"boolean": "^3.0.0",
"boolean": "^3.0.1",
"detect-node": "^2.0.4",
"globalthis": "^1.0.1",
"json-stringify-safe": "^5.0.1",
@ -12875,10 +12864,13 @@
}
},
"serialize-javascript": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
"integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
"dev": true
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
"integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
"dev": true,
"requires": {
"randombytes": "^2.1.0"
}
},
"set-blocking": {
"version": "2.0.0",
@ -12988,9 +12980,9 @@
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
},
"simple-concat": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz",
"integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY="
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
},
"simple-get": {
"version": "3.1.0",
@ -13623,22 +13615,22 @@
"dev": true
},
"tar-fs": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.0.tgz",
"integrity": "sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==",
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
"integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
"requires": {
"chownr": "^1.1.1",
"mkdirp-classic": "^0.5.2",
"pump": "^3.0.0",
"tar-stream": "^2.0.0"
"tar-stream": "^2.1.4"
}
},
"tar-stream": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz",
"integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==",
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz",
"integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==",
"requires": {
"bl": "^4.0.1",
"bl": "^4.0.3",
"end-of-stream": "^1.4.1",
"fs-constants": "^1.0.0",
"inherits": "^2.0.3",
@ -13699,16 +13691,16 @@
}
},
"terser-webpack-plugin": {
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz",
"integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==",
"version": "1.4.5",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
"integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
"dev": true,
"requires": {
"cacache": "^12.0.2",
"find-cache-dir": "^2.1.0",
"is-wsl": "^1.1.0",
"schema-utils": "^1.0.0",
"serialize-javascript": "^2.1.2",
"serialize-javascript": "^4.0.0",
"source-map": "^0.6.1",
"terser": "^4.1.2",
"webpack-sources": "^1.4.0",
@ -14584,12 +14576,6 @@
"dev": true,
"optional": true
},
"ini": {
"version": "1.3.5",
"bundled": true,
"dev": true,
"optional": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,

View File

@ -1,6 +1,6 @@
{
"name": "netzbegruenung-konferenz",
"version": "2.3.0",
"version": "2.4.2",
"description": "Electron application for Netzbegruenung Konferenz (Jitsi Meet)",
"main": "./build/main.js",
"productName": "Netzbegruenung Konferenz",
@ -9,7 +9,6 @@
"clean": "rm -rf node_modules build dist",
"lint": "eslint . && flow",
"build": "webpack --config ./webpack.main.js --mode production && webpack --config ./webpack.renderer.js --mode production",
"pack": "npm run build && electron-builder --dir",
"dist": "npm run build && electron-builder",
"postinstall": "patch-package && electron-builder install-app-deps",
"watch": "webpack --config ./webpack.renderer.js --mode development --watch --watch-poll"
@ -130,7 +129,7 @@
"electron-window-state": "5.0.3",
"history": "4.10.1",
"i18next": "19.4.5",
"jitsi-meet-electron-utils": "github:jitsi/jitsi-meet-electron-utils#v2.0.7",
"jitsi-meet-electron-utils": "github:jitsi/jitsi-meet-electron-utils#v2.0.12",
"js-utils": "github:jitsi/js-utils#cf11996bd866fdb47326c59a5d3bc24be17282d4",
"moment": "2.23.0",
"mousetrap": "1.6.2",
@ -159,8 +158,7 @@
"babel-loader": "8.1.0",
"concurrently": "5.1.0",
"css-loader": "3.5.0",
"devtron": "1.4.0",
"electron": "9.0.5",
"electron": "10.1.6",
"electron-builder": "22.7.0",
"electron-react-devtools": "0.5.3",
"eslint": "6.5.1",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 772 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB