Created
September 27, 2017 08:06
-
-
Save skttl/dcdaf7488d358b4b36766d6c34249dc8 to your computer and use it in GitHub Desktop.
Notifikationer fra metalligaen.dk
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if (localStorage.getItem("metalliganot_following") == null) | |
{ | |
localStorage.setItem("metalliganot_following", "[]"); | |
} | |
function addFollowButtons() | |
{ | |
const games = document.querySelectorAll(".live .game"); | |
for (let i=0; i < games.length; i++) | |
{ | |
const game = games[i]; | |
const gameId = game.getAttribute("id"); | |
let checker = document.createElement("button"); | |
checker.setAttribute("data-game-id", gameId); | |
checker.innerText = JSON.parse(localStorage.getItem("metalliganot_following")).indexOf(gameId) > -1 ? "Følg ikke" : "Følg" | |
checker.addEventListener("click", function() { | |
toggleFollowing(gameId); | |
this.innerText = this.innerText == "Følg" ? "Følg ikke" : "Følg"; | |
}); | |
game.insertBefore(checker, game.firstChild); | |
} | |
} | |
function toggleFollowing(gameId) | |
{ | |
var following = JSON.parse(localStorage.getItem("metalliganot_following")); | |
var indexOfGameId = following.indexOf(gameId); | |
if (indexOfGameId > -1) { | |
following.splice(indexOfGameId, 1); | |
} | |
else { | |
following.push(gameId); | |
} | |
localStorage.setItem("metalliganot_following", JSON.stringify(following)); | |
} | |
function isFollowing(gameId) | |
{ | |
var following = JSON.parse(localStorage.getItem("metalliganot_following")); | |
return following.indexOf(gameId) > -1; | |
} | |
var seenEvents = []; | |
function initSeenEvents() | |
{ | |
fetch("/api/FallbackLive/Register?tournamentID=1374&getNews=false&getLiveBlog=false").then(function(response) { | |
return response.json(); | |
}).then(function(games) { | |
console.log(games); | |
for (let i=0; i<games.length; i++) | |
{ | |
var game = games[i]; | |
for (let e=0; e<game.events.length; e++) | |
{ | |
var ev = game.events[e]; | |
ev.gameID = game.gameID; | |
seenEvents.push(JSON.stringify(ev)); | |
} | |
} | |
}); | |
} | |
function hasSeenEvent(gameID, ev) | |
{ | |
ev.gameID = gameID; | |
return seenEvents.indexOf(JSON.stringify(ev)) > -1; | |
} | |
function notifyEvent(game, ev) | |
{ | |
if(window.Notification && Notification.permission !== "denied") { | |
Notification.requestPermission(function(status) { // status is "granted", if accepted by user | |
new Notification(game.homeTeamName + " - " + game.awayTeamName, { | |
body: ev.eventText, | |
icon: 'http://www.hockeyligaen.dk/' + game.gameID + '.png' // optional | |
}); | |
}); | |
} | |
} | |
setInterval(function() { | |
fetch("/api/FallbackLive/Register?tournamentID=1374&getNews=false&getLiveBlog=false").then(function(response) { | |
return response.json(); | |
}).then(function(games) { | |
console.log(games); | |
for (let i=0; i<games.length; i++) | |
{ | |
const game = games[i]; | |
if (isFollowing(game.gameID.toString())) | |
{ | |
console.log("following " + game.gameID); | |
var events = game.events.reverse().filter(ev => seenEvents.indexOf(JSON.stringify(ev)) < 0); | |
for (let e=0; e<events.length; e++) | |
{ | |
var ev = events[e]; | |
if (!hasSeenEvent(game.gameID, ev)) | |
{ | |
console.log(ev); | |
seenEvents.push(JSON.stringify(events[e])); | |
if (["Penalty","Goal","Period", "Comment", "Blog", "Spectators"].indexOf(ev.eventType) > -1) | |
{ | |
notifyEvent(game, ev); | |
} | |
} | |
} | |
} | |
} | |
}); | |
}, 15000); | |
initSeenEvents(); | |
addFollowButtons(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment