export type IssueEventProps = { eventName: string; payload: any; updates?: any; group?: EventGroupProps; path?: string; }; export type EventProps = { eventName: string; payload: any; group?: EventGroupProps; }; export type EventGroupProps = { isGrouping?: boolean; groupType?: string; groupId?: string; }; export const getProjectEventPayload = (payload: any) => ({ workspace_id: payload.workspace_id, project_id: payload.id, identifier: payload.identifier, created_at: payload.created_at, updated_at: payload.updated_at, state: payload.state, element: payload.element, }); export const getCycleEventPayload = (payload: any) => ({ workspace_id: payload.workspace_id, project_id: payload.id, cycle_id: payload.id, created_at: payload.created_at, updated_at: payload.updated_at, start_date: payload.start_date, target_date: payload.target_date, cycle_status: payload.status, state: payload.state, element: payload.element, }); export const getModuleEventPayload = (payload: any) => ({ workspace_id: payload.workspace_id, project_id: payload.id, module_id: payload.id, created_at: payload.created_at, updated_at: payload.updated_at, start_date: payload.start_date, target_date: payload.target_date, module_status: payload.status, state: payload.state, element: payload.element, }); export const getIssueEventPayload = (props: IssueEventProps) => { const { eventName, payload, updates, path } = props; let eventPayload: any = { issue_id: payload.id, estimate_point: payload.estimate_point, link_count: payload.link_count, target_date: payload.target_date, is_draft: payload.is_draft, label_ids: payload.label_ids, assignee_ids: payload.assignee_ids, created_at: payload.created_at, updated_at: payload.updated_at, sequence_id: payload.sequence_id, module_ids: payload.module_ids, sub_issues_count: payload.sub_issues_count, parent_id: payload.parent_id, project_id: payload.project_id, priority: payload.priority, state_id: payload.state_id, start_date: payload.start_date, attachment_count: payload.attachment_count, cycle_id: payload.cycle_id, module_id: payload.module_id, archived_at: payload.archived_at, state: payload.state, view_id: path?.includes("workspace-views") || path?.includes("views") ? path.split("/").pop() : "", }; if (eventName === "Issue updated") { eventPayload = { ...eventPayload, ...updates, updated_from: props.path?.includes("workspace-views") ? "All views" : props.path?.includes("cycles") ? "Cycle" : props.path?.includes("modules") ? "Module" : props.path?.includes("views") ? "Project view" : props.path?.includes("inbox") ? "Inbox" : props.path?.includes("draft") ? "Draft" : "Project", }; } return eventPayload; };