New linter and changed image uri
This commit is contained in:
118
server.cjs
118
server.cjs
@@ -7,7 +7,7 @@ const mariadb = require("mariadb");
|
||||
const bodyParser = require("body-parser");
|
||||
const escapeString = require("sql-escape-string");
|
||||
const multer = require("multer");
|
||||
const { exec } = require('child_process');
|
||||
const { exec } = require("node:child_process");
|
||||
|
||||
const pool = mariadb.createPool({
|
||||
host: process.env.DB_HOST,
|
||||
@@ -26,10 +26,10 @@ const corsOptions = {
|
||||
};
|
||||
|
||||
const storage = multer.diskStorage({
|
||||
destination: function (req, file, cb) {
|
||||
destination: (_req, _file, cb) => {
|
||||
cb(null, "../TriggerFrontend/backgrounds/");
|
||||
},
|
||||
filename: function (req, file, cb) {
|
||||
filename: (_req, file, cb) => {
|
||||
cb(null, file.originalname);
|
||||
},
|
||||
});
|
||||
@@ -37,15 +37,18 @@ const storage = multer.diskStorage({
|
||||
const uploads = multer({ storage: storage });
|
||||
|
||||
app.use(cors(corsOptions));
|
||||
app.use(bodyParser.json({ limit: '50mb' }));
|
||||
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
|
||||
app.use('/trigger/backgrounds', express.static('../TriggerFrontend/backgrounds'));
|
||||
app.use(bodyParser.json({ limit: "50mb" }));
|
||||
app.use(bodyParser.urlencoded({ limit: "50mb", extended: true }));
|
||||
app.use(
|
||||
"/trigger/api/backgroundImages",
|
||||
express.static("../TriggerFrontend/backgrounds"),
|
||||
);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Personal Data //
|
||||
//////////////////////////////////////////////
|
||||
|
||||
app.get("/trigger/api/personalData", async (req, res) => {
|
||||
app.get("/trigger/api/personalData", async (_req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query = "SELECT * FROM trigger_database.personalData;";
|
||||
conn.query(query).then((rows) => {
|
||||
@@ -59,7 +62,7 @@ app.patch("/trigger/api/personalData", async (req, res) => {
|
||||
const query = `UPDATE trigger_database.personalData SET firstName = ${escapeString(req.body.firstName)}, lastName = ${escapeString(req.body.lastName)}, email = ${escapeString(req.body.email)}, physicalAddress = ${escapeString(req.body.physicalAddress)};`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -72,7 +75,7 @@ app.patch("/trigger/api/personalData", async (req, res) => {
|
||||
// Messages //
|
||||
//////////////////////////////////////////////
|
||||
|
||||
app.get("/trigger/api/messages", async (req, res) => {
|
||||
app.get("/trigger/api/messages", async (_req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query = "SELECT * FROM trigger_database.messages;";
|
||||
conn.query(query).then((rows) => {
|
||||
@@ -81,7 +84,7 @@ app.get("/trigger/api/messages", async (req, res) => {
|
||||
conn.end();
|
||||
});
|
||||
|
||||
app.get("/trigger/api/displayedGreeting", async (req, res) => {
|
||||
app.get("/trigger/api/displayedGreeting", async (_req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query =
|
||||
"SELECT * FROM trigger_database.messages ORDER BY RAND() LIMIT 1;";
|
||||
@@ -96,7 +99,7 @@ app.post("/trigger/api/messages", async (req, res) => {
|
||||
const query = `INSERT INTO trigger_database.messages (message) VALUES (${escapeString(req.body.message)});`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -110,7 +113,7 @@ app.patch("/trigger/api/messages", async (req, res) => {
|
||||
const query = `UPDATE trigger_database.messages SET message = ${escapeString(req.body.message)} WHERE id = ${req.body.id};`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -124,7 +127,7 @@ app.delete("/trigger/api/messages", async (req, res) => {
|
||||
const query = `DELETE FROM trigger_database.messages WHERE id = ${req.body.id};`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -137,7 +140,7 @@ app.delete("/trigger/api/messages", async (req, res) => {
|
||||
// Application Data //
|
||||
//////////////////////////////////////////////
|
||||
|
||||
app.get("/trigger/api/applications", async (req, res) => {
|
||||
app.get("/trigger/api/applications", async (_req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query = "SELECT * FROM trigger_database.applications;";
|
||||
conn.query(query).then((rows) => {
|
||||
@@ -146,7 +149,7 @@ app.get("/trigger/api/applications", async (req, res) => {
|
||||
conn.end();
|
||||
});
|
||||
|
||||
app.get("/trigger/api/enabledApplications", async (req, res) => {
|
||||
app.get("/trigger/api/enabledApplications", async (_req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query =
|
||||
"SELECT * FROM trigger_database.applications WHERE enabled = 1;";
|
||||
@@ -161,7 +164,7 @@ app.post("/trigger/api/applications", async (req, res) => {
|
||||
const query = `INSERT INTO trigger_database.applications (name, url, icon, baseUrl, filterName, enabled, \`index\`) VALUES (${escapeString(req.body.name)}, ${escapeString(req.body.url)}, ${escapeString(req.body.icon)}, ${escapeString(req.body.baseUrl)}, ${escapeString(req.body.filterName)}, ${req.body.enabled}, ${req.body.index});`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -175,7 +178,7 @@ app.patch("/trigger/api/applications", async (req, res) => {
|
||||
const query = `UPDATE trigger_database.applications SET name = ${escapeString(req.body.name)}, url = ${escapeString(req.body.url)}, icon = ${escapeString(req.body.icon)}, baseUrl = ${escapeString(req.body.baseUrl)}, filterName = ${escapeString(req.body.filterName)}, enabled = ${req.body.enabled} WHERE id = ${req.body.id};`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -189,7 +192,7 @@ app.delete("/trigger/api/applications", async (req, res) => {
|
||||
const query = `DELETE FROM trigger_database.applications WHERE id = ${req.body.id}`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -198,7 +201,7 @@ app.delete("/trigger/api/applications", async (req, res) => {
|
||||
conn.end();
|
||||
});
|
||||
|
||||
app.get("/trigger/api/appCategories", async (req, res) => {
|
||||
app.get("/trigger/api/appCategories", async (_req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query =
|
||||
"SELECT filterName FROM trigger_database.applications UNION SELECT filterName FROM trigger_database.bookmarkCategories;";
|
||||
@@ -216,7 +219,7 @@ app.patch("/trigger/api/applicationOrder", async (req, res) => {
|
||||
"UPDATE trigger_database.applications SET `index` = ? where id IN (?)",
|
||||
[link.index, link.id],
|
||||
)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200);
|
||||
});
|
||||
});
|
||||
@@ -228,7 +231,7 @@ app.patch("/trigger/api/applicationOrder", async (req, res) => {
|
||||
// Bookmark Data //
|
||||
//////////////////////////////////////////////
|
||||
|
||||
app.get("/trigger/api/bookmarks", async (req, res) => {
|
||||
app.get("/trigger/api/bookmarks", async (_req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query = "SELECT * FROM trigger_database.bookmarks;";
|
||||
conn.query(query).then((rows) => {
|
||||
@@ -242,7 +245,7 @@ app.post("/trigger/api/bookmarks", async (req, res) => {
|
||||
const query = `INSERT INTO trigger_database.bookmarks (name, url, category, \`index\`) VALUES (${escapeString(req.body.name)}, ${escapeString(req.body.url)}, ${escapeString(req.body.category)}, ${req.body.index});`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -256,7 +259,7 @@ app.patch("/trigger/api/bookmarks", async (req, res) => {
|
||||
const query = `UPDATE trigger_database.bookmarks SET name = ${escapeString(req.body.name)}, url = ${escapeString(req.body.url)}, category = ${escapeString(req.body.category)} WHERE id = ${req.body.id}`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -308,7 +311,7 @@ app.patch("/trigger/api/bookmarkOrder", async (req, res) => {
|
||||
conn.end();
|
||||
});
|
||||
|
||||
app.get("/trigger/api/bookmarkCategories", async (req, res) => {
|
||||
app.get("/trigger/api/bookmarkCategories", async (_req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query = "SELECT * from trigger_database.bookmarkCategories;";
|
||||
conn.query(query).then((rows) => {
|
||||
@@ -320,7 +323,7 @@ app.get("/trigger/api/bookmarkCategories", async (req, res) => {
|
||||
app.post("/trigger/api/bookmarkCategories", async (req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query = `INSERT INTO trigger_database.bookmarkCategories (categoryName, categoryIndex, filterName) VALUES (${escapeString(req.body.categoryName)},${req.body.categoryIndex || 0},${escapeString(req.body.filterName)})`;
|
||||
conn.query(query).then((rows) => {
|
||||
conn.query(query).then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
});
|
||||
conn.end();
|
||||
@@ -331,7 +334,7 @@ app.patch("/trigger/api/bookmarkCategories", async (req, res) => {
|
||||
const query = `UPDATE trigger_database.bookmarkCategories SET categoryName = ${escapeString(req.body.categoryName)}, filterName = ${escapeString(req.body.filterName)} WHERE id = ${req.body.id};`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -345,7 +348,7 @@ app.delete("/trigger/api/bookmarkCategories", async (req, res) => {
|
||||
const query = `DELETE FROM trigger_database.bookmarkCategories WHERE id = ${req.body.id}`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -362,7 +365,7 @@ app.patch("/trigger/api/bookmarkCategoryOrder", async (req, res) => {
|
||||
"UPDATE trigger_database.bookmarkCategories SET categoryIndex = ? where id IN (?)",
|
||||
[category.index, category.id],
|
||||
)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200);
|
||||
});
|
||||
});
|
||||
@@ -373,7 +376,7 @@ app.patch("/trigger/api/bookmarkCategoryOrder", async (req, res) => {
|
||||
// Provider Data //
|
||||
//////////////////////////////////////////////
|
||||
|
||||
app.get("/trigger/api/providers", async (req, res) => {
|
||||
app.get("/trigger/api/providers", async (_req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query = "SELECT * FROM trigger_database.providers;";
|
||||
conn.query(query).then((rows) => {
|
||||
@@ -387,7 +390,7 @@ app.post("/trigger/api/providers", async (req, res) => {
|
||||
const query = `INSERT INTO trigger_database.providers (name, url, prefix) VALUES (${escapeString(req.body.name)}, ${escapeString(req.body.url)}, ${escapeString(req.body.prefix)})`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -401,7 +404,7 @@ app.patch("/trigger/api/providers", async (req, res) => {
|
||||
const query = `UPDATE trigger_database.providers SET name = ${escapeString(req.body.name)}, url = ${escapeString(req.body.url)}, prefix = ${escapeString(req.body.prefix)} WHERE id = ${req.body.id}`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -415,7 +418,7 @@ app.delete("/trigger/api/providers", async (req, res) => {
|
||||
const query = `DELETE FROM trigger_database.providers WHERE id = ${req.body.id}`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -428,7 +431,7 @@ app.delete("/trigger/api/providers", async (req, res) => {
|
||||
// Theming //
|
||||
//////////////////////////////////////////////
|
||||
|
||||
app.get("/trigger/api/themes", async (req, res) => {
|
||||
app.get("/trigger/api/themes", async (_req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query = "SELECT * FROM trigger_database.themes;";
|
||||
conn.query(query).then((rows) => {
|
||||
@@ -442,7 +445,7 @@ app.post("/trigger/api/themes", async (req, res) => {
|
||||
const query = `INSERT INTO trigger_database.themes (name, backgroundImage, backgroundColor, searchColor, primaryColor, accentColor, borderColor) VALUES (${escapeString(req.body.name)},${escapeString(req.body.backgroundImage)},${escapeString(req.body.backgroundColor)},${escapeString(req.body.searchColor)},${escapeString(req.body.primaryColor)},${escapeString(req.body.accentColor)},${escapeString(req.body.borderColor)})`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -456,7 +459,7 @@ app.patch("/trigger/api/themes", async (req, res) => {
|
||||
const query = `UPDATE trigger_database.themes SET name = ${escapeString(req.body.name)}, backgroundImage = ${escapeString(req.body.backgroundImage)}, backgroundColor = ${escapeString(req.body.backgroundColor)}, searchColor = ${escapeString(req.body.searchColor)}, primaryColor = ${escapeString(req.body.primaryColor)}, accentColor = ${escapeString(req.body.accentColor)}, borderColor = ${escapeString(req.body.borderColor)}, randomEnabled = ${req.body.randomEnabled ? 1 : 0} WHERE id = ${req.body.id};`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -470,7 +473,7 @@ app.delete("/trigger/api/themes", async (req, res) => {
|
||||
const query = `DELETE FROM trigger_database.themes WHERE id = ${req.body.id}`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -479,7 +482,7 @@ app.delete("/trigger/api/themes", async (req, res) => {
|
||||
conn.end();
|
||||
});
|
||||
|
||||
app.get("/trigger/api/themePlaylists", async (req, res) => {
|
||||
app.get("/trigger/api/themePlaylists", async (_req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query = "SELECT * FROM trigger_database.themePlaylists;";
|
||||
conn.query(query).then((rows) => {
|
||||
@@ -493,7 +496,7 @@ app.post("/trigger/api/themePlaylists", async (req, res) => {
|
||||
const query = `INSERT INTO trigger_database.themePlaylists (name, themeList) VALUES (${escapeString(req.body.name)},${escapeString(req.body.themeList)});`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -507,7 +510,7 @@ app.patch("/trigger/api/themePlaylists", async (req, res) => {
|
||||
const query = `UPDATE trigger_database.themePlaylists SET name = ${escapeString(req.body.name)}, themeList = ${escapeString(req.body.themeList)} WHERE id = ${req.body.id};`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -521,7 +524,7 @@ app.delete("/trigger/api/themePlaylists", async (req, res) => {
|
||||
const query = `DELETE FROM trigger_database.themePlaylists WHERE id = ${req.body.id}`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -530,30 +533,33 @@ app.delete("/trigger/api/themePlaylists", async (req, res) => {
|
||||
conn.end();
|
||||
});
|
||||
|
||||
app.get("/trigger/api/backgrounds", async (req, res) => {
|
||||
fs.readdir("../TriggerFrontend/backgrounds", (err, files) => {
|
||||
app.get("/trigger/api/backgrounds", async (_req, res) => {
|
||||
fs.readdir("../TriggerFrontend/backgrounds", (_err, files) => {
|
||||
res.status(200).send(files);
|
||||
});
|
||||
});
|
||||
|
||||
app.post("/trigger/api/backgrounds", uploads.single("background"), async (req, res) => {
|
||||
app.post(
|
||||
"/trigger/api/backgrounds",
|
||||
uploads.single("background"),
|
||||
async (req, res) => {
|
||||
const image = req.file.path;
|
||||
exec(`convert ${image} -resize 'x1080' -define jpeg:extent=300kb ${image}`)
|
||||
exec(`convert ${image} -resize 'x1080' -define jpeg:extent=300kb ${image}`);
|
||||
res.status(200).send({ status: "success", statusText: image });
|
||||
})
|
||||
},
|
||||
);
|
||||
|
||||
app.delete("/trigger/api/backgrounds", async (req, res) => {
|
||||
fs.rm("../TriggerFrontend/backgrounds/" + req.body.background, (err) => {
|
||||
fs.rm(`../TriggerFrontend/backgrounds/${req.body.background}`, (_err) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Wake on LAN Clients //
|
||||
//////////////////////////////////////////////
|
||||
|
||||
app.get("/trigger/api/wolClients", async (req, res) => {
|
||||
app.get("/trigger/api/wolClients", async (_req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query = "SELECT * from trigger_database.wolClients;";
|
||||
conn.query(query).then((rows) => {
|
||||
@@ -567,7 +573,7 @@ app.post("/trigger/api/wolClients", async (req, res) => {
|
||||
const query = `INSERT INTO trigger_database.wolClients (hostname, macAddress) VALUES (${escapeString(req.body.hostname)}, ${escapeString(req.body.macAddress)})`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -582,7 +588,7 @@ app.patch("/trigger/api/wolClients", async (req, res) => {
|
||||
const query = `UPDATE trigger_database.wolClients SET hostname = ${escapeString(req.body.hostname)}, macAddress = ${escapeString(req.body.macAddress)} WHERE id = ${req.body.id}`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -597,7 +603,7 @@ app.delete("/trigger/api/wolClients", async (req, res) => {
|
||||
const query = `DELETE FROM trigger_database.wolClients WHERE id = ${req.body.id}`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -616,7 +622,7 @@ app.post("/trigger/api/wakeClient", async (req, res) => {
|
||||
// Search //
|
||||
//////////////////////////////////////////////
|
||||
|
||||
app.get("/trigger/api/searchHistory", async (req, res) => {
|
||||
app.get("/trigger/api/searchHistory", async (_req, res) => {
|
||||
const conn = await pool.getConnection();
|
||||
const query =
|
||||
"SELECT * FROM trigger_database.searchHistory ORDER BY dateTimeStamp DESC;";
|
||||
@@ -631,7 +637,7 @@ app.post("/trigger/api/searchHistory", async (req, res) => {
|
||||
const query = `INSERT INTO trigger_database.searchHistory (prefix, provider, searchTerm) VALUES (${escapeString(req.body.prefix)}, ${escapeString(req.body.provider)}, ${escapeString(req.body.searchTerm)})`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -645,7 +651,7 @@ app.delete("/trigger/api/searchHistory", async (req, res) => {
|
||||
const query = `DELETE FROM trigger_database.searchHistory WHERE id = ${req.body.id}`;
|
||||
conn
|
||||
.query(query)
|
||||
.then((rows) => {
|
||||
.then((_rows) => {
|
||||
res.status(200).send({ status: "success" });
|
||||
})
|
||||
.catch((err) => {
|
||||
|
||||
Reference in New Issue
Block a user