From c5d2a889d4cb44f995d74051f83628b505383093 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Sun, 19 Sep 2021 00:41:52 +0200 Subject: fix: privileged API access Privileged browser APIs should be accessed from webview.js via the Ferdi parameter to the exported function. If any service is broken (e.g., screen sharing), then most likely we have to fix recipe.js or screenshare.js --- recipes/discord/package.json | 2 +- recipes/discord/webview.js | 58 -------------------------------------------- 2 files changed, 1 insertion(+), 59 deletions(-) (limited to 'recipes/discord') diff --git a/recipes/discord/package.json b/recipes/discord/package.json index c644d66..243e64b 100644 --- a/recipes/discord/package.json +++ b/recipes/discord/package.json @@ -1,7 +1,7 @@ { "id": "discord", "name": "Discord", - "version": "1.4.1", + "version": "1.4.2", "license": "MIT", "config": { "serviceURL": "https://discordapp.com/login", diff --git a/recipes/discord/webview.js b/recipes/discord/webview.js index 9c96f9f..3134221 100644 --- a/recipes/discord/webview.js +++ b/recipes/discord/webview.js @@ -1,65 +1,7 @@ -// TODO: Some/most of this is already present in https://github.com/getferdi/ferdi/blob/develop/src/webview/screenshare.js#L5 - const _path = _interopRequireDefault(require('path')); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -window.navigator.mediaDevices.getDisplayMedia = () => { - return new Promise(async (resolve, reject) => { - try { - const sources = await Ferdi.desktopCapturer.getSources({ types: ['screen', 'window'] }); - - const selectionElem = document.createElement('div'); - selectionElem.classList = 'desktop-capturer-selection'; - selectionElem.innerHTML = ` -
- -
- `; - document.body.appendChild(selectionElem); - - document.querySelectorAll('.desktop-capturer-selection__btn') - .forEach(button => { - button.addEventListener('click', async () => { - try { - const id = button.getAttribute('data-id'); - const source = sources.find(source => source.id === id); - if (!source) { - throw new Error(`Source with id ${id} does not exist`); - } - - const stream = await window.navigator.mediaDevices.getUserMedia({ - audio: false, - video: { - mandatory: { - chromeMediaSource: 'desktop', - chromeMediaSourceId: source.id - } - } - }); - resolve(stream); - - selectionElem.remove(); - } catch (err) { - reject(err); - } - }); - }); - } catch (err) { - reject(err); - } - }) -} - module.exports = (Ferdi, settings) => { const getMessages = function getMessages() { let count = 0; -- cgit v1.2.3-70-g09d2