Spaces:
Configuration error
Configuration error
| import type { ReplyToMode } from "../config/types.js"; | |
| import type { SlackAppMentionEvent, SlackMessageEvent } from "./types.js"; | |
| export type SlackThreadContext = { | |
| incomingThreadTs?: string; | |
| messageTs?: string; | |
| isThreadReply: boolean; | |
| replyToId?: string; | |
| messageThreadId?: string; | |
| }; | |
| export function resolveSlackThreadContext(params: { | |
| message: SlackMessageEvent | SlackAppMentionEvent; | |
| replyToMode: ReplyToMode; | |
| }): SlackThreadContext { | |
| const incomingThreadTs = params.message.thread_ts; | |
| const eventTs = params.message.event_ts; | |
| const messageTs = params.message.ts ?? eventTs; | |
| const hasThreadTs = typeof incomingThreadTs === "string" && incomingThreadTs.length > 0; | |
| const isThreadReply = | |
| hasThreadTs && (incomingThreadTs !== messageTs || Boolean(params.message.parent_user_id)); | |
| const replyToId = incomingThreadTs ?? messageTs; | |
| const messageThreadId = isThreadReply | |
| ? incomingThreadTs | |
| : params.replyToMode === "all" | |
| ? messageTs | |
| : undefined; | |
| return { | |
| incomingThreadTs, | |
| messageTs, | |
| isThreadReply, | |
| replyToId, | |
| messageThreadId, | |
| }; | |
| } | |
| export function resolveSlackThreadTargets(params: { | |
| message: SlackMessageEvent | SlackAppMentionEvent; | |
| replyToMode: ReplyToMode; | |
| }) { | |
| const { incomingThreadTs, messageTs } = resolveSlackThreadContext(params); | |
| const replyThreadTs = incomingThreadTs ?? (params.replyToMode === "all" ? messageTs : undefined); | |
| const statusThreadTs = replyThreadTs ?? messageTs; | |
| return { replyThreadTs, statusThreadTs }; | |
| } | |