Remove dependence on node crypto module in landing.js
This commit is contained in:
parent
ab7e3c301c
commit
7e95771957
@ -2,8 +2,6 @@
|
|||||||
* Script for landing.ejs
|
* Script for landing.ejs
|
||||||
*/
|
*/
|
||||||
// Requirements
|
// Requirements
|
||||||
const cp = require('child_process')
|
|
||||||
const crypto = require('crypto')
|
|
||||||
const { URL } = require('url')
|
const { URL } = require('url')
|
||||||
const {
|
const {
|
||||||
MojangRestAPI,
|
MojangRestAPI,
|
||||||
@ -800,6 +798,16 @@ function showNewsAlert(){
|
|||||||
$(newsButtonAlert).fadeIn(250)
|
$(newsButtonAlert).fadeIn(250)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function digestMessage(str) {
|
||||||
|
const msgUint8 = new TextEncoder().encode(str)
|
||||||
|
const hashBuffer = await crypto.subtle.digest('SHA-1', msgUint8)
|
||||||
|
const hashArray = Array.from(new Uint8Array(hashBuffer))
|
||||||
|
const hashHex = hashArray
|
||||||
|
.map((b) => b.toString(16).padStart(2, '0'))
|
||||||
|
.join('')
|
||||||
|
return hashHex
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize News UI. This will load the news and prepare
|
* Initialize News UI. This will load the news and prepare
|
||||||
* the UI accordingly.
|
* the UI accordingly.
|
||||||
@ -807,106 +815,93 @@ function showNewsAlert(){
|
|||||||
* @returns {Promise.<void>} A promise which resolves when the news
|
* @returns {Promise.<void>} A promise which resolves when the news
|
||||||
* content has finished loading and transitioning.
|
* content has finished loading and transitioning.
|
||||||
*/
|
*/
|
||||||
function initNews(){
|
async function initNews(){
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
setNewsLoading(true)
|
||||||
setNewsLoading(true)
|
|
||||||
|
|
||||||
let news = {}
|
const news = await loadNews()
|
||||||
loadNews().then(news => {
|
|
||||||
|
|
||||||
newsArr = news?.articles || null
|
newsArr = news?.articles || null
|
||||||
|
|
||||||
if(newsArr == null){
|
if(newsArr == null){
|
||||||
// News Loading Failed
|
// News Loading Failed
|
||||||
setNewsLoading(false)
|
setNewsLoading(false)
|
||||||
|
|
||||||
$('#newsErrorLoading').fadeOut(250, () => {
|
await $('#newsErrorLoading').fadeOut(250).promise()
|
||||||
$('#newsErrorFailed').fadeIn(250, () => {
|
await $('#newsErrorFailed').fadeIn(250).promise()
|
||||||
resolve()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
} else if(newsArr.length === 0) {
|
|
||||||
// No News Articles
|
|
||||||
setNewsLoading(false)
|
|
||||||
|
|
||||||
ConfigManager.setNewsCache({
|
} else if(newsArr.length === 0) {
|
||||||
date: null,
|
// No News Articles
|
||||||
content: null,
|
setNewsLoading(false)
|
||||||
dismissed: false
|
|
||||||
})
|
|
||||||
ConfigManager.save()
|
|
||||||
|
|
||||||
$('#newsErrorLoading').fadeOut(250, () => {
|
ConfigManager.setNewsCache({
|
||||||
$('#newsErrorNone').fadeIn(250, () => {
|
date: null,
|
||||||
resolve()
|
content: null,
|
||||||
})
|
dismissed: false
|
||||||
})
|
})
|
||||||
} else {
|
ConfigManager.save()
|
||||||
// Success
|
|
||||||
setNewsLoading(false)
|
|
||||||
|
|
||||||
const lN = newsArr[0]
|
await $('#newsErrorLoading').fadeOut(250).promise()
|
||||||
const cached = ConfigManager.getNewsCache()
|
await $('#newsErrorNone').fadeIn(250).promise()
|
||||||
let newHash = crypto.createHash('sha1').update(lN.content).digest('hex')
|
} else {
|
||||||
let newDate = new Date(lN.date)
|
// Success
|
||||||
let isNew = false
|
setNewsLoading(false)
|
||||||
|
|
||||||
if(cached.date != null && cached.content != null){
|
const lN = newsArr[0]
|
||||||
|
const cached = ConfigManager.getNewsCache()
|
||||||
|
let newHash = await digestMessage(lN.content)
|
||||||
|
let newDate = new Date(lN.date)
|
||||||
|
let isNew = false
|
||||||
|
|
||||||
if(new Date(cached.date) >= newDate){
|
if(cached.date != null && cached.content != null){
|
||||||
|
|
||||||
// Compare Content
|
if(new Date(cached.date) >= newDate){
|
||||||
if(cached.content !== newHash){
|
|
||||||
isNew = true
|
|
||||||
showNewsAlert()
|
|
||||||
} else {
|
|
||||||
if(!cached.dismissed){
|
|
||||||
isNew = true
|
|
||||||
showNewsAlert()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
// Compare Content
|
||||||
|
if(cached.content !== newHash){
|
||||||
|
isNew = true
|
||||||
|
showNewsAlert()
|
||||||
|
} else {
|
||||||
|
if(!cached.dismissed){
|
||||||
isNew = true
|
isNew = true
|
||||||
showNewsAlert()
|
showNewsAlert()
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
|
||||||
isNew = true
|
|
||||||
showNewsAlert()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isNew){
|
} else {
|
||||||
ConfigManager.setNewsCache({
|
isNew = true
|
||||||
date: newDate.getTime(),
|
showNewsAlert()
|
||||||
content: newHash,
|
|
||||||
dismissed: false
|
|
||||||
})
|
|
||||||
ConfigManager.save()
|
|
||||||
}
|
|
||||||
|
|
||||||
const switchHandler = (forward) => {
|
|
||||||
let cArt = parseInt(newsContent.getAttribute('article'))
|
|
||||||
let nxtArt = forward ? (cArt >= newsArr.length-1 ? 0 : cArt + 1) : (cArt <= 0 ? newsArr.length-1 : cArt - 1)
|
|
||||||
|
|
||||||
displayArticle(newsArr[nxtArt], nxtArt+1)
|
|
||||||
}
|
|
||||||
|
|
||||||
document.getElementById('newsNavigateRight').onclick = () => { switchHandler(true) }
|
|
||||||
document.getElementById('newsNavigateLeft').onclick = () => { switchHandler(false) }
|
|
||||||
|
|
||||||
$('#newsErrorContainer').fadeOut(250, () => {
|
|
||||||
displayArticle(newsArr[0], 1)
|
|
||||||
$('#newsContent').fadeIn(250, () => {
|
|
||||||
resolve()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
} else {
|
||||||
|
isNew = true
|
||||||
|
showNewsAlert()
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isNew){
|
||||||
|
ConfigManager.setNewsCache({
|
||||||
|
date: newDate.getTime(),
|
||||||
|
content: newHash,
|
||||||
|
dismissed: false
|
||||||
|
})
|
||||||
|
ConfigManager.save()
|
||||||
|
}
|
||||||
|
|
||||||
|
const switchHandler = (forward) => {
|
||||||
|
let cArt = parseInt(newsContent.getAttribute('article'))
|
||||||
|
let nxtArt = forward ? (cArt >= newsArr.length-1 ? 0 : cArt + 1) : (cArt <= 0 ? newsArr.length-1 : cArt - 1)
|
||||||
|
|
||||||
|
displayArticle(newsArr[nxtArt], nxtArt+1)
|
||||||
|
}
|
||||||
|
|
||||||
|
document.getElementById('newsNavigateRight').onclick = () => { switchHandler(true) }
|
||||||
|
document.getElementById('newsNavigateLeft').onclick = () => { switchHandler(false) }
|
||||||
|
await $('#newsErrorContainer').fadeOut(250).promise()
|
||||||
|
displayArticle(newsArr[0], 1)
|
||||||
|
await $('#newsContent').fadeIn(250).promise()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user