mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
57 lines
1.7 KiB
TypeScript
57 lines
1.7 KiB
TypeScript
import React from "react";
|
|
import { observer } from "mobx-react";
|
|
// hooks
|
|
import { INBOX_STATUS } from "@/constants/inbox";
|
|
import { useInboxIssues } from "@/hooks/store";
|
|
// constants
|
|
|
|
type Props = {
|
|
workspaceSlug: string;
|
|
projectId: string;
|
|
inboxId: string;
|
|
issueId: string;
|
|
iconSize?: number;
|
|
showDescription?: boolean;
|
|
};
|
|
|
|
export const InboxIssueStatus: React.FC<Props> = observer((props) => {
|
|
const { workspaceSlug, projectId, inboxId, issueId, iconSize = 18, showDescription = false } = props;
|
|
// hooks
|
|
const {
|
|
issues: { getInboxIssueByIssueId },
|
|
} = useInboxIssues();
|
|
|
|
const inboxIssueDetail = getInboxIssueByIssueId(inboxId, issueId);
|
|
if (!inboxIssueDetail) return <></>;
|
|
|
|
const inboxIssueStatusDetail = INBOX_STATUS.find((s) => s.status === inboxIssueDetail.status);
|
|
if (!inboxIssueStatusDetail) return <></>;
|
|
|
|
const isSnoozedDatePassed =
|
|
inboxIssueDetail.status === 0 && !!inboxIssueDetail.snoozed_till && inboxIssueDetail.snoozed_till < new Date();
|
|
|
|
return (
|
|
<div
|
|
className={`flex items-center ${inboxIssueStatusDetail.textColor(isSnoozedDatePassed)} ${
|
|
showDescription
|
|
? `p-3 gap-2 text-sm rounded-md border ${inboxIssueStatusDetail.bgColor(
|
|
isSnoozedDatePassed
|
|
)} ${inboxIssueStatusDetail.borderColor(isSnoozedDatePassed)} `
|
|
: "w-full justify-end gap-1 text-xs"
|
|
}`}
|
|
>
|
|
<inboxIssueStatusDetail.icon size={iconSize} strokeWidth={2} />
|
|
{showDescription ? (
|
|
inboxIssueStatusDetail.description(
|
|
workspaceSlug,
|
|
projectId,
|
|
inboxIssueDetail.duplicate_to ?? "",
|
|
inboxIssueDetail.snoozed_till
|
|
)
|
|
) : (
|
|
<span>{inboxIssueStatusDetail.title}</span>
|
|
)}
|
|
</div>
|
|
);
|
|
});
|