onionr/static-data/www/shared/sidebar/sidebar.js

167 lines
5.7 KiB
JavaScript

fetch('/shared/sidebar/sidebar.html', {
"method": "get",
headers: {
"token": webpass
}})
.then((resp) => resp.text())
.then(function(resp) {
document.getElementById('sidebarContainer').innerHTML = resp
var quickviews = bulmaQuickview.attach()
sidebarAddPeerRegister()
})
var sidebarActive = false
var lastLogOffset = 0
var logActive = false
var maxLogOutputSize = 1000000
var logfileOutputEl = null
async function showLog(){
fetch('/readfileoffset/onionr.log?offset=' + lastLogOffset, {
method: 'GET',
headers: {
"token": webpass
}})
.then((resp) => resp.json())
.then(function(resp){
let doScroll = function(){
if (!logActive){
logfileOutputEl.scrollTop = logfileOutputEl.scrollHeight;
}
}
if (! resp.data){
doScroll()
return
}
lastLogOffset = resp['new_offset']
var length = (new TextEncoder().encode(logfileOutputEl.innerText)).length
var tempText = logfileOutputEl.innerText
while(length > maxLogOutputSize){
tempText = tempText.substring(tempText.indexOf("\n") + 1)
length = (new TextEncoder().encode(tempText)).length
logfileOutputEl.innerText = tempText
}
logfileOutputEl.innerText += resp.data.replace(
/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '')
logfileOutputEl.innerText += "\n\n"
doScroll()
})
}
function sidebarAddPeerRegister(){
document.getElementById('addPeerBtn').onclick = function(){
let newPeer = document.getElementById('addPeerInput').value
if (! newPeer.includes(".")){
PNotify.error({text: "Invalid peer address"})
return
}
fetch('/addpeer/' + newPeer, {
method: 'POST',
headers: {
"token": webpass
}})
.then(function(resp){
if (! resp.ok){
if (resp.status == 409){
PNotify.notice({text: "Peer already added"})
throw new Error("Could not add peer " + newPeer + " already added")
}
PNotify.error({text: "Could not add peer. Is your input valid?"})
throw new Error("Could not add peer " + newPeer)
}
return resp
})
.then((resp) => resp.text())
.then(function(data) {
if (data == "success"){
PNotify.success({
text: 'Peer added'
})
return
}
else if(data == "already added"){
PNotify.notice({
text: 'Peer already added'
})
return
}
PNotify.error({text: data})
})
}
}
window.addEventListener("keydown", function(event) {
var refreshSideBarInterval = null
document.getElementById('logfileOutput').onmouseenter = function(e){
logActive = true
}
document.getElementById('logfileOutput').onmouseleave = function(e){
logActive = false
}
document.getElementsByClassName('closeSidebar')[0].onclick = function(){
sidebarActive = false
clearInterval(sidebarLogInterval)
clearInterval(refreshSideBarInterval)
}
if (event.key === "s"){
logfileOutputEl = document.getElementById('logfileOutput')
sidebarActive = true
if (document.activeElement.nodeName == "TEXTAREA" || document.activeElement.nodeName == "INPUT"){
if (! document.activeElement.hasAttribute("readonly")){
return
}
}
sidebarLogInterval = setInterval(function(){showLog()}, 1000)
let refreshSideBar = function(){
if (document.hidden){return}
var existingValue = document.getElementById("insertingBlocks").innerText
var existingUploadValue = document.getElementById("uploadBlocks")
fetch('/getgeneratingblocks', {
"method": "get",
headers: {
"token": webpass
}})
.then((resp) => resp.text())
.then(function(resp) {
console.debug(resp.length, existingValue)
if (resp.length <= 2 && existingValue !== "0"){
document.getElementById("insertingBlocks").innerText = "0"
return
}
if (existingValue === resp.split(',').length){
return
}
document.getElementById("insertingBlocks").innerText = resp.split(',').length - 1
})
fetch('/getblockstoupload', {
"method": "get",
headers: {
"token": webpass
}})
.then((resp) => resp.text())
.then(function(resp) {
if (resp.length <= 2 && existingUploadValue !== "0"){
document.getElementById("uploadBlocks").innerText = "0"
return
}
if (existingUploadValue === resp.split(',').length){
return
}
document.getElementById("uploadBlocks").innerText = resp.split(',').length - 1
})
}
refreshSideBarInterval = setInterval(refreshSideBar, 3000)
setTimeout(function(){document.getElementsByClassName('sidebarBtn')[0].click()}, 300)
}
}, true)