mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
106 lines
2.9 KiB
TypeScript
106 lines
2.9 KiB
TypeScript
|
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;
|
||
|
};
|