diff options
author | Kristóf Marussy <kristof@marussy.com> | 2021-05-27 23:58:09 +0200 |
---|---|---|
committer | Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com> | 2021-07-24 00:23:17 +0000 |
commit | 26cf70e834030fed95701db9b44efd4af9660c27 (patch) | |
tree | 5f498f61a497a24ee0d84e4effea7a18148fff80 | |
parent | [msteams] Context isolation support (diff) | |
download | ferdium-recipes-26cf70e834030fed95701db9b44efd4af9660c27.tar.gz ferdium-recipes-26cf70e834030fed95701db9b44efd4af9660c27.tar.zst ferdium-recipes-26cf70e834030fed95701db9b44efd4af9660c27.zip |
[googlecalendar] Context isolation support
-rw-r--r-- | recipes/googlecalendar/package.json | 2 | ||||
-rw-r--r-- | recipes/googlecalendar/webview-unsafe.js | 39 | ||||
-rw-r--r-- | recipes/googlecalendar/webview.js | 43 |
3 files changed, 41 insertions, 43 deletions
diff --git a/recipes/googlecalendar/package.json b/recipes/googlecalendar/package.json index eab31be..45c6e11 100644 --- a/recipes/googlecalendar/package.json +++ b/recipes/googlecalendar/package.json | |||
@@ -1,7 +1,7 @@ | |||
1 | { | 1 | { |
2 | "id": "googlecalendar", | 2 | "id": "googlecalendar", |
3 | "name": "Google Calendar", | 3 | "name": "Google Calendar", |
4 | "version": "1.0.7", | 4 | "version": "2.0.0", |
5 | "description": "Google Calendar", | 5 | "description": "Google Calendar", |
6 | "main": "index.js", | 6 | "main": "index.js", |
7 | "author": "Rico Herwig <rherwig4711@gmail.com>", | 7 | "author": "Rico Herwig <rherwig4711@gmail.com>", |
diff --git a/recipes/googlecalendar/webview-unsafe.js b/recipes/googlecalendar/webview-unsafe.js new file mode 100644 index 0000000..68145ad --- /dev/null +++ b/recipes/googlecalendar/webview-unsafe.js | |||
@@ -0,0 +1,39 @@ | |||
1 | let modal; | ||
2 | let updates = 0; | ||
3 | |||
4 | const waitFor = (condition, callback) => { | ||
5 | if (!condition()) { | ||
6 | window.setTimeout(waitFor.bind(null, condition, callback), 100); | ||
7 | } else { | ||
8 | callback(); | ||
9 | } | ||
10 | }; | ||
11 | |||
12 | const showModal = text => { | ||
13 | modal.querySelector('p').innerHTML = text; | ||
14 | updates += 1; | ||
15 | window.franz.setBadge(updates); | ||
16 | modal.classList.add('open'); | ||
17 | }; | ||
18 | |||
19 | const hideModal = () => { | ||
20 | modal.querySelector('p').innerHTML = ''; | ||
21 | updates -= 1; | ||
22 | window.franz.setBadge(updates); | ||
23 | modal.classList.remove('open'); | ||
24 | }; | ||
25 | |||
26 | const createModal = () => { | ||
27 | const franzModal = document.createElement('div'); | ||
28 | franzModal.setAttribute('id', 'franz-modal'); | ||
29 | franzModal.innerHTML = '<div class="modal-content"><span class="close">×</span><p></p></div>'; | ||
30 | franzModal.querySelector('.close').addEventListener('click', hideModal); | ||
31 | |||
32 | return franzModal; | ||
33 | }; | ||
34 | |||
35 | window.alert = showModal; | ||
36 | |||
37 | modal = createModal(); | ||
38 | waitFor(() => document.body, () => document.body.appendChild(modal)); | ||
39 | document.addEventListener('keydown', event => event.keyCode === 27 && hideModal()); | ||
diff --git a/recipes/googlecalendar/webview.js b/recipes/googlecalendar/webview.js index 469ff0c..729f400 100644 --- a/recipes/googlecalendar/webview.js +++ b/recipes/googlecalendar/webview.js | |||
@@ -3,47 +3,6 @@ | |||
3 | const path = require('path'); | 3 | const path = require('path'); |
4 | 4 | ||
5 | module.exports = Franz => { | 5 | module.exports = Franz => { |
6 | let modal; | ||
7 | let updates = 0; | ||
8 | |||
9 | const waitFor = (condition, callback) => { | ||
10 | if (!condition()) { | ||
11 | window.setTimeout(waitFor.bind(null, condition, callback), 100); | ||
12 | } else { | ||
13 | callback(); | ||
14 | } | ||
15 | }; | ||
16 | |||
17 | const createModal = () => { | ||
18 | const franzModal = document.createElement('div'); | ||
19 | franzModal.setAttribute('id', 'franz-modal'); | ||
20 | franzModal.innerHTML = '<div class="modal-content"><span class="close">×</span><p></p></div>'; | ||
21 | franzModal.querySelector('.close').addEventListener('click', hideModal); | ||
22 | |||
23 | return franzModal; | ||
24 | }; | ||
25 | |||
26 | const showModal = text => { | ||
27 | modal.querySelector('p').innerHTML = text; | ||
28 | updates++; | ||
29 | modal.classList.add('open'); | ||
30 | }; | ||
31 | |||
32 | const hideModal = () => { | ||
33 | modal.querySelector('p').innerHTML = ''; | ||
34 | updates--; | ||
35 | modal.classList.remove('open'); | ||
36 | }; | ||
37 | |||
38 | window.alert = showModal; | ||
39 | |||
40 | const getMessages = () => Franz.setBadge(updates); | ||
41 | |||
42 | modal = createModal(); | ||
43 | waitFor(() => document.body, () => document.body.appendChild(modal)); | ||
44 | document.addEventListener('keydown', event => event.keyCode === 27 && hideModal()); | ||
45 | |||
46 | Franz.injectCSS(path.join(__dirname, 'calendar.css')); | 6 | Franz.injectCSS(path.join(__dirname, 'calendar.css')); |
47 | Franz.loop(getMessages); | 7 | Franz.injectJSUnsafe(path.join(__dirname, 'webview-unsafe.js')); |
48 | }; | 8 | }; |
49 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdvb2dsZWNhbGVuZGFyL3dlYnZpZXcuanMiXSwibmFtZXMiOlsicGF0aCIsInJlcXVpcmUiLCJtb2R1bGUiLCJleHBvcnRzIiwiRnJhbnoiLCJtb2RhbCIsInVwZGF0ZXMiLCJjcmVhdGVNb2RhbCIsImZyYW56TW9kYWwiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJpbm5lckhUTUwiLCJxdWVyeVNlbGVjdG9yIiwiYWRkRXZlbnRMaXN0ZW5lciIsImhpZGVNb2RhbCIsInNob3dNb2RhbCIsInRleHQiLCJjbGFzc0xpc3QiLCJhZGQiLCJyZW1vdmUiLCJ3aW5kb3ciLCJhbGVydCIsImdldE1lc3NhZ2VzIiwic2V0QmFkZ2UiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJldmVudCIsImtleUNvZGUiLCJpbmplY3RDU1MiLCJqb2luIiwiX19kaXJuYW1lIiwibG9vcCJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxPQUFPQyxRQUFRLE1BQVIsQ0FBYjs7QUFFQUMsT0FBT0MsT0FBUCxHQUFpQkMsU0FBUztBQUN4QixNQUFJQyxLQUFKO0FBQ0EsTUFBSUMsVUFBVSxDQUFkOztBQUVBLFFBQU1DLGNBQWMsTUFBTTtBQUN4QixVQUFNQyxhQUFhQyxTQUFTQyxhQUFULENBQXVCLEtBQXZCLENBQW5CO0FBQ0FGLGVBQVdHLFlBQVgsQ0FBd0IsSUFBeEIsRUFBOEIsYUFBOUI7QUFDQUgsZUFBV0ksU0FBWCxHQUF1Qiw0RUFBdkI7QUFDQUosZUFBV0ssYUFBWCxDQUF5QixRQUF6QixFQUFtQ0MsZ0JBQW5DLENBQW9ELE9BQXBELEVBQTZEQyxTQUE3RDs7QUFFQSxXQUFPUCxVQUFQO0FBQ0QsR0FQRDs7QUFTQSxRQUFNUSxZQUFZQyxRQUFRO0FBQ3hCWixVQUFNUSxhQUFOLENBQW9CLEdBQXBCLEVBQXlCRCxTQUF6QixHQUFxQ0ssSUFBckM7QUFDQVg7QUFDQUQsVUFBTWEsU0FBTixDQUFnQkMsR0FBaEIsQ0FBb0IsTUFBcEI7QUFDRCxHQUpEOztBQU1BLFFBQU1KLFlBQVksTUFBTTtBQUN0QlYsVUFBTVEsYUFBTixDQUFvQixHQUFwQixFQUF5QkQsU0FBekIsR0FBcUMsRUFBckM7QUFDQU47QUFDQUQsVUFBTWEsU0FBTixDQUFnQkUsTUFBaEIsQ0FBdUIsTUFBdkI7QUFDRCxHQUpEOztBQU1BQyxTQUFPQyxLQUFQLEdBQWVOLFNBQWY7O0FBRUEsUUFBTU8sY0FBYyxNQUFNbkIsTUFBTW9CLFFBQU4sQ0FBZWxCLE9BQWYsQ0FBMUI7O0FBRUFELFVBQVFFLGFBQVI7QUFDQUUsV0FBU2dCLElBQVQsQ0FBY0MsV0FBZCxDQUEwQnJCLEtBQTFCO0FBQ0FJLFdBQVNLLGdCQUFULENBQTBCLFNBQTFCLEVBQXFDYSxTQUFTQSxNQUFNQyxPQUFOLEtBQWtCLEVBQWxCLElBQXdCYixXQUF0RTs7QUFFQVgsUUFBTXlCLFNBQU4sQ0FBZ0I3QixLQUFLOEIsSUFBTCxDQUFVQyxTQUFWLEVBQXFCLGNBQXJCLENBQWhCO0FBQ0EzQixRQUFNNEIsSUFBTixDQUFXVCxXQUFYO0FBQ0QsQ0FuQ0QiLCJmaWxlIjoiZ29vZ2xlY2FsZW5kYXIvd2Vidmlldy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRnJhbnogPT4ge1xuICBsZXQgbW9kYWw7XG4gIGxldCB1cGRhdGVzID0gMDtcblxuICBjb25zdCBjcmVhdGVNb2RhbCA9ICgpID0+IHtcbiAgICBjb25zdCBmcmFuek1vZGFsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZnJhbnpNb2RhbC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2ZyYW56LW1vZGFsJyk7XG4gICAgZnJhbnpNb2RhbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj48c3BhbiBjbGFzcz1cImNsb3NlXCI+JnRpbWVzOzwvc3Bhbj48cD48L3A+PC9kaXY+JztcbiAgICBmcmFuek1vZGFsLnF1ZXJ5U2VsZWN0b3IoJy5jbG9zZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGlkZU1vZGFsKTtcblxuICAgIHJldHVybiBmcmFuek1vZGFsO1xuICB9O1xuXG4gIGNvbnN0IHNob3dNb2RhbCA9IHRleHQgPT4ge1xuICAgIG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ3AnKS5pbm5lckhUTUwgPSB0ZXh0O1xuICAgIHVwZGF0ZXMrKztcbiAgICBtb2RhbC5jbGFzc0xpc3QuYWRkKCdvcGVuJyk7XG4gIH07XG5cbiAgY29uc3QgaGlkZU1vZGFsID0gKCkgPT4ge1xuICAgIG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ3AnKS5pbm5lckhUTUwgPSAnJztcbiAgICB1cGRhdGVzLS07XG4gICAgbW9kYWwuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpO1xuICB9O1xuXG4gIHdpbmRvdy5hbGVydCA9IHNob3dNb2RhbDtcblxuICBjb25zdCBnZXRNZXNzYWdlcyA9ICgpID0+IEZyYW56LnNldEJhZGdlKHVwZGF0ZXMpO1xuXG4gIG1vZGFsID0gY3JlYXRlTW9kYWwoKTtcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtb2RhbCk7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PiBldmVudC5rZXlDb2RlID09PSAyNyAmJiBoaWRlTW9kYWwoKSk7XG5cbiAgRnJhbnouaW5qZWN0Q1NTKHBhdGguam9pbihfX2Rpcm5hbWUsICdjYWxlbmRhci5jc3MnKSk7XG4gIEZyYW56Lmxvb3AoZ2V0TWVzc2FnZXMpO1xufTtcbiJdfQ== | ||