From d82a562e97516bdaef44ad2df468876f7be59e57 Mon Sep 17 00:00:00 2001 From: Henit Chobisa Date: Wed, 30 Apr 2025 17:26:06 +0530 Subject: [PATCH] [SILO-192] fix: slack shortcut key (#3087) * fix: slack shortcut key * fix: passing user id to connection details --- silo/src/apps/slack/controllers/index.ts | 2 +- silo/src/apps/slack/types/types.ts | 2 +- .../src/apps/slack/worker/handlers/handle-command.ts | 4 +++- .../src/apps/slack/worker/handlers/handle-message.ts | 12 +++++++++--- .../src/apps/slack/worker/handlers/message-action.ts | 11 +++++++++-- .../apps/slack/worker/handlers/view-submission.ts | 4 +++- 6 files changed, 26 insertions(+), 9 deletions(-) diff --git a/silo/src/apps/slack/controllers/index.ts b/silo/src/apps/slack/controllers/index.ts index d9031bf80f..20c7990b52 100644 --- a/silo/src/apps/slack/controllers/index.ts +++ b/silo/src/apps/slack/controllers/index.ts @@ -462,7 +462,7 @@ export default class SlackController { ); } - if (payload.event === "issue" && !payload.activity.field.includes("_id")) { + if (payload.event === "issue" && payload.activity.field && !payload.activity.field.includes("_id")) { const payload = req.body as PlaneWebhookPayloadBase; const id = payload.data.id; diff --git a/silo/src/apps/slack/types/types.ts b/silo/src/apps/slack/types/types.ts index 6b8994d741..609678d772 100644 --- a/silo/src/apps/slack/types/types.ts +++ b/silo/src/apps/slack/types/types.ts @@ -92,7 +92,7 @@ export type SlackPrivateMetadata { - const details = await getConnectionDetails(data.team_id); + const details = await getConnectionDetails(data.team_id, { + id: data.user_id, + }); if (!details) { logger.info(`[SLACK] No connection details found for team ${data.team_id}`); return; diff --git a/silo/src/apps/slack/worker/handlers/handle-message.ts b/silo/src/apps/slack/worker/handlers/handle-message.ts index 2c3758f35e..31231c46b1 100644 --- a/silo/src/apps/slack/worker/handlers/handle-message.ts +++ b/silo/src/apps/slack/worker/handlers/handle-message.ts @@ -25,7 +25,9 @@ export const handleSlackEvent = async (data: SlackEventPayload) => { break; } } catch (error: any) { - const details = await getConnectionDetails(data.team_id); + const details = await getConnectionDetails(data.team_id, { + id: data.event.user, + }); if (!details) { logger.info(`[SLACK] No connection details found for team ${data.team_id}`); return; @@ -48,7 +50,9 @@ export const handleMessageEvent = async (data: SlackEventPayload) => { if (data.event.type === "message") { if (!data.event.thread_ts) return; - const details = await getConnectionDetails(data.team_id); + const details = await getConnectionDetails(data.team_id, { + id: data.event.user, + }); if (!details) { logger.info(`[SLACK] No connection details found for team ${data.team_id}`); return; @@ -100,7 +104,9 @@ export const handleMessageEvent = async (data: SlackEventPayload) => { export const handleLinkSharedEvent = async (data: SlackEventPayload) => { if (data.event.type === "link_shared") { - const details = await getConnectionDetails(data.team_id); + const details = await getConnectionDetails(data.team_id, { + id: data.event.user, + }); if (!details) { logger.info(`[SLACK] No connection details found for team ${data.team_id}`); return; diff --git a/silo/src/apps/slack/worker/handlers/message-action.ts b/silo/src/apps/slack/worker/handlers/message-action.ts index d652d7a70c..9ba3d97df8 100644 --- a/silo/src/apps/slack/worker/handlers/message-action.ts +++ b/silo/src/apps/slack/worker/handlers/message-action.ts @@ -13,11 +13,14 @@ import { ENTITIES } from "../../helpers/constants"; const apiClient = getAPIClient(); export const handleMessageAction = async (data: TMessageActionPayload) => { + + if (!data.callback_id) { logger.info(`[SLACK] No callback id found for message action ${data.type}`); return; } + switch (data.callback_id) { case E_MESSAGE_ACTION_TYPES.LINK_WORK_ITEM: await handleLinkWorkItem(data); @@ -39,7 +42,9 @@ const handleLinkWorkItem = async (data: TMessageActionPayload) => { already linked to another thread and to disconnect it first */ - const details = await getConnectionDetails(data.team.id); + const details = await getConnectionDetails(data.team.id, { + id: data.user.id, + }); if (!details) { logger.info(`[SLACK] No connection details found for team ${data.team.id}`); return; @@ -112,7 +117,9 @@ const handleLinkWorkItem = async (data: TMessageActionPayload) => { const handleCreateNewWorkItem = async (data: TMessageActionPayload) => { // Get the workspace connection for the associated team - const details = await getConnectionDetails(data.team.id); + const details = await getConnectionDetails(data.team.id, { + id: data.user.id, + }); if (!details) { logger.info(`[SLACK] No connection details found for team ${data.team.id}`); return; diff --git a/silo/src/apps/slack/worker/handlers/view-submission.ts b/silo/src/apps/slack/worker/handlers/view-submission.ts index bb047bc5e7..4e880d1cc6 100644 --- a/silo/src/apps/slack/worker/handlers/view-submission.ts +++ b/silo/src/apps/slack/worker/handlers/view-submission.ts @@ -16,7 +16,9 @@ import { credentials } from "amqplib"; const apiClient = getAPIClient(); export const handleViewSubmission = async (data: TViewSubmissionPayload) => { - const details = await getConnectionDetails(data.team.id); + const details = await getConnectionDetails(data.team.id, { + id: data.user.id, + }); if (!details) { logger.info(`[SLACK] No connection details found for team ${data.team.id}`); return;