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 {{{
|
// : Script header {{{
|
||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name Moodle/Elearning/KMOOC test help
|
// @name Moodle/Elearning/KMOOC test help
|
||||||
// @version 2.1.5.1
|
// @version 2.1.5.2
|
||||||
// @description Online Moodle/Elearning/KMOOC test help
|
// @description Online Moodle/Elearning/KMOOC test help
|
||||||
// @author MrFry
|
// @author MrFry
|
||||||
// @match https://elearning.uni-obuda.hu/*
|
// @match https://elearning.uni-obuda.hu/*
|
||||||
|
@ -93,17 +93,19 @@
|
||||||
;(function () {
|
;(function () {
|
||||||
// CONFIG
|
// CONFIG
|
||||||
let serverToUse = getJSONVal('serverToUse')
|
let serverToUse = getJSONVal('serverToUse')
|
||||||
|
const defultServer = {
|
||||||
|
host: 'piros.trambul.in',
|
||||||
|
port: 443,
|
||||||
|
}
|
||||||
|
|
||||||
if (!serverToUse) {
|
if (!serverToUse) {
|
||||||
serverToUse = {
|
serverToUse = defultServer
|
||||||
host: 'piros.trambul.in',
|
|
||||||
port: 443,
|
|
||||||
}
|
|
||||||
setJSONVal('serverToUse', serverToUse)
|
setJSONVal('serverToUse', serverToUse)
|
||||||
}
|
}
|
||||||
const logElementGetting = false
|
const logElementGetting = false
|
||||||
const logEnabled = true
|
const logEnabled = true
|
||||||
const motdShowCount = 5 // Ammount of times to show motd
|
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 p2pInfoExpireTime = 60 * 60 * 24
|
||||||
let loggedIn = false
|
let loggedIn = false
|
||||||
const messageOpacityDelta = 0.1
|
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() {
|
function ConnectToServer() {
|
||||||
clearAllMessages()
|
clearAllMessages()
|
||||||
resetMenu()
|
resetMenu()
|
||||||
|
@ -1687,6 +1716,16 @@
|
||||||
NoUserAction()
|
NoUserAction()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (inf.isDeprecated) {
|
||||||
|
const hadDeprecatedServer = handleDeprecatedServer()
|
||||||
|
if (hadDeprecatedServer) {
|
||||||
|
log('Removed deprecated server')
|
||||||
|
ConnectToServer()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
loggedIn = true
|
loggedIn = true
|
||||||
lastestVersion = inf.version.replace(/\n/g, '')
|
lastestVersion = inf.version.replace(/\n/g, '')
|
||||||
motd = inf.motd
|
motd = inf.motd
|
||||||
|
@ -1699,11 +1738,18 @@
|
||||||
elem.innerText = `${subjInfo.subjects.toLocaleString()} tárgy, ${subjInfo.questions.toLocaleString()} kérdés`
|
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) => {
|
SafeGetElementById('peerSelector', (elem) => {
|
||||||
elem.style.display = ''
|
elem.style.display = ''
|
||||||
})
|
})
|
||||||
AfterLoad()
|
AfterLoad()
|
||||||
|
registerScript()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
warn(e)
|
warn(e)
|
||||||
}
|
}
|
||||||
|
@ -1904,7 +1950,7 @@
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let port = hostUrl.includes('http:') ? 80 : 432
|
let port = hostUrl.includes('http:') ? 80 : 443
|
||||||
if (hostUrl.split(':').length > 1) {
|
if (hostUrl.split(':').length > 1) {
|
||||||
port = hostUrl.split(':')[1]
|
port = hostUrl.split(':')[1]
|
||||||
port = port.replace(/\//g, '')
|
port = port.replace(/\//g, '')
|
||||||
|
@ -1980,9 +2026,9 @@
|
||||||
const greetMsg = []
|
const greetMsg = []
|
||||||
|
|
||||||
if (isNewVersionAvaible) {
|
if (isNewVersionAvaible) {
|
||||||
timeout = 5
|
// timeout = 5
|
||||||
greetMsg.push(texts.newVersionAvaible + lastestVersion)
|
// greetMsg.push(texts.newVersionAvaible + lastestVersion)
|
||||||
timeout = undefined
|
// timeout = undefined
|
||||||
}
|
}
|
||||||
if (newVersion) {
|
if (newVersion) {
|
||||||
greetMsg.push(texts.versionUpdated + info().script.version)
|
greetMsg.push(texts.versionUpdated + info().script.version)
|
||||||
|
@ -2797,31 +2843,6 @@
|
||||||
margin: '4px 0px',
|
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)
|
updatePeerSelector(peerSelector)
|
||||||
|
|
||||||
return 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) {
|
function updatePeerSelector(selector) {
|
||||||
try {
|
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 selectedPeer = getJSONVal('serverToUse')
|
||||||
const selectedIndex = peers.findIndex((x) => {
|
const selectedIndex = peers.findIndex((x) => {
|
||||||
return getPeerUrl(x) === getPeerUrl(selectedPeer)
|
return getPeerUrl(x) === getPeerUrl(selectedPeer)
|
||||||
})
|
})
|
||||||
selector.value = selectedIndex
|
peerSelector.value = selectedIndex
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
debugLog('error in updatePeerSelector')
|
debugLog('error in updatePeerSelector')
|
||||||
}
|
}
|
||||||
|
@ -3149,7 +3203,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function GetXHRInfos() {
|
function GetXHRInfos() {
|
||||||
registerScript()
|
|
||||||
const now = new Date().getTime()
|
const now = new Date().getTime()
|
||||||
let lastCheck = getVal('lastInfoCheckTime')
|
let lastCheck = getVal('lastInfoCheckTime')
|
||||||
if (!lastCheck) {
|
if (!lastCheck) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue