Fixes #831 - Link from Slack notification does not work for teams with subdomains

This commit is contained in:
Tom Moor 2019-01-06 00:05:50 -08:00
parent 44e04c57a9
commit 58e31a9d3d
3 changed files with 11 additions and 6 deletions

View File

@ -1,7 +1,7 @@
// @flow
import Router from 'koa-router';
import { AuthenticationError, InvalidRequestError } from '../errors';
import { Authentication, Document, User } from '../models';
import { Authentication, Document, User, Team } from '../models';
import { presentSlackAttachment } from '../presenters';
import * as Slack from '../slack';
const router = new Router();
@ -64,6 +64,8 @@ router.post('hooks.slack', async ctx => {
if (!user) throw new InvalidRequestError('Invalid user');
const team = await Team.findById(user.teamId);
const results = await Document.searchForUser(user, text, {
limit: 5,
});
@ -78,6 +80,7 @@ router.post('hooks.slack', async ctx => {
attachments.push(
presentSlackAttachment(
result.document,
team,
queryIsInTitle ? undefined : result.context
)
);

View File

@ -1,7 +1,7 @@
// @flow
import { Document } from '../models';
import { Document, Team } from '../models';
function present(document: Document, context?: string) {
function present(document: Document, team: Team, context?: string) {
// the context contains <b> tags around search terms, we convert them here
// to the markdown format that slack expects to receive.
const text = context
@ -11,7 +11,7 @@ function present(document: Document, context?: string) {
return {
color: document.collection.color,
title: document.title,
title_link: `${process.env.URL}${document.url}`,
title_link: `${team.url}${document.url}`,
footer: document.collection.name,
text,
ts: document.getTimestamp(),

View File

@ -1,6 +1,6 @@
// @flow
import type { Event } from '../events';
import { Document, Integration, Collection } from '../models';
import { Document, Integration, Collection, Team } from '../models';
import { presentSlackAttachment } from '../presenters';
export default class Slack {
@ -70,6 +70,8 @@ export default class Slack {
});
if (!integration) return;
const team = await Team.findById(document.teamId);
let text = `${document.createdBy.name} published a new document`;
if (event.name === 'documents.update') {
@ -83,7 +85,7 @@ export default class Slack {
},
body: JSON.stringify({
text,
attachments: [presentSlackAttachment(document)],
attachments: [presentSlackAttachment(document, team)],
}),
});
}