UNPKG

node-red-contrib-displayext-node

Version:

A node for software DisplayEXT

121 lines (102 loc) 5.88 kB
const fs = require("fs"); const path = require("path"); module.exports = function(RED) { function DeleteMediaNode(config) { RED.nodes.createNode(this, config); const node = this; // Définir le chemin du fichier dataMedia.json const dataFilePath = path.join(__dirname, "..", "dataMedia.json"); node.on("input", function(msg) { if (msg.payload) { // Vérifier si l'action est "deleteMedia" if (msg.payload.action === "deleteMedia" && msg.payload.mediaName) { const mediaToDelete = msg.payload.mediaName; let savedData = []; // Charger les données existantes if (fs.existsSync(dataFilePath)) { try { savedData = JSON.parse(fs.readFileSync(dataFilePath, "utf8")); } catch (error) { node.error("Erreur de lecture du fichier JSON", error); return; } } // Filtrer les éléments pour retirer celui qui correspond au media à supprimer const filteredData = savedData.filter(item => item.name !== mediaToDelete); // Si les données ont changé, les sauvegarder if (filteredData.length !== savedData.length) { try { fs.writeFileSync(dataFilePath, JSON.stringify(filteredData, null, 2)); node.log(`Le média ${mediaToDelete} a été supprimé.`); } catch (error) { node.error("Erreur d'écriture dans le fichier JSON", error); } } else { node.warn(`Aucun média avec le nom ${mediaToDelete} n'a été trouvé.`); } // Retourner une réponse node.send({ payload: `Média ${mediaToDelete} supprimé avec succès !` }); // Vérifier si l'action est "updateMedia" } else if (msg.payload.action === "updateMedia" && msg.payload.media.oldName && msg.payload.media.name) { const oldName = msg.payload.media.oldName; const newName = msg.payload.media.name; let savedData = []; // Charger les données existantes if (fs.existsSync(dataFilePath)) { try { savedData = JSON.parse(fs.readFileSync(dataFilePath, "utf8")); } catch (error) { node.error("Erreur de lecture du fichier JSON", error); return; } } // Trouver et mettre à jour le nom du média const mediaToUpdate = savedData.find(item => item.name === oldName); if (mediaToUpdate) { mediaToUpdate.name = newName; // Sauvegarder les données mises à jour dans le fichier JSON try { fs.writeFileSync(dataFilePath, JSON.stringify(savedData, null, 2)); node.log(`Le nom du média ${oldName} a été mis à jour en ${newName}.`); node.send({ payload: `Média ${oldName} mis à jour en ${newName} avec succès !` }); } catch (error) { node.error("Erreur d'écriture dans le fichier JSON", error); } } else { node.warn(`Aucun média avec le nom ${oldName} n'a été trouvé.`); } } else if (msg.payload.action === "trash" && msg.payload.media) { const mediaToDelete = msg.payload.media; let savedData = []; // Charger les données existantes if (fs.existsSync(dataFilePath)) { try { savedData = JSON.parse(fs.readFileSync(dataFilePath, "utf8")); } catch (error) { node.error("Erreur de lecture du fichier JSON", error); return; } } // Filtrer les éléments pour retirer celui qui correspond au media à supprimer const filteredData = savedData.filter(item => item.name !== mediaToDelete); // Si les données ont changé, les sauvegarder if (filteredData.length !== savedData.length) { try { fs.writeFileSync(dataFilePath, JSON.stringify(filteredData, null, 2)); node.log(`Le média ${mediaToDelete} a été supprimé.`); } catch (error) { node.error("Erreur d'écriture dans le fichier JSON", error); } } else { node.warn(`Aucun média avec le nom ${mediaToDelete} n'a été trouvé.`); } // Retourner une réponse node.send({ payload: `Média ${mediaToDelete} supprimé avec succès !` }); } else { node.error("Le message ne contient pas les informations requises (action ou media manquant)."); } } }); } RED.nodes.registerType("update-dataMedia", DeleteMediaNode); };