bookworms-slack-webhook
Version:
This is a simple module to add a route into your server and have slack updates.
53 lines (45 loc) • 1.69 kB
JavaScript
import readJsYaml from "read-js-yaml";
import { generateBookmarks } from "bookworms";
let bookmarks = "";
const init = async (path) => {
const { body } = await readJsYaml(path);
bookmarks = body;
};
// generating the markdown only for the top level folder requested in the slash command
const generateBookmarkMarkdown = (folder) => {
const requestedFolder = findBookMarkFolder(folder, bookmarks.folders);
if (requestedFolder) {
const selectedBookmarks = {
folders: [requestedFolder],
};
const [browser, readme] =
generateBookmarks.generateImportBookmarkMarkup(selectedBookmarks);
// taking the readme as this is markdown
return readme.body;
} else {
return `Sorry ${folder} could not be found, use \`/bookmarks all\` for a list of available bookmarks `;
}
};
// used for showing a dynamic list of available top level folders
const listOfBookmarksMarkDown = () => {
const commands = bookmarks.folders.map((folder) => {
return `\`/bookmarks ${folder.label.toLowerCase()}\``;
});
// adding in new line for formatting in Slack response
const commandsMarkdown = `
${commands.join("\r\n")}
`;
return `Bookmarks are seperated into different domains, to get the specific bookmarks you can enter the following commands
${commandsMarkdown}
`;
};
// returning the markdown of the requested top level folder
const findBookMarkFolder = (name, folders) => {
return folders.find((folder) => {
if (folder.label.toLowerCase() === name) {
return folder;
}
});
};
const getBookmarks = (folder) => generateBookmarkMarkdown(folder);
export { init, getBookmarks, listOfBookmarksMarkDown, findBookMarkFolder };