diff --git a/integrations/slack/src/actions/queryLens.ts b/integrations/slack/src/actions/queryLens.ts index 1571db7c9..b297d41f7 100644 --- a/integrations/slack/src/actions/queryLens.ts +++ b/integrations/slack/src/actions/queryLens.ts @@ -14,7 +14,7 @@ import { } from '../configuration'; import { acknowledgeQuery } from '../middlewares'; import { slackAPI } from '../slack'; -import { PagesBlock, QueryDisplayBlock, ShareTools, decodeSlackEscapeChars, Spacer } from '../ui'; +import { QueryDisplayBlock, ShareTools, decodeSlackEscapeChars, Spacer, SourcesBlock } from '../ui'; import { getInstallationApiClient, stripBotName, stripMarkdown } from '../utils'; // Recursively extracts all pages from a collection of RevisionPages @@ -126,7 +126,6 @@ async function getRelatedPages(params: { return accum; }, [] as RelatedSource[]); - // { type: 'capture', captureId: '72', source: 'slack' } // extract all related pages from the Revisions along with the related public URL const relatedSources: Array = sourcePages.reduce((accum, source) => { switch (source.type) { @@ -254,7 +253,7 @@ export async function queryLens({ { type: 'divider', }, - ...PagesBlock({ + ...SourcesBlock({ title: 'Sources', items: relatedPages, }), diff --git a/integrations/slack/src/ui/blocks/index.ts b/integrations/slack/src/ui/blocks/index.ts index 7ffdf1865..bc5bbc004 100644 --- a/integrations/slack/src/ui/blocks/index.ts +++ b/integrations/slack/src/ui/blocks/index.ts @@ -1,5 +1,4 @@ -import { RevisionPage, SearchAIAnswer } from '@gitbook/api'; -import { RelatedSource } from '../../actions/queryLens'; +import { RelatedSource } from '../../actions/'; // Slack only encodes these specific characters so we need to remove them in the output (specifically used for inputs to slack) export function decodeSlackEscapeChars(text: string) { @@ -12,21 +11,20 @@ export function decodeSlackEscapeChars(text: string) { }, text); } -export function PageBlock(page: { path: string; title: string }, sourceUrl: string) { - // TODO: note for review. is this the best way to do this? - const nonRevisionPublicUrl = sourceUrl.split('~/')[0]; - const url = `${nonRevisionPublicUrl}${page.path}`; +export function SourceBlock(source: RelatedSource) { + const nonRevisionPublicUrl = source.sourceUrl.split('~/')[0]; + const url = `${nonRevisionPublicUrl}${source.page.path || ''}`; return { type: 'mrkdwn', - text: `*<${url}|:spiral_note_pad: ${page.title}>*`, + text: `*<${url}|:spiral_note_pad: ${source.page.title}>*`, }; } -export function PagesBlock(params: { title?: string; items: Array }) { +export function SourcesBlock(params: { title?: string; items: Array }) { const { title, items } = params; const blocks = items.reduce>((acc, pageData) => { - const pageResultBlock = PageBlock(pageData.page, pageData.sourceUrl); + const pageResultBlock = SourceBlock(pageData); acc.push(pageResultBlock); return acc;