Version 0.9.0 - Ajout du Home Menu V2

This commit is contained in:
Raphix
2023-09-11 21:58:10 +02:00
parent 41064faf48
commit f4e0017671
10 changed files with 480 additions and 31 deletions

View File

@ -18,6 +18,7 @@ const __glob = {
NODES: root + path.sep + "data" + path.sep + "nodes.json",
README: root + path.sep + "README.md",
PLAYLIST: root + path.sep + "data" + path.sep + "playlist.json",
RADIO: root + path.sep + "data" + path.sep + "radios.json",
LOGS: root + path.sep + "src" + path.sep + "modules" + path.sep + "logs"
};

View File

@ -168,6 +168,13 @@ module.exports.getUsersList = function () {
}
module.exports.getSimpleUser = function (token) {
var user = users.get(token)
return ({"username": user.user.username, "global_name":user.user.global_name, "avatar": user.user.avatar, "id": user.user.id})
}
module.exports.getUser = function (token) {
return users.get(token)

64
src/modules/sub-radio.js Normal file
View File

@ -0,0 +1,64 @@
const { __glob } = require("../modules/global-variables");
const { LogType } = require("./sub-log");
var { List } = require("./sub-list")
const discord = require("./discord-bot")
const subplayer = require("./sub-player")
const fs = require("fs");
const { type } = require("os");
var radios = []
const plog = new LogType("Radio-Manager")
check()
module.exports.get = function () {
check()
return radios
}
module.exports.add = function (data) {
var radios_data = JSON.parse(fs.readFileSync(__glob.RADIO))
radios_data.push(data)
fs.writeFileSync(__glob.RADIO, JSON.stringify(radios_data, null, 2))
return radios
}
module.exports.remove = function(data) {
var radios_data = JSON.parse(fs.readFileSync(__glob.RADIO))
var radIndex = -1
for(var radio of radios_data) {
if(data.uri == radio.uri) {
radIndex = radios_data.indexOf(radio)
}
}
radios_data.splice(radIndex, 1)
fs.writeFileSync(__glob.RADIO, JSON.stringify(radios_data, null, 2))
}
function check() {
if(fs.existsSync(__glob.RADIO)) {
radios = JSON.parse(fs.readFileSync(__glob.RADIO))
} else {
fs.writeFileSync(__glob.RADIO, JSON.stringify(radios, null, 2))
}
}

View File

@ -6,6 +6,7 @@ const auth = require("./sub-auth");
const cook = require("cookie")
const wlog = new LogType("Web")
const subplayer = require('./sub-player');
const subradio = require("./sub-radio.js")
const { List } = require("./sub-list")
const subplaylist = require("./sub-playlist")
const nodesfinder = require("./nodes-finder")
@ -141,6 +142,9 @@ function IOConnection(io) {
const alog = log.getInstance("Authentification")
const usersOnline = new Array()
process.on("UPDATE_NODES", () => {
if(io) {
@ -152,6 +156,16 @@ function IOConnection(io) {
})
process.on("UPDATE_RADIO", () => {
if(io) {
const radioList = subradio.get()
io.sockets.emit("ALWAYS/ALL_RADIO", radioList)
}
})
process.on("MUSIC_UPDATE_STATE", () => {
@ -163,15 +177,38 @@ function IOConnection(io) {
})
io.on("connection", (socket) => {
var ucookies = socket.handshake.headers.cookie
ucookies = cook.parse(ucookies)
if(ucookies.token) {
var utoken = ucookies.token
const online_users_data = auth.getSimpleUser(utoken)
usersOnline.push(online_users_data)
}
io.sockets.emit("ALWAYS/ALL_CONNECTED_USER", usersOnline)
wlog.log("[SOCKET] - Nouvelle session : " + socket.id)
socket.on("disconnect", () => {
wlog.log("[SOCKET] - Fin de session : " + socket.id)
if(ucookies.token) {
var utoken = ucookies.token
const online_users_data = auth.getSimpleUser(utoken)
usersOnline.splice(usersOnline.indexOf(online_users_data), 1)
}
io.sockets.emit("ALWAYS/ALL_CONNECTED_USER", usersOnline)
})
// SPECIAL
socket.on("GET/DISCORD_LOGIN_LINK", () => {
@ -394,6 +431,20 @@ function IOConnection(io) {
})
GetRequest(io, socket, "ALL_CONNECTED_USER", () => {
io.sockets.emit("ALWAYS/ALL_CONNECTED_USER", usersOnline)
})
GetRequest(io, socket, "ALL_RADIO", () => {
const radioList = subradio.get()
io.sockets.emit("ALWAYS/ALL_RADIO", radioList)
})
@ -421,7 +472,61 @@ function IOConnection(io) {
}
} else {
io.emit("ANSWER/SEND/USERS/ADD", {"error":"TOKEN_NOT_FINDED"})
io.emit("ANSWER/SEND/NODES/ADD", {"error":"TOKEN_NOT_FINDED"})
}
})
socket.on("SEND/RADIO/ADD", async (data) => {
var cookies = socket.handshake.headers.cookie
if(cookies) {
cookies = cook.parse(cookies)
var token = cookies.token
const user = auth.getUser(token)
if(user.admin == true) {
const music_data = await (await subplayer.search(data)).results.tracks[0]
var radioContains = null
for(var title of subradio.get()) {
if(title.uri == music_data.uri) {
radioContains = true
}
}
if(!radioContains) {
subradio.add(music_data)
console.log("[Radio] - ADD : " + data)
} else {
subradio.remove(music_data)
console.log("[Radio] - REMOVE : " + data)
}
socket.emit("ANSWER/SEND/RADIO/ADD", "OK")
process.emit("UPDATE_RADIO")
}
} else {
io.emit("ANSWER/SEND/RADIO/ADD", {"error":"TOKEN_NOT_FINDED"})
}
@ -716,7 +821,7 @@ function IOConnection(io) {
const results = await subplayer.search(data)
io.emit("ANSWER/SEND/SEARCH", results)