diff options
author | Devaev Maxim <[email protected]> | 2021-05-16 23:47:16 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2021-05-16 23:47:16 +0300 |
commit | 5eb0d71cfd2344d30db24d472a6153a64d81279c (patch) | |
tree | ef0c679be6a7e74b58303d131bd054a82717ed9d | |
parent | 03946dd476549639429149cf89c461a9374de710 (diff) |
dynamic import
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | testenv/Dockerfile | 4 | ||||
-rw-r--r-- | testenv/linters/eslintrc.yaml | 3 | ||||
-rw-r--r-- | web/share/js/kvm/janus.js | 26 | ||||
-rw-r--r-- | web/share/js/kvm/stream.js | 28 |
5 files changed, 28 insertions, 34 deletions
@@ -126,7 +126,6 @@ run: testenv $(TESTENV_GPIO) && cp /usr/share/kvmd/configs.default/kvmd/main/$(if $(P),$(P),$(DEFAULT_PLATFORM)).yaml /etc/kvmd/main.yaml \ && cp /testenv/$(if $(P),$(P),$(DEFAULT_PLATFORM)).override.yaml /etc/kvmd/override.yaml \ && cp /usr/share/kvmd/configs.default/kvmd/web.css /etc/kvmd \ - && cp /usr/share/kvmd/web/share/js/kvm/janus.js /usr/share/janus/javascript/janus.js \ && nginx -c /etc/kvmd/nginx/nginx.conf -g 'user http; error_log stderr;' \ && ln -s $(TESTENV_VIDEO) /dev/kvmd-video \ && ln -s $(TESTENV_GPIO) /dev/kvmd-gpio \ diff --git a/testenv/Dockerfile b/testenv/Dockerfile index b9b03d8d..f516eb95 100644 --- a/testenv/Dockerfile +++ b/testenv/Dockerfile @@ -50,7 +50,8 @@ RUN pip install -r requirements.txt WORKDIR /root RUN npm install htmlhint -g \ && npm install pug \ - && npm install pug-cli -g + && npm install pug-cli -g \ + && npm install @babel/eslint-parser -g WORKDIR / ARG LIBGPIOD_VERSION @@ -75,7 +76,6 @@ RUN git clone https://github.com/pikvm/ustreamer \ && rm -rf ustreamer RUN mkdir -p \ - /usr/share/janus/javascript \ /etc/kvmd/{nginx,vnc} \ /var/lib/kvmd/msd/{images,meta} \ /opt/vc/bin \ diff --git a/testenv/linters/eslintrc.yaml b/testenv/linters/eslintrc.yaml index 66779d8f..be622ab0 100644 --- a/testenv/linters/eslintrc.yaml +++ b/testenv/linters/eslintrc.yaml @@ -4,9 +4,12 @@ env: extends: "eslint:recommended" +parser: "/usr/lib/node_modules/@babel/eslint-parser" parserOptions: ecmaVersion: 6 sourceType: module + allowImportExportEverywhere: true + requireConfigFile: false rules: indent: diff --git a/web/share/js/kvm/janus.js b/web/share/js/kvm/janus.js deleted file mode 100644 index 5ad7ae21..00000000 --- a/web/share/js/kvm/janus.js +++ /dev/null @@ -1,26 +0,0 @@ -/***************************************************************************** -# # -# KVMD - The main Pi-KVM daemon. # -# # -# Copyright (C) 2018-2021 Maxim Devaev <[email protected]> # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see <https://www.gnu.org/licenses/>. # -# # -*****************************************************************************/ - - -"use strict"; - - -export var Janus = null; diff --git a/web/share/js/kvm/stream.js b/web/share/js/kvm/stream.js index 1008cb92..7371c2e5 100644 --- a/web/share/js/kvm/stream.js +++ b/web/share/js/kvm/stream.js @@ -25,10 +25,10 @@ import {tools, $} from "../tools.js"; import {wm} from "../wm.js"; -/*import {Janus} from "./janus.js"; +var _Janus = null; -function _JanusStreamer(set_active_callback, set_inactive_callback, set_info_callback) { +/*function _JanusStreamer(set_active_callback, set_inactive_callback, set_info_callback) { var self = this; var __janus = null; @@ -210,9 +210,27 @@ export function Streamer() { }; self.setJanusEnabled = function(enabled) { - __janus_enabled = (!!window.RTCPeerConnection && enabled); - tools.info("Stream: Janus WebRTC Gateway state:", __janus_enabled); - self.setState(__state); + let supported = !!window.RTCPeerConnection; + let set_enabled = function() { + __janus_enabled = (enabled && supported && _Janus !== null); + tools.info(`Stream: Janus WebRTC state: enabled=${enabled}, supported=${supported}, imported=${!!_Janus}`); + self.setState(__state); + }; + if (enabled && supported) { + if (_Janus === null) { + import("./janus.js").then((module) => { + _Janus = module.Janus; + set_enabled(); + }).catch((err) => { + tools.error("Can't import Janus module:", err); + set_enabled(); + }); + } else { + set_enabled(); + } + } else { + set_enabled(); + } }; self.setState = function(state) { |