Gestion des signes draconiques #455
@ -1,3 +1,4 @@
|
|||||||
|
import { Misc } from "./misc.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class providing helper methods to get the list of users, and
|
* Class providing helper methods to get the list of users, and
|
||||||
@ -7,31 +8,45 @@ export class ChatUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static onSocketMessage(sockmsg) {
|
static onSocketMessage(sockmsg) {
|
||||||
switch (sockmsg.msg) {
|
switch (sockmsg.msg) {
|
||||||
case "msg_delete_chat_message": return ChatUtility.onRemoveMessages(sockmsg.part, sockmsg.gmId);
|
case "msg_delete_chat_message": return ChatUtility.onRemoveMessages(sockmsg.data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static onRemoveMessages(part, gmId) {
|
static onRemoveMessages(data) {
|
||||||
if (game.user.id == gmId) {
|
if (game.user.isGM || game.user.id == data.gmId) {
|
||||||
const toDelete = game.messages.filter(it => it.data.content.includes(part));
|
if (data.part){
|
||||||
toDelete.forEach(it => it.delete());
|
const toDelete = game.messages.filter(it => it.data.content.includes(data.part));
|
||||||
|
toDelete.forEach(it => it.delete());
|
||||||
|
}
|
||||||
|
if (data.messageId){
|
||||||
|
game.messages.get(data.messageId)?.delete();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static removeChatMessageContaining(part) {
|
static removeChatMessageContaining(part) {
|
||||||
const gmId = game.user.isGM ? game.user.id : game.users.entities.find(u => u.isGM && u.active)?.id;
|
const removeMessageData = {
|
||||||
|
part: part,
|
||||||
|
gmId: Misc.connectedGM()
|
||||||
|
};
|
||||||
|
|
||||||
if (!gmId || game.user.isGM) {
|
if (game.user.isGM) {
|
||||||
ChatUtility.onRemoveMessages(part, game.user.id);
|
ChatUtility.onRemoveMessages(removeMessageData);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
game.socket.emit("system.foundryvtt-reve-de-dragon", {
|
game.socket.emit("system.foundryvtt-reve-de-dragon", { msg: "msg_delete_chat_message", data: removeMessageData });
|
||||||
msg: "msg_delete_chat_message", data: {
|
}
|
||||||
part:part,
|
}
|
||||||
gmId: gmId,
|
|
||||||
}});
|
static removeChatMessageId(messageId) {
|
||||||
|
const removeMessageData = { messageId: messageId, gmId: Misc.connectedGM() };
|
||||||
|
if (game.user.isGM) {
|
||||||
|
ChatUtility.onRemoveMessages(removeMessageData);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
game.socket.emit("system.foundryvtt-reve-de-dragon", { msg: "msg_delete_chat_message", data: removeMessageData });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,5 +123,5 @@ export class ChatUtility {
|
|||||||
ChatMessage.create(data);
|
ChatMessage.create(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -114,8 +114,7 @@ export class Misc {
|
|||||||
return Misc.data(it)?.data ?? {}
|
return Misc.data(it)?.data ?? {}
|
||||||
}
|
}
|
||||||
|
|
||||||
static connectedGM()
|
static connectedGM() {
|
||||||
{
|
return game.user.isGM ? game.user.id : game.users.entities.find(u => u.isGM && u.active)?.id;
|
||||||
return game.users.entities.find(u => u.isGM && u.active)?.id;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -543,11 +543,29 @@ export class RdDUtility {
|
|||||||
// TODO: diminuer la quantité ou supprimer le message
|
// TODO: diminuer la quantité ou supprimer le message
|
||||||
// message: => document.querySelector("#chat-log > li:nth-child(61) > div > div > span > a")
|
// message: => document.querySelector("#chat-log > li:nth-child(61) > div > div > span > a")
|
||||||
// => ../../../..[@data-message-id]
|
// => ../../../..[@data-message-id]
|
||||||
|
let chatMessageId = RdDUtility.findChatMessageId(event.currentTarget);
|
||||||
|
if (chatMessageId) {
|
||||||
|
ChatUtility.removeChatMessageId(chatMessageId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static findChatMessageId(current) {
|
||||||
|
const isChatMessageWithId = it => it.classList.contains('chat-message') && it.attributes.getNamedItem('data-message-id');
|
||||||
|
return RdDUtility.findNodeMatching(current, isChatMessageWithId)?.attributes.getNamedItem('data-message-id').value;
|
||||||
|
}
|
||||||
|
|
||||||
|
static findNodeMatching(current, predicate) {
|
||||||
|
if (current) {
|
||||||
|
if (predicate(current)) {
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
return RdDUtility.findNodeMatching(current.parentElement, predicate);
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
static getSelectedActor(msgPlayer = '') {
|
static getSelectedActor(msgPlayer = '') {
|
||||||
if (canvas.tokens.controlled.length == 1) {
|
if (canvas.tokens.controlled.length == 1) {
|
||||||
let token = canvas.tokens.controlled[0];
|
let token = canvas.tokens.controlled[0];
|
||||||
|
Loading…
Reference in New Issue
Block a user