mirror of
https://gitlab.com/MrFry/moodle-test-userscript
synced 2025-04-01 20:22:48 +02:00
new peer adding port fix, deprecated server handling, better peer selector updating
This commit is contained in:
parent
0e6ccc4595
commit
f0fa999571
1 changed files with 92 additions and 39 deletions
131
stable.user.js
131
stable.user.js
|
@ -46,7 +46,7 @@
|
|||
// : Script header {{{
|
||||
// ==UserScript==
|
||||
// @name Moodle/Elearning/KMOOC test help
|
||||
// @version 2.1.5.1
|
||||
// @version 2.1.5.2
|
||||
// @description Online Moodle/Elearning/KMOOC test help
|
||||
// @author MrFry
|
||||
// @match https://elearning.uni-obuda.hu/*
|
||||
|
@ -93,17 +93,19 @@
|
|||
;(function () {
|
||||
// CONFIG
|
||||
let serverToUse = getJSONVal('serverToUse')
|
||||
const defultServer = {
|
||||
host: 'piros.trambul.in',
|
||||
port: 443,
|
||||
}
|
||||
|
||||
if (!serverToUse) {
|
||||
serverToUse = {
|
||||
host: 'piros.trambul.in',
|
||||
port: 443,
|
||||
}
|
||||
serverToUse = defultServer
|
||||
setJSONVal('serverToUse', serverToUse)
|
||||
}
|
||||
const logElementGetting = false
|
||||
const logEnabled = true
|
||||
const motdShowCount = 5 // Ammount of times to show motd
|
||||
let infoExpireTime = 60 * 5 // Every n seconds basic info should be (re)loaded from server
|
||||
let infoExpireTime = 60 * 5
|
||||
let p2pInfoExpireTime = 60 * 60 * 24
|
||||
let loggedIn = false
|
||||
const messageOpacityDelta = 0.1
|
||||
|
@ -1671,6 +1673,33 @@
|
|||
})
|
||||
}
|
||||
|
||||
function handleDeprecatedServer() {
|
||||
const peers = getJSONVal('peers')
|
||||
if (!peers) return
|
||||
const newPeers = peers.filter((x) => {
|
||||
return x.host !== serverToUse.host && x.port !== serverToUse.port
|
||||
})
|
||||
|
||||
const removedCurrentPeer = peers.length > newPeers.length
|
||||
|
||||
if (removedCurrentPeer) {
|
||||
if (newPeers.length === 0) {
|
||||
newPeers.push(defultServer)
|
||||
}
|
||||
|
||||
setJSONVal('peers', newPeers)
|
||||
serverToUse = defultServer
|
||||
setJSONVal('serverToUse', serverToUse)
|
||||
serverAdress = getPeerUrl(serverToUse)
|
||||
apiAdress = getPeerUrl(serverToUse) + 'api/'
|
||||
|
||||
infoExpireTime = 0
|
||||
p2pInfoExpireTime = 0
|
||||
}
|
||||
|
||||
return removedCurrentPeer
|
||||
}
|
||||
|
||||
function ConnectToServer() {
|
||||
clearAllMessages()
|
||||
resetMenu()
|
||||
|
@ -1687,6 +1716,16 @@
|
|||
NoUserAction()
|
||||
return
|
||||
}
|
||||
|
||||
if (inf.isDeprecated) {
|
||||
const hadDeprecatedServer = handleDeprecatedServer()
|
||||
if (hadDeprecatedServer) {
|
||||
log('Removed deprecated server')
|
||||
ConnectToServer()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
loggedIn = true
|
||||
lastestVersion = inf.version.replace(/\n/g, '')
|
||||
motd = inf.motd
|
||||
|
@ -1699,11 +1738,18 @@
|
|||
elem.innerText = `${subjInfo.subjects.toLocaleString()} tárgy, ${subjInfo.questions.toLocaleString()} kérdés`
|
||||
})
|
||||
|
||||
getPeers().catch(() => warn('unable to get p2p info'))
|
||||
getPeers()
|
||||
.then(() => {
|
||||
SafeGetElementById('peerSelector', (elem) => {
|
||||
updatePeerSelector(elem)
|
||||
})
|
||||
})
|
||||
.catch(() => warn('unable to get p2p info'))
|
||||
SafeGetElementById('peerSelector', (elem) => {
|
||||
elem.style.display = ''
|
||||
})
|
||||
AfterLoad()
|
||||
registerScript()
|
||||
} catch (e) {
|
||||
warn(e)
|
||||
}
|
||||
|
@ -1904,7 +1950,7 @@
|
|||
return
|
||||
}
|
||||
|
||||
let port = hostUrl.includes('http:') ? 80 : 432
|
||||
let port = hostUrl.includes('http:') ? 80 : 443
|
||||
if (hostUrl.split(':').length > 1) {
|
||||
port = hostUrl.split(':')[1]
|
||||
port = port.replace(/\//g, '')
|
||||
|
@ -1980,9 +2026,9 @@
|
|||
const greetMsg = []
|
||||
|
||||
if (isNewVersionAvaible) {
|
||||
timeout = 5
|
||||
greetMsg.push(texts.newVersionAvaible + lastestVersion)
|
||||
timeout = undefined
|
||||
// timeout = 5
|
||||
// greetMsg.push(texts.newVersionAvaible + lastestVersion)
|
||||
// timeout = undefined
|
||||
}
|
||||
if (newVersion) {
|
||||
greetMsg.push(texts.versionUpdated + info().script.version)
|
||||
|
@ -2797,31 +2843,6 @@
|
|||
margin: '4px 0px',
|
||||
})
|
||||
|
||||
const peers = getJSONVal('peers') || []
|
||||
|
||||
peers.forEach((peer, i) => {
|
||||
const option = document.createElement('option')
|
||||
option.innerText = getPeerUrl(peer, true)
|
||||
option.value = i
|
||||
|
||||
peerSelector.appendChild(option)
|
||||
})
|
||||
const newPeerOption = document.createElement('option')
|
||||
newPeerOption.innerText = texts.addNewPeer
|
||||
newPeerOption.value = 'new'
|
||||
peerSelector.appendChild(newPeerOption)
|
||||
|
||||
peerSelector.addEventListener('change', (e) => {
|
||||
const selectedValue = e.target.value
|
||||
if (selectedValue === 'new') {
|
||||
addNewHost()
|
||||
} else {
|
||||
skipAvailablePeerFind = true
|
||||
const selectedPeer = peers[selectedValue]
|
||||
connectToPeer(selectedPeer)
|
||||
}
|
||||
})
|
||||
|
||||
updatePeerSelector(peerSelector)
|
||||
|
||||
return peerSelector
|
||||
|
@ -2946,15 +2967,48 @@
|
|||
}
|
||||
}
|
||||
|
||||
function onPeerSelect(e) {
|
||||
const peers = getJSONVal('peers') || []
|
||||
const selectedValue = e.target.value
|
||||
if (selectedValue === 'new') {
|
||||
addNewHost()
|
||||
} else {
|
||||
skipAvailablePeerFind = true
|
||||
const selectedPeer = peers[selectedValue]
|
||||
if (!selectedPeer) {
|
||||
return
|
||||
}
|
||||
connectToPeer(selectedPeer)
|
||||
}
|
||||
}
|
||||
|
||||
function updatePeerSelector(selector) {
|
||||
try {
|
||||
const peers = getJSONVal('peers')
|
||||
const peerSelector = document.getElementById('peerSelector') || selector
|
||||
if (!peerSelector) return
|
||||
const peers = getJSONVal('peers') || []
|
||||
|
||||
peerSelector.length = 0
|
||||
peers.forEach((peer, i) => {
|
||||
const option = document.createElement('option')
|
||||
option.innerText = getPeerUrl(peer, true)
|
||||
option.value = i
|
||||
|
||||
peerSelector.appendChild(option)
|
||||
})
|
||||
const newPeerOption = document.createElement('option')
|
||||
newPeerOption.innerText = texts.addNewPeer
|
||||
newPeerOption.value = 'new'
|
||||
peerSelector.appendChild(newPeerOption)
|
||||
|
||||
peerSelector.removeEventListener('change', onPeerSelect)
|
||||
peerSelector.addEventListener('change', onPeerSelect)
|
||||
|
||||
const selectedPeer = getJSONVal('serverToUse')
|
||||
const selectedIndex = peers.findIndex((x) => {
|
||||
return getPeerUrl(x) === getPeerUrl(selectedPeer)
|
||||
})
|
||||
selector.value = selectedIndex
|
||||
peerSelector.value = selectedIndex
|
||||
} catch (e) {
|
||||
debugLog('error in updatePeerSelector')
|
||||
}
|
||||
|
@ -3149,7 +3203,6 @@
|
|||
}
|
||||
|
||||
function GetXHRInfos() {
|
||||
registerScript()
|
||||
const now = new Date().getTime()
|
||||
let lastCheck = getVal('lastInfoCheckTime')
|
||||
if (!lastCheck) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue