| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import {
- markdownHeaderBlock, inputSectionBlock, inputBlock, actionsBlock, buttonElement,
- } from '@growi/slack/dist/utils/block-kit-builder';
- import { SlackCommandHandlerError } from '~/server/models/vo/slack-command-handler-error';
- import loggerFactory from '~/utils/logger';
- const logger = loggerFactory('growi:service:SlackCommandHandler:note');
- module.exports = (crowi) => {
- const CreatePageService = require('./create-page-service');
- const createPageService = new CreatePageService(crowi);
- const BaseSlackCommandHandler = require('./slack-command-handler');
- const handler = new BaseSlackCommandHandler();
- const conversationsSelectElement = {
- action_id: 'conversation',
- type: 'conversations_select',
- default_to_current_conversation: true,
- };
- const { User } = crowi.models;
- handler.handleCommand = async(growiCommand, client, body, respondUtil) => {
- await respondUtil.respond({
- text: 'Take a note on GROWI',
- blocks: [
- markdownHeaderBlock('Take a note on GROWI'),
- inputBlock(conversationsSelectElement, 'conversation', 'Channel name to display in the page to be created'),
- inputSectionBlock('path', 'Page path', 'path_input', false, '/path'),
- inputSectionBlock('contents', 'Contents', 'contents_input', true, 'Input with Markdown...'),
- actionsBlock(
- buttonElement({ text: 'Cancel', actionId: 'note:cancel' }),
- buttonElement({ text: 'Create page', actionId: 'note:createPage', style: 'primary' }),
- ),
- ],
- });
- };
- handler.cancel = async function(client, interactionPayload, interactionPayloadAccessor, respondUtil) {
- await respondUtil.deleteOriginal();
- };
- handler.handleInteractions = async function(client, interactionPayload, interactionPayloadAccessor, handlerMethodName, respondUtil) {
- await this[handlerMethodName](client, interactionPayload, interactionPayloadAccessor, respondUtil);
- };
- handler.createPage = async function(client, interactionPayload, interactionPayloadAccessor, respondUtil) {
- const user = await User.findUserBySlackMemberId(interactionPayload.user.id);
- const path = interactionPayloadAccessor.getStateValues()?.path.path_input.value;
- const contentsBody = interactionPayloadAccessor.getStateValues()?.contents.contents_input.value;
- if (path == null || contentsBody == null) {
- throw new SlackCommandHandlerError('All parameters are required.');
- }
- await createPageService.createPageInGrowi(interactionPayloadAccessor, path, contentsBody, respondUtil, user);
- await respondUtil.deleteOriginal();
- };
- return handler;
- };
|