From a57a4edcb648d025254ede4d18d267b887ad0b8b Mon Sep 17 00:00:00 2001 From: Vijay A Date: Sun, 5 Sep 2021 15:14:28 +0530 Subject: Remove dependency on 'require' of 'electron' and 'electron/remote' modules. Instead, use the exposed content from the recipe model in main ferdi. --- recipes/android-messages/package.json | 2 +- recipes/android-messages/webview.js | 10 ++-------- recipes/discord/package.json | 2 +- recipes/discord/webview.js | 6 ++---- recipes/googlemeet/package.json | 2 +- recipes/googlemeet/webview.js | 6 +----- recipes/lastpass/package.json | 2 +- recipes/lastpass/webview.js | 7 +------ recipes/pleroma/package.json | 2 +- recipes/pleroma/webview.js | 4 +--- recipes/rocketchat/package.json | 2 +- recipes/rocketchat/webview.js | 4 +--- recipes/skype/package.json | 2 +- recipes/skype/webview.js | 4 +--- recipes/slack/package.json | 2 +- recipes/slack/webview.js | 4 +--- recipes/steamchat/package.json | 2 +- recipes/steamchat/webview.js | 4 +--- recipes/tweetdeck/package.json | 2 +- recipes/tweetdeck/webview.js | 4 +--- recipes/whatsapp/package.json | 2 +- recipes/whatsapp/webview.js | 31 ++++++++++++++----------------- 22 files changed, 37 insertions(+), 69 deletions(-) (limited to 'recipes') diff --git a/recipes/android-messages/package.json b/recipes/android-messages/package.json index 4903955..852b942 100644 --- a/recipes/android-messages/package.json +++ b/recipes/android-messages/package.json @@ -1,7 +1,7 @@ { "id": "android-messages", "name": "Android Messages", - "version": "2.1.0", + "version": "2.2.0", "license": "MIT", "config": { "serviceURL": "https://messages.google.com/web", diff --git a/recipes/android-messages/webview.js b/recipes/android-messages/webview.js index efaa5cf..4b57700 100644 --- a/recipes/android-messages/webview.js +++ b/recipes/android-messages/webview.js @@ -1,11 +1,3 @@ -const { - remote, -} = require('electron'); - -const webContents = remote.getCurrentWebContents(); -const { - session, -} = webContents; setTimeout(() => { const elem = document.querySelector('#af-error-container'); @@ -13,8 +5,10 @@ setTimeout(() => { window.location.reload(); } }, 1000); + window.addEventListener('beforeunload', async () => { try { + const { session } = Ferdi.getCurrentWebContents(); session.flushStorageData(); session.clearStorageData({ storages: ['appcache', 'serviceworkers', 'cachestorage', 'websql', 'indexdb'], diff --git a/recipes/discord/package.json b/recipes/discord/package.json index 7a2ec50..73a859c 100644 --- a/recipes/discord/package.json +++ b/recipes/discord/package.json @@ -1,7 +1,7 @@ { "id": "discord", "name": "Discord", - "version": "1.3.1", + "version": "1.4.0", "license": "MIT", "config": { "serviceURL": "https://discordapp.com/login", diff --git a/recipes/discord/webview.js b/recipes/discord/webview.js index 0559612..480329d 100644 --- a/recipes/discord/webview.js +++ b/recipes/discord/webview.js @@ -1,7 +1,5 @@ // TODO: Some/most of this is already present in https://github.com/getferdi/ferdi/blob/develop/src/webview/screenshare.js#L5 -const { desktopCapturer, remote: { BrowserWindow } } = require('electron'); - const _path = _interopRequireDefault(require('path')); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -9,7 +7,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de window.navigator.mediaDevices.getDisplayMedia = () => { return new Promise(async (resolve, reject) => { try { - const sources = await desktopCapturer.getSources({ types: ['screen', 'window'] }); + const sources = await Ferdi.desktopCapturer.getSources({ types: ['screen', 'window'] }); const selectionElem = document.createElement('div'); selectionElem.classList = 'desktop-capturer-selection'; @@ -99,7 +97,7 @@ module.exports = (Ferdi, settings) => { event.stopPropagation(); if (url.includes('views/imgpsh_fullsize_anim')) { - let win = new BrowserWindow({ + let win = new Ferdi.BrowserWindow({ width: 800, height: window.innerHeight, minWidth: 600, diff --git a/recipes/googlemeet/package.json b/recipes/googlemeet/package.json index fe63660..9cab8dd 100644 --- a/recipes/googlemeet/package.json +++ b/recipes/googlemeet/package.json @@ -1,7 +1,7 @@ { "id": "googlemeet", "name": "Google Meet", - "version": "2.1.0", + "version": "2.2.0", "license": "MIT", "config": { "serviceURL": "https://meet.google.com", diff --git a/recipes/googlemeet/webview.js b/recipes/googlemeet/webview.js index 3a20b0c..d6a29fe 100644 --- a/recipes/googlemeet/webview.js +++ b/recipes/googlemeet/webview.js @@ -2,11 +2,6 @@ const _path = _interopRequireDefault(require('path')); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const { remote } = require('electron'); - -const webContents = remote.getCurrentWebContents(); -const { session } = webContents; - window.onload = () => { const title = document.querySelector('.window-title').innerHTML; @@ -16,6 +11,7 @@ window.onload = () => { }; module.exports = Ferdi => { + const { session } = Ferdi.getCurrentWebContents(); session.flushStorageData(); session.clearStorageData({ storages: ['serviceworkers'], diff --git a/recipes/lastpass/package.json b/recipes/lastpass/package.json index d45cb4b..cf08063 100644 --- a/recipes/lastpass/package.json +++ b/recipes/lastpass/package.json @@ -1,7 +1,7 @@ { "id": "lastpass", "name": "LastPass", - "version": "2.1.0", + "version": "2.2.0", "license": "MIT", "config": { "serviceURL": "https://lastpass.com/?ac=1&lpnorefresh=1", diff --git a/recipes/lastpass/webview.js b/recipes/lastpass/webview.js index d4090b3..878fa5e 100644 --- a/recipes/lastpass/webview.js +++ b/recipes/lastpass/webview.js @@ -2,12 +2,6 @@ const _path = _interopRequireDefault(require('path')); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const { remote } = require('electron'); - -const webContents = remote.getCurrentWebContents(); - -const { session } = webContents; - setTimeout(() => { if (document.querySelector('body').innerHTML.includes('Google Chrome 36+')) { window.location.reload(); @@ -15,6 +9,7 @@ setTimeout(() => { }, 1000); window.addEventListener('beforeunload', async () => { try { + const { session } = Ferdi.getCurrentWebContents(); session.flushStorageData(); session.clearStorageData({ storages: ['appcache', 'serviceworkers', 'cachestorage', 'websql', 'indexdb'], diff --git a/recipes/pleroma/package.json b/recipes/pleroma/package.json index 5a4fdf9..1592d7b 100644 --- a/recipes/pleroma/package.json +++ b/recipes/pleroma/package.json @@ -1,7 +1,7 @@ { "id": "pleroma", "name": "Pleroma", - "version": "1.1.2", + "version": "1.2.0", "license": "MIT", "config": { "hasCustomUrl": true diff --git a/recipes/pleroma/webview.js b/recipes/pleroma/webview.js index 2c97ab3..557f318 100644 --- a/recipes/pleroma/webview.js +++ b/recipes/pleroma/webview.js @@ -1,5 +1,3 @@ -const { ipcRenderer } = require('electron'); - const titleRegex = /^\((\d+)\)/; const getJson = async (relativeUri) => { @@ -153,7 +151,7 @@ module.exports = Ferdi => { Ferdi.loop(() => { getMessages(); if (updater.update()) { - ipcRenderer.sendToHost('avatar', updater.toDataURL()); + Ferdi.ipcRenderer.sendToHost('avatar', updater.toDataURL()); } }); }, (e) => { diff --git a/recipes/rocketchat/package.json b/recipes/rocketchat/package.json index 111efbd..3b807bf 100644 --- a/recipes/rocketchat/package.json +++ b/recipes/rocketchat/package.json @@ -1,7 +1,7 @@ { "id": "rocketchat", "name": "Rocket.Chat", - "version": "1.1.1", + "version": "1.2.0", "license": "MIT", "config": { "serviceURL": "https://{teamId}.rocket.chat", diff --git a/recipes/rocketchat/webview.js b/recipes/rocketchat/webview.js index d3d0a27..4240935 100644 --- a/recipes/rocketchat/webview.js +++ b/recipes/rocketchat/webview.js @@ -1,5 +1,3 @@ -const { ipcRenderer } = require('electron'); - const getTeamIcon = function getTeamIcon() { const manifestElement = document.querySelector('link[rel="manifest"]'); @@ -23,7 +21,7 @@ const getTeamIcon = function getTeamIcon() { const response = JSON.parse(this.responseText); if (response.icons.length >= 1) { - ipcRenderer.sendToHost( + Ferdi.ipcRenderer.sendToHost( 'avatar', `${window.location.protocol}//${window.location.host}${response.icons[0].src}`, ); diff --git a/recipes/skype/package.json b/recipes/skype/package.json index 342621c..5d23929 100644 --- a/recipes/skype/package.json +++ b/recipes/skype/package.json @@ -1,7 +1,7 @@ { "id": "skype", "name": "Skype", - "version": "3.1.1", + "version": "3.2.0", "license": "MIT", "config": { "serviceURL": "https://web.skype.com/", diff --git a/recipes/skype/webview.js b/recipes/skype/webview.js index 6e84d78..dd867ea 100644 --- a/recipes/skype/webview.js +++ b/recipes/skype/webview.js @@ -2,8 +2,6 @@ const _path = _interopRequireDefault(require('path')); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const { remote: { BrowserWindow } } = require('electron'); - module.exports = (Ferdi, settings) => { const getMessages = function getMessages() { let count = 0; @@ -44,7 +42,7 @@ module.exports = (Ferdi, settings) => { event.stopPropagation(); // TODO: Can we send an ipc event 'open-browser-window' to open the child window? (see the slack recipe for how to send an ipc message) // TODO: Can we change the slack recipe to add a clickHandler for screensharing/video calls? (https://github.com/getferdi/ferdi/issues/1697) - const win = new BrowserWindow({ + const win = new Ferdi.BrowserWindow({ width: 800, height: window.innerHeight, minWidth: 600, diff --git a/recipes/slack/package.json b/recipes/slack/package.json index 1c5de53..7c87e93 100644 --- a/recipes/slack/package.json +++ b/recipes/slack/package.json @@ -1,7 +1,7 @@ { "id": "slack", "name": "Slack", - "version": "1.2.0", + "version": "1.3.0", "license": "MIT", "config": { "serviceURL": "https://{teamId}.slack.com", diff --git a/recipes/slack/webview.js b/recipes/slack/webview.js index b8e3817..1a12e80 100644 --- a/recipes/slack/webview.js +++ b/recipes/slack/webview.js @@ -1,5 +1,3 @@ -const _electron = require('electron'); - const _path = _interopRequireDefault(require('path')); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -27,7 +25,7 @@ const getTeamIcon = function getTeamIcon(count = 0) { countTeamIconCheck += 1; if (bgUrl) { - _electron.ipcRenderer.sendToHost('avatar', bgUrl); + Ferdi.ipcRenderer.sendToHost('avatar', bgUrl); } else if (countTeamIconCheck <= 5) { setTimeout(() => { getTeamIcon(countTeamIconCheck + 1); diff --git a/recipes/steamchat/package.json b/recipes/steamchat/package.json index 4edbb82..12da5b9 100644 --- a/recipes/steamchat/package.json +++ b/recipes/steamchat/package.json @@ -1,7 +1,7 @@ { "id": "steamchat", "name": "SteamChat", - "version": "1.2.1", + "version": "1.3.0", "license": "MIT", "config": { "serviceURL": "https://steamcommunity.com/chat", diff --git a/recipes/steamchat/webview.js b/recipes/steamchat/webview.js index 93e68ba..63f002f 100644 --- a/recipes/steamchat/webview.js +++ b/recipes/steamchat/webview.js @@ -1,5 +1,3 @@ -const { ipcRenderer } = require('electron'); - module.exports = Ferdi => { const getMessages = function getMessages() { // get new msg count @@ -34,7 +32,7 @@ module.exports = Ferdi => { const url = link.getAttribute('href'); event.preventDefault(); event.stopPropagation(); - ipcRenderer.sendToHost('new-window', url); + Ferdi.ipcRenderer.sendToHost('new-window', url); } }, true); }; diff --git a/recipes/tweetdeck/package.json b/recipes/tweetdeck/package.json index dd103f8..a438716 100644 --- a/recipes/tweetdeck/package.json +++ b/recipes/tweetdeck/package.json @@ -1,7 +1,7 @@ { "id": "tweetdeck", "name": "Tweetdeck", - "version": "1.1.1", + "version": "1.2.0", "license": "MIT", "config": { "serviceURL": "https://tweetdeck.twitter.com/", diff --git a/recipes/tweetdeck/webview.js b/recipes/tweetdeck/webview.js index 6de7d75..b60415d 100644 --- a/recipes/tweetdeck/webview.js +++ b/recipes/tweetdeck/webview.js @@ -1,7 +1,5 @@ -const { ipcRenderer } = require('electron'); - // Tweetdeck redirect fix -ipcRenderer.on('redirect-url', (event, url) => { +Ferdi.ipcRenderer.on('redirect-url', (event, url) => { window.location.assign(url); }); diff --git a/recipes/whatsapp/package.json b/recipes/whatsapp/package.json index 6d2a93e..785a3fe 100644 --- a/recipes/whatsapp/package.json +++ b/recipes/whatsapp/package.json @@ -1,7 +1,7 @@ { "id": "whatsapp", "name": "WhatsApp", - "version": "3.2.1", + "version": "3.3.0", "license": "MIT", "config": { "serviceURL": "https://web.whatsapp.com", diff --git a/recipes/whatsapp/webview.js b/recipes/whatsapp/webview.js index 9b979d2..8087b08 100644 --- a/recipes/whatsapp/webview.js +++ b/recipes/whatsapp/webview.js @@ -1,14 +1,10 @@ -const { remote } = require('electron'); - const _path = _interopRequireDefault(require('path')); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const webContents = remote.getCurrentWebContents(); -const { session } = webContents; - window.addEventListener('beforeunload', async () => { try { + const { session } = Ferdi.getCurrentWebContents(); session.flushStorageData(); session.clearStorageData({ storages: ['appcache', 'serviceworkers', 'cachestorage', 'websql', 'indexdb'], @@ -28,20 +24,21 @@ module.exports = Ferdi => { let count = 0; let indirectCount = 0; - const parentChatElem = document.querySelector('#pane-side').children[0].children[0].children[0]; - if (!parentChatElem) return; - - const chatElems = parentChatElem.children; - for (let i = 0; i < chatElems.length; i++) { - const chatElem = chatElems[i]; - const unreadElem = chatElem.children[0].children[0].children[1].children[1].children[1]; + const parentChatElem = document.querySelector('[aria-label="Chat list"]'); + if (!parentChatElem) { + return; + } + const unreadSpans = parentChatElem.querySelectorAll('span[aria-label]'); + for (let i = 0; i < unreadSpans.length; i++) { + const unreadElem = unreadSpans[i]; const countValue = Ferdi.safeParseInt(unreadElem.textContent); - - if (unreadElem.querySelectorAll('[data-icon=muted]').length === 0) { - count += countValue; - } else { - indirectCount += countValue; + if (countValue > 0) { + if (!unreadElem.parentNode.previousSibling || unreadElem.parentNode.previousSibling.querySelectorAll('[data-icon=muted]').length === 0) { + count += countValue; + } else { + indirectCount += countValue; + } } } -- cgit v1.2.3-54-g00ecf