aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/googlecalendar
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-05-27 23:58:09 +0200
committerLibravatar Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com>2021-07-24 00:23:17 +0000
commit26cf70e834030fed95701db9b44efd4af9660c27 (patch)
tree5f498f61a497a24ee0d84e4effea7a18148fff80 /recipes/googlecalendar
parent[msteams] Context isolation support (diff)
downloadferdium-recipes-26cf70e834030fed95701db9b44efd4af9660c27.tar.gz
ferdium-recipes-26cf70e834030fed95701db9b44efd4af9660c27.tar.zst
ferdium-recipes-26cf70e834030fed95701db9b44efd4af9660c27.zip
[googlecalendar] Context isolation support
Diffstat (limited to 'recipes/googlecalendar')
-rw-r--r--recipes/googlecalendar/package.json2
-rw-r--r--recipes/googlecalendar/webview-unsafe.js39
-rw-r--r--recipes/googlecalendar/webview.js43
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 @@
1let modal;
2let updates = 0;
3
4const waitFor = (condition, callback) => {
5 if (!condition()) {
6 window.setTimeout(waitFor.bind(null, condition, callback), 100);
7 } else {
8 callback();
9 }
10};
11
12const showModal = text => {
13 modal.querySelector('p').innerHTML = text;
14 updates += 1;
15 window.franz.setBadge(updates);
16 modal.classList.add('open');
17};
18
19const hideModal = () => {
20 modal.querySelector('p').innerHTML = '';
21 updates -= 1;
22 window.franz.setBadge(updates);
23 modal.classList.remove('open');
24};
25
26const createModal = () => {
27 const franzModal = document.createElement('div');
28 franzModal.setAttribute('id', 'franz-modal');
29 franzModal.innerHTML = '<div class="modal-content"><span class="close">&times;</span><p></p></div>';
30 franzModal.querySelector('.close').addEventListener('click', hideModal);
31
32 return franzModal;
33};
34
35window.alert = showModal;
36
37modal = createModal();
38waitFor(() => document.body, () => document.body.appendChild(modal));
39document.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 @@
3const path = require('path'); 3const path = require('path');
4 4
5module.exports = Franz => { 5module.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">&times;</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==