2023-06-18 08:24:24 +00:00
|
|
|
// TODO:
|
|
|
|
// - Support removal of images
|
2023-06-18 08:28:29 +00:00
|
|
|
// - Add adjustable slideshow speed
|
|
|
|
// - Add image fading
|
2023-06-18 08:24:24 +00:00
|
|
|
|
|
|
|
|
2023-06-18 08:17:25 +00:00
|
|
|
let socket
|
|
|
|
let socketStatus = false
|
|
|
|
|
|
|
|
let jsonValid = (json) => {
|
|
|
|
try {
|
|
|
|
JSON.parse(json);
|
|
|
|
if (json == null) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
let setWallpaper = (path) => {
|
|
|
|
console.log(`Setting wallpaper to ${path}`)
|
|
|
|
let wallpaper = document.getElementById('wallpaper')
|
|
|
|
// wallpaper.src = path
|
|
|
|
wallpaper.style.backgroundImage = `url(${path})`
|
|
|
|
}
|
|
|
|
|
|
|
|
let dumpStorage = () => {
|
|
|
|
console.log('%cDumping Local Storage', 'color: #EBCB8B; font-family: monospace; font-size: 18px;')
|
|
|
|
console.log(' Member:' + localStorage.getItem('member'))
|
|
|
|
// console.log(' Token' + localStorage.getItem('token'))
|
|
|
|
console.log(' System:' + localStorage.getItem('systemId'))
|
|
|
|
console.log(' Socket:' + localStorage.getItem('socket'))
|
|
|
|
console.log(' Wallpapers:' + localStorage.getItem('wallpapers'))
|
|
|
|
}
|
|
|
|
|
|
|
|
let grabLatestFronter = () => {
|
|
|
|
let systemId = localStorage.getItem('systemId')
|
|
|
|
if (systemId != null) {
|
|
|
|
var xhr = new XMLHttpRequest()
|
|
|
|
xhr.withCredentials = true
|
|
|
|
xhr.addEventListener("readystatechange", function() {
|
|
|
|
if(this.readyState === 4) {
|
|
|
|
// console.log(this.responseText)
|
|
|
|
let fronter = JSON.parse(this.responseText).members[0].id
|
|
|
|
localStorage.setItem('member', fronter)
|
|
|
|
console.log(`%cFronter: ${fronter}`, 'color: #ECEFF4; font-family: monospace;')
|
|
|
|
pickWallpaper()
|
|
|
|
}
|
|
|
|
})
|
|
|
|
xhr.open("GET", "https://api.pluralkit.me/v2/systems/"+systemId+"/fronters")
|
|
|
|
xhr.send()
|
|
|
|
}else{
|
|
|
|
localStorage.setItem('member', 'null')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
let pickWallpaper = () => {
|
|
|
|
let wallpapers = localStorage.getItem('wallpapers')
|
|
|
|
if (jsonValid(wallpapers)) {
|
|
|
|
wallpapers = JSON.parse(localStorage.getItem('wallpapers'))
|
|
|
|
} else {
|
|
|
|
wallpapers = []
|
|
|
|
console.log('%cWallpapers not found in Local Storage', 'color: #BF616A; font-size: 18px; font-family: monospace;')
|
|
|
|
}
|
|
|
|
// for (let index = wallpapers.length-1; index >= 0; index--) {
|
|
|
|
// if (!wallpapers.includes(localStorage.getItem('member'))) {
|
|
|
|
// wallpapers.splice(index, 1)
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
let validWallpapers = []
|
|
|
|
wallpapers.forEach(wp => {
|
|
|
|
if (wp.includes(localStorage.getItem('member'))) {
|
|
|
|
validWallpapers.push(wp)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
let wallpaper = "file:///" + validWallpapers[Math.floor(Math.random() * validWallpapers.length)]
|
|
|
|
if (validWallpapers.length == 0) {
|
|
|
|
wallpaper = "https://picsum.photos/3840/2160"
|
|
|
|
}
|
|
|
|
setWallpaper(wallpaper)
|
2023-06-18 08:28:29 +00:00
|
|
|
setTimeout(() => {
|
|
|
|
pickWallpaper()
|
|
|
|
}, 30000)
|
2023-06-18 08:17:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
let loadSocket = () => {
|
|
|
|
console.log('%cLoading Socket', 'color: #ECEFF4; font-family: monospace;')
|
|
|
|
if (socket){
|
|
|
|
try {
|
|
|
|
socket.close()
|
|
|
|
} catch (error) {
|
|
|
|
console.log('%cSocket not found', 'color: #BF616A; font-size: 18px; font-family: monospace;')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
socket = new WebSocket(localStorage.getItem('socket'))
|
|
|
|
socket.onopen = (e) => {
|
|
|
|
console.log('%cSocket Opened', 'color: #A3BE8C; font-size: 18px; font-family: serif;')
|
|
|
|
socketStatus = true
|
|
|
|
}
|
|
|
|
socket.onmessage = (e) => {
|
|
|
|
console.log('%cMessage Received', 'color: #ECEFF4; font-family: monospace;')
|
|
|
|
|
|
|
|
// e.data contains member ID
|
|
|
|
// console.dir(e)
|
|
|
|
localStorage.setItem('member', e.data)
|
|
|
|
pickWallpaper()
|
|
|
|
|
|
|
|
// Copilot-generated Code
|
|
|
|
// let data = JSON.parse(e.data)
|
|
|
|
// if (data.type === 'wallpaper') {
|
|
|
|
// setWallpaper(data.path)
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
socket.onclose = (e) => {
|
|
|
|
console.log('%cSocket Closed', 'color: #BF616A; font-size: 18px; font-family: serif;')
|
|
|
|
socketStatus = false
|
|
|
|
setTimeout(() => {
|
2023-06-18 08:29:39 +00:00
|
|
|
window.location.reload()
|
|
|
|
}, 3000)
|
2023-06-18 08:17:25 +00:00
|
|
|
}
|
|
|
|
socket.onerror = (e) => {
|
|
|
|
console.log('%cSocket Error', 'color: #BF616A; font-size: 18px; font-family: monospace;')
|
|
|
|
console.dir(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
window.wallpaperPropertyListener = {
|
|
|
|
applyUserProperties: function(properties) {
|
|
|
|
// Grab PKit token, System ID, and Socket URI
|
|
|
|
// if (properties.token) {
|
|
|
|
// // config.token = properties.token.value
|
|
|
|
// localStorage.setItem('token', properties.token.value)
|
|
|
|
// }
|
|
|
|
if (properties.systemid) {
|
|
|
|
// config.systemId = properties.systemid.value
|
|
|
|
localStorage.setItem('systemId', properties.systemid.value)
|
|
|
|
}
|
|
|
|
if (properties.uri) {
|
|
|
|
// config.socket = properties.uri.value
|
|
|
|
localStorage.setItem('socket', properties.uri.value)
|
|
|
|
}
|
|
|
|
dumpStorage()
|
|
|
|
// Reload Socket
|
|
|
|
if (socketStatus) {
|
|
|
|
socketStatus = false
|
|
|
|
socket.close()
|
|
|
|
}
|
|
|
|
loadSocket()
|
|
|
|
},
|
|
|
|
userDirectoryFilesAddedOrChanged: function(propertyName, changedFiles) {
|
|
|
|
// Do something with the list of added files here
|
|
|
|
// console.dir(propertyName)
|
|
|
|
console.dir(changedFiles) // Array of filepaths added
|
|
|
|
let wallpapers = localStorage.getItem('wallpapers')
|
|
|
|
if (jsonValid(wallpapers)) {
|
|
|
|
wallpapers = JSON.parse(localStorage.getItem('wallpapers'))
|
|
|
|
} else {
|
|
|
|
wallpapers = []
|
|
|
|
console.log('%cWallpapers not found in Local Storage', 'color: #BF616A; font-size: 18px; font-family: monospace;')
|
|
|
|
}
|
|
|
|
changedFiles.forEach((file) => {
|
|
|
|
if (!wallpapers.includes(file)) {
|
|
|
|
wallpapers.push(file)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
localStorage.setItem('wallpapers', JSON.stringify(wallpapers))
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
window.onload = () => {
|
|
|
|
console.log("%cPage Loaded.", "background: #2E3440; color: #A3BE8C; font-size: 24px;")
|
|
|
|
// Set default member
|
|
|
|
dumpStorage()
|
|
|
|
grabLatestFronter()
|
|
|
|
loadSocket()
|
|
|
|
}
|