diff --git a/index.js b/index.js index 86d271b..cd6c533 100644 --- a/index.js +++ b/index.js @@ -1,14 +1,13 @@ -const eejs = require("ep_etherpad-lite/node/eejs"); -const padManager = require("ep_etherpad-lite/node/db/PadManager"); -const api = require("ep_etherpad-lite/node/db/API"); +const eejs = require('ep_etherpad-lite/node/eejs'); +const padManager = require('ep_etherpad-lite/node/db/PadManager'); +const api = require('ep_etherpad-lite/node/db/API'); const queryLimit = 12; RegExp.quote = function (x) { - return x.toString().replace(/[-\\^$*+?.()|[\]{}]/g, "\\$&") + return x.toString().replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&'); }; const isNumeric = function (arg) { - return typeof (arg) == "number" || (typeof (arg) == "string" && parseInt(arg)); - + return typeof arg == 'number' || (typeof arg == 'string' && parseInt(arg)); }; let pads = { @@ -19,21 +18,19 @@ let pads = { }, _do_search: async function (pads, query) { let data = { - progress: 1 - , message: "Search done." - , query: query - , total: pads.length - } - , maxResult = 0 - , result = [] - ; - - if (query["pattern"] != null && query["pattern"] !== "") { - let pattern = "*" + query.pattern + "*"; + progress: 1, + message: 'Search done.', + query: query, + total: pads.length, + }, + maxResult = 0, + result = []; + if (query['pattern'] != null && query['pattern'] !== '') { + let pattern = '*' + query.pattern + '*'; pattern = RegExp.quote(pattern); - pattern = pattern.replace(/(\\\*)+/g, ".*"); - pattern = "^" + pattern + "$"; - let regex = new RegExp(pattern, "i"); + pattern = pattern.replace(/(\\\*)+/g, '.*'); + pattern = '^' + pattern + '$'; + let regex = new RegExp(pattern, 'i'); pads.forEach(function (padID) { if (regex.test(padID)) { result.push(padID); @@ -68,70 +65,74 @@ let pads = { data.results = []; rs.forEach(function (value) { - entrySet = {padName: value, lastEdited: "", userCount: 0}; + entrySet = {padName: value, lastEdited: '', userCount: 0}; data.results.push(entrySet); }); + let getEdited = []; if (data.results.length > 0) { data.results.forEach(function (value) { - let resultObject = api.getLastEdited(value.padName); - value.lastEdited = resultObject.lastEdited; - resultObject = api.padUsersCount(value.padName); - value.userCount = resultObject.padUsersCount; + getEdited.push( + api.getLastEdited(value.padName) + .then((resultObject) => { + value.lastEdited = resultObject.lastEdited; + resultObject = api.padUsersCount(value.padName); + value.userCount = resultObject.padUsersCount; + })); }); } else { - data.message = "No results"; + data.message = 'No results'; } + + await Promise.all(getEdited); return data; - } + }, }; exports.registerRoute = async function (hook_name, args) { - args.app.get("/admin/pads", function (req, res) { + args.app.get('/admin/pads', function (req, res) { let render_args = { - errors: [] + errors: [], }; - res.send(eejs.require("ep_adminpads2/templates/admin/pads.html", render_args)); + res.send(eejs.require('ep_adminpads2/templates/admin/pads.html', render_args)); }); }; let io = null; exports.socketio = function (hook_name, args) { - io = args.io.of("/pluginfw/admin/pads"); - io.on("connection", function (socket) { - socket.on("load", async function (query) { - let result = await pads.search({pattern: "", offset: 0, limit: queryLimit}); - socket.emit("search-result", result); + io = args.io.of('/pluginfw/admin/pads'); + io.on('connection', function (socket) { + socket.on('load', async function (query) { + let result = await pads.search({pattern: '', offset: 0, limit: queryLimit}); + socket.emit('search-result', result); }); - socket.on("search", async function (query) { + socket.on('search', async function (query) { let result = await pads.search(query); - socket.emit("search-result", result); + socket.emit('search-result', result); }); - socket.on("delete", async function (padId) { + socket.on('delete', async function (padId) { let padExists = await padManager.doesPadExists(padId); if (padExists) { //pad exists, remove let pad = await padManager.getPad(padId); await pad.remove(); - socket.emit("progress", {progress: 1}); + socket.emit('progress', {progress: 1}); } }); }); }; exports.updatePads = async function (hook_name, args) { - io.emit("progress", {progress: 1}); + io.emit('progress', {progress: 1}); }; exports.eejsBlock_adminMenu = async function (hook_name, args) { - let hasAdminUrlPrefix = (args.content.indexOf("Manage pads"; + let hasAdminUrlPrefix = args.content.indexOf('Manage pads'; };