smnmpp-server/ch.js

33 lines
2.0 KiB
JavaScript

module.exports.run = async (ws,user,db,msg,fun,users,connections) => {
if (!user.connected || user.channel === msg._id) return;
var part = users[user._id].p
part.m = "p"
if (!channels[msg._id]) {channels[msg._id] = {m: "ch",ppl: [users[user._id].p], ch: {id: msg._id, _id: msg._id, settings: {color: "#000000", color2: "#000000", chat: true, visible: true, limit: 100} }, p: user._id}
if (!chat[msg._id])chat[msg._id] = []
//if (user.channel) {
//var list = []
//channels[user.channel].ppl.forEach(a => {list.push(a); list.at(-1).m = "p"})
//ws.send(JSON.stringify(list))
//}
ws.sendData(channels[msg._id])
} else {
if (!channels[msg._id].ppl.find(a => a._id === user._id))channels[msg._id].ppl.push(users[user._id].p)
var channel = channels[msg._id]
channel.p = user._id
ws.sendData(channel)
connections.filter(a => a.user.channel === msg._id).forEach(a => {var channel = channels[msg._id]; channel.p = a.user._id; a.sendData(channel)})
//connections.filter(a => a.user.channel === msg._id && a !== ws).forEach(a => a.send(JSON.stringify([users[user._id].p])))
//if (channels[user.channel].ppl.length == 0) delete channels[user.channel
//]
//if (user.channel) channels[user.channel].ppl.splice(channels[user.channel].indexOf(users[user._id].p),1)
}
connections.filter(founduser => founduser.user.channel === user.channel && founduser.user._id !== user._id).forEach(founduser => founduser.sendData(part.p))
if (user.channel) {if (connections.filter(a => a.user._id === user._id && a.user.channel === user.channel).length ==1) {channels[user.channel].ppl.splice(channels[user.channel].ppl.indexOf(channels[user.channel].ppl.find(a => a._id === user._id)),1); connections.filter(a => a.user.channel === user.channel && a.user._id !== user._id).forEach(a => {var channel = channels[user.channel];channel.p = a.user._id; a.sendData(channel)}) }}
ws.sendData({m: "c", c: chat[msg._id].filter(a => a.m === "a" || (a.m === "dm" && (a.sender._id === user._id || a.recipient._id === user._id)))})
user.channel = msg._id
}
module.exports.name = "ch"