Skip to content
This repository was archived by the owner on May 2, 2021. It is now read-only.

Commit 292b806

Browse files
authored
Merge pull request #74 from fevrcoding/feat/push
Push notifications
2 parents e641bdf + c7fca2c commit 292b806

File tree

21 files changed

+273
-134
lines changed

21 files changed

+273
-134
lines changed

.eleventy.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ module.exports = function (eleventyConfig) {
7171

7272
eleventyConfig.addPassthroughCopy({ 'static/*.*': '.' });
7373

74+
eleventyConfig.addWatchTarget('./src/_js/');
75+
7476
eleventyConfig.addDataExtension('yaml', (contents) =>
7577
yaml.safeLoad(contents),
7678
);

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,6 @@ img/uploads
1010
# TODO: Import ignores from: https://www.gitignore.io/api/jekyll,node,windows,linux,macos,ruby,webstorm
1111

1212
convert
13+
14+
# Local Netlify folder
15+
.netlify
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
const axios = require('axios');
2+
3+
const { ONE_SIGNAL_API_KEY, ONE_SIGNAL_APP_ID } = process.env;
4+
5+
exports.handler = async function ({ body = '{}' }) {
6+
const { payload = {} } = JSON.parse(body);
7+
8+
const ret = {
9+
statusCode: 200,
10+
};
11+
12+
if (payload.branch !== 'master') {
13+
return ret;
14+
}
15+
16+
const { data } = await axios.get(
17+
`https://api.github.com/repos/fevrcoding/fevrcoding.github.io/commits/${payload.commit_ref}`,
18+
);
19+
20+
const [, eventPath] =
21+
data.commit.message.match(/fevrcoding\/cms\/event\/(.+?)\n/) || [];
22+
23+
if (!eventPath) {
24+
return ret;
25+
}
26+
27+
const eventFile = data.files.find(
28+
({ filename, status }) =>
29+
status === 'added' && filename.includes(eventPath),
30+
);
31+
32+
if (!eventFile) {
33+
return ret;
34+
}
35+
36+
const { data: eventTxt } = await axios.get(eventFile.raw_url, {
37+
responseType: 'text',
38+
});
39+
40+
const [, eventTitle] = eventTxt.match(/title:(.+?)\n/) || [];
41+
42+
if (!eventTitle) {
43+
return ret;
44+
}
45+
46+
axios.post(
47+
'https://onesignal.com/api/v1/notifications',
48+
{
49+
included_segments: ['Active Users'],
50+
app_id: ONE_SIGNAL_APP_ID,
51+
headings: {
52+
en: 'Nuovo evento!',
53+
},
54+
contents: {
55+
en: eventTitle,
56+
},
57+
web_url: 'https://www.fevr.it/',
58+
},
59+
{
60+
headers: { Authorization: `Basic ${ONE_SIGNAL_API_KEY}` },
61+
},
62+
);
63+
return ret;
64+
};

package-lock.json

Lines changed: 41 additions & 28 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"prettier": "^2.2.1"
2929
},
3030
"dependencies": {
31+
"axios": "^0.21.1",
3132
"workbox-routing": "^6.0.2",
3233
"workbox-strategies": "^6.0.2"
3334
}

src/.eslintrc

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
"root": true,
33
"extends": ["eslint:recommended", "plugin:prettier/recommended"],
44
"env": {
5-
"browser": true
5+
"browser": true,
6+
"es6": true
7+
},
8+
"globals": {
9+
"process": true
610
},
711
"parserOptions": {
812
"ecmaVersion": 2020,
@@ -14,5 +18,13 @@
1418
"block-scoped-var": "error",
1519
"consistent-return": "error",
1620
"eqeqeq": "error"
17-
}
21+
},
22+
"overrides": [
23+
{
24+
"files": ["**/*-worker.js"],
25+
"env": {
26+
"serviceworker": true
27+
}
28+
}
29+
]
1830
}

src/_data/env.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/* eslint-env node */
2+
module.exports = {
3+
PRODUCTION: process.env.ELEVENTY_ENV === 'production',
4+
};

src/_includes/footer.njk

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -66,23 +66,4 @@
6666
</div>
6767
</div>
6868
</div>
69-
</footer>
70-
<script type="module">
71-
const toggler = document.querySelector('.navbar-toggle');
72-
if (toggler) {
73-
const target = document.querySelector(toggler.dataset.target)
74-
toggler.addEventListener('click', (e) => {
75-
e.preventDefault();
76-
const opened = !toggler.classList.contains('collapsed')
77-
toggler.classList[opened ? 'add' : 'remove']('collapsed')
78-
toggler.setAttribute('aria-expanded', String(!opened))
79-
target.classList[opened ? 'remove' : 'add']('in')
80-
if (opened) {
81-
}
82-
})
83-
}
84-
85-
if ('serviceWorker' in navigator) {
86-
navigator.serviceWorker.register('/service-worker.js');
87-
}
88-
</script>
69+
</footer>

src/_includes/head.njk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@
103103
{%- if isHome %}
104104
<script defer src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script>
105105
{%- endif %}
106+
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script>
107+
<script type="module" src="/js/main.js"></script>
106108
<!-- Google Analytics -->
107109
<script>
108110
(function (i, s, o, g, r, a, m) {

src/_includes/header.njk

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
<!-- Header Start -->
22
<header>
3+
<div id="notification-bar" class="alert alert-warning" hidden>
4+
<span class='onesignal-customlink-container'></span>
5+
<button type="button" class="close" aria-label="Chiudi"><span aria-hidden="true">&times;</span></button>
6+
</div>
7+
<div id="token"></div>
38
<div class="container">
49
<div class="row">
510
<div class="col-md-12">

0 commit comments

Comments
 (0)