MVP Wallpaper Setter
This commit is contained in:
commit
176a46c2e9
44
project.json
Normal file
44
project.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"file" : "scene.html",
|
||||
"description": "Storage limit: 10240 images because of windows max path and locastorage limits",
|
||||
"general" :
|
||||
{
|
||||
"properties" :
|
||||
{
|
||||
"schemecolor" :
|
||||
{
|
||||
"order" : 0,
|
||||
"text" : "ui_browse_properties_scheme_color",
|
||||
"type" : "color",
|
||||
"value" : "0.8980392156862745 0.18823529411764706 0.9294117647058824"
|
||||
},
|
||||
"dir" :
|
||||
{
|
||||
"index" : 2,
|
||||
"order": 102,
|
||||
"mode" : "fetchall",
|
||||
"text" : "Wallpaper Dir",
|
||||
"type" : "directory"
|
||||
},
|
||||
"uri" :
|
||||
{
|
||||
"index" : 1,
|
||||
"order" : 101,
|
||||
"text" : "Socket URI",
|
||||
"type" : "textinput",
|
||||
"value" : ""
|
||||
},
|
||||
"systemid" :
|
||||
{
|
||||
"index" : 0,
|
||||
"order" : 100,
|
||||
"text" : "System ID",
|
||||
"type" : "textinput",
|
||||
"value" : ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"title" : "PluralKit",
|
||||
"type" : "scene",
|
||||
"version" : 0
|
||||
}
|
22
scene.html
Normal file
22
scene.html
Normal file
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- Webpage that uses Bootstrap to fill the background with an image from JS -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Bootstrap Background</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
|
||||
<script src="scripts/scene.js"></script>
|
||||
<!-- LiveJS is not supported when run with the file:// protocol -->
|
||||
<!-- <script src="https://livejs.com/live.js"></script> -->
|
||||
<style>
|
||||
body {
|
||||
/* background-image: url('https://picsum.photos/3840/2160'); */
|
||||
background-size: cover;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body id="wallpaper">
|
||||
</body>
|
||||
</html>
|
45
scene.json
Normal file
45
scene.json
Normal file
@ -0,0 +1,45 @@
|
||||
{
|
||||
"camera" :
|
||||
{
|
||||
"center" : "0.00000 0.00000 -1.00000",
|
||||
"eye" : "0.00000 0.00000 0.00000",
|
||||
"up" : "0.00000 1.00000 0.00000"
|
||||
},
|
||||
"general" :
|
||||
{
|
||||
"ambientcolor" : "0.30000 0.30000 0.30000",
|
||||
"bloom" : false,
|
||||
"bloomhdrfeather" : 0.1,
|
||||
"bloomhdriterations" : 8,
|
||||
"bloomhdrscatter" : 1.619,
|
||||
"bloomhdrstrength" : 2.0,
|
||||
"bloomhdrthreshold" : 1.0,
|
||||
"bloomstrength" : 2.0,
|
||||
"bloomthreshold" : 0.64999998,
|
||||
"camerafade" : true,
|
||||
"cameraparallax" : false,
|
||||
"cameraparallaxamount" : 0.5,
|
||||
"cameraparallaxdelay" : 0.1,
|
||||
"cameraparallaxmouseinfluence" : 0.5,
|
||||
"camerapreview" : true,
|
||||
"camerashake" : false,
|
||||
"camerashakeamplitude" : 0.5,
|
||||
"camerashakeroughness" : 1.0,
|
||||
"camerashakespeed" : 3.0,
|
||||
"clearcolor" : "0.70000 0.70000 0.70000",
|
||||
"clearenabled" : true,
|
||||
"farz" : 10000.0,
|
||||
"fov" : 50.0,
|
||||
"hdr" : false,
|
||||
"nearz" : 0.0099999998,
|
||||
"orthogonalprojection" :
|
||||
{
|
||||
"height" : 2160,
|
||||
"width" : 3840
|
||||
},
|
||||
"skylightcolor" : "0.30000 0.30000 0.30000",
|
||||
"zoom" : 1.0
|
||||
},
|
||||
"objects" : [],
|
||||
"version" : 1
|
||||
}
|
169
scripts/scene.js
Normal file
169
scripts/scene.js
Normal file
@ -0,0 +1,169 @@
|
||||
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)
|
||||
}
|
||||
|
||||
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(() => {
|
||||
loadSocket()
|
||||
}, 1200)
|
||||
}
|
||||
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()
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user