Fixes #831 - Link from Slack notification does not work for teams with subdomains
This commit is contained in:
parent
44e04c57a9
commit
58e31a9d3d
|
@ -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
|
||||
)
|
||||
);
|
||||
|
|
|
@ -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(),
|
||||
|
|
|
@ -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)],
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
|
Reference in New Issue