Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: ln support for inbox constants #6432

Open
wants to merge 4 commits into
base: preview
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 113 additions & 0 deletions packages/constants/src/inbox.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
import { TInboxDuplicateIssueDetails, TIssue } from "@plane/types";

export enum EInboxIssueCurrentTab {
OPEN = "open",
CLOSED = "closed",
}

export enum EInboxIssueStatus {
PENDING = -2,
DECLINED = -1,
SNOOZED = 0,
ACCEPTED = 1,
DUPLICATE = 2,
}

export type TInboxIssueCurrentTab = EInboxIssueCurrentTab;
export type TInboxIssueStatus = EInboxIssueStatus;
export type TInboxIssue = {
id: string;
status: TInboxIssueStatus;
snoozed_till: Date | null;
duplicate_to: string | undefined;
source: string;
issue: TIssue;
created_by: string;
duplicate_issue_detail: TInboxDuplicateIssueDetails | undefined;
};

export const INBOX_STATUS: {
key: string;
status: TInboxIssueStatus;
i18n_title: string;
i18n_description: () => string;
textColor: (snoozeDatePassed: boolean) => string;
bgColor: (snoozeDatePassed: boolean) => string;
}[] = [
{
key: "pending",
i18n_title: "inbox_issue.status.pending.title",
status: EInboxIssueStatus.PENDING,
i18n_description: () => `inbox_issue.status.pending.description`,
textColor: (snoozeDatePassed: boolean = false) =>
snoozeDatePassed ? "" : "text-[#AB6400]",
bgColor: (snoozeDatePassed: boolean = false) =>
snoozeDatePassed ? "" : "bg-[#FFF7C2]",
Comment on lines +42 to +45
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Improve color handling functions.

The color functions have several issues:

  1. Inconsistent return types (empty string vs color string)
  2. Hardcoded Tailwind CSS classes
  3. Repeated logic across status types

Consider extracting these into a shared utility function or using a theme configuration.

type StatusColorConfig = {
  default: { text: string; bg: string };
  passed?: { text: string; bg: string };
};

const STATUS_COLORS: Record<EInboxIssueStatus, StatusColorConfig> = {
  [EInboxIssueStatus.PENDING]: {
    default: { text: "text-[#AB6400]", bg: "bg-[#FFF7C2]" }
  },
  // ... other status colors
};

const getStatusColors = (status: EInboxIssueStatus, snoozeDatePassed: boolean = false) => {
  const config = STATUS_COLORS[status];
  return snoozeDatePassed && config.passed ? config.passed : config.default;
};

Also applies to: 52-55, 62-65, 72-75, 82-85

},
{
key: "declined",
i18n_title: "inbox_issue.status.declined.title",
status: EInboxIssueStatus.DECLINED,
i18n_description: () => `inbox_issue.status.declined.description`,
textColor: (snoozeDatePassed: boolean = false) =>
snoozeDatePassed ? "" : "text-[#CE2C31]",
bgColor: (snoozeDatePassed: boolean = false) =>
snoozeDatePassed ? "" : "bg-[#FEEBEC]",
},
{
key: "snoozed",
i18n_title: "inbox_issue.status.snoozed.title",
status: EInboxIssueStatus.SNOOZED,
i18n_description: () => `inbox_issue.status.snoozed.description`,
textColor: (snoozeDatePassed: boolean = false) =>
snoozeDatePassed ? "text-red-500" : "text-custom-text-400",
bgColor: (snoozeDatePassed: boolean = false) =>
snoozeDatePassed ? "bg-red-500/10" : "bg-[#E0E1E6]",
},
{
key: "accepted",
i18n_title: "inbox_issue.status.accepted.title",
status: EInboxIssueStatus.ACCEPTED,
i18n_description: () => `inbox_issue.status.accepted.description`,
textColor: (snoozeDatePassed: boolean = false) =>
snoozeDatePassed ? "" : "text-[#3E9B4F]",
bgColor: (snoozeDatePassed: boolean = false) =>
snoozeDatePassed ? "" : "bg-[#E9F6E9]",
},
{
key: "duplicate",
i18n_title: "inbox_issue.status.duplicate.title",
status: EInboxIssueStatus.DUPLICATE,
i18n_description: () => `inbox_issue.status.duplicate.description`,
textColor: (snoozeDatePassed: boolean = false) =>
snoozeDatePassed ? "" : "text-custom-text-200",
bgColor: (snoozeDatePassed: boolean = false) =>
snoozeDatePassed ? "" : "bg-gray-500/10",
},
];

export const INBOX_ISSUE_ORDER_BY_OPTIONS = [
{
key: "issue__created_at",
i18n_label: "inbox_issue.order_by.created_at",
},
{
key: "issue__updated_at",
i18n_label: "inbox_issue.order_by.updated_at",
},
{
key: "issue__sequence_id",
i18n_label: "inbox_issue.order_by.id",
},
];

export const INBOX_ISSUE_SORT_BY_OPTIONS = [
{
key: "asc",
i18n_label: "common.sort.asc",
},
{
key: "desc",
i18n_label: "common.sort.desc",
},
];
1 change: 1 addition & 0 deletions packages/constants/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ export * from "./swr";
export * from "./user";
export * from "./workspace";
export * from "./stickies";
export * from "./inbox";
40 changes: 39 additions & 1 deletion packages/i18n/src/locales/en/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -316,5 +316,43 @@
"change_parent_issue": "Change parent issue",
"remove_parent_issue": "Remove parent issue",
"add_parent": "Add parent",
"loading_members": "Loading members..."
"loading_members": "Loading members...",
"inbox_issue": {
"status": {
"pending": {
"title": "Pending",
"description": "Pending"
},
"declined": {
"title": "Declined",
"description": "Declined"
},
"snoozed": {
"title": "Snoozed",
"description": "{days, plural, one{# day} other{# days}} to go"
},
"accepted": {
"title": "Accepted",
"description": "Accepted"
},
"duplicate": {
"title": "Duplicate",
"description": "Duplicate"
}
},
"source": {
"in-app": "in-app"
},
"order_by": {
"created_at": "Created at",
"updated_at": "Updated at",
"id": "ID"
}
},
"common": {
"sort": {
"asc": "Ascending",
"desc": "Descending"
}
}
}
40 changes: 39 additions & 1 deletion packages/i18n/src/locales/es/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -316,5 +316,43 @@
"remove_parent_issue": "Eliminar problema padre",
"add_parent": "Agregar padre",
"loading_members": "Cargando miembros...",
"inbox": "bandeja de entrada"
"inbox": "bandeja de entrada",
"inbox_issue": {
"status": {
"pending": {
"title": "Pendiente",
"description": "Pendiente"
},
"declined": {
"title": "Rechazado",
"description": "Rechazado"
},
"snoozed": {
"title": "Pospuesto",
"description": "{days, plural, one{# día} other{# días}} restantes"
},
"accepted": {
"title": "Aceptado",
"description": "Aceptado"
},
"duplicate": {
"title": "Duplicado",
"description": "Duplicado"
}
},
"source": {
"in-app": "en la aplicación"
},
"order_by": {
"created_at": "Creado el",
"updated_at": "Actualizado el",
"id": "Identificador"
}
},
"common": {
"sort": {
"asc": "Ascendente",
"desc": "Descendente"
}
}
}
40 changes: 39 additions & 1 deletion packages/i18n/src/locales/fr/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -316,5 +316,43 @@
"remove_parent_issue": "Supprimer le problème parent",
"add_parent": "Ajouter un parent",
"loading_members": "Chargement des membres...",
"inbox": "Boîte de réception"
"inbox": "Boîte de réception",
"inbox_issue": {
"status": {
"pending": {
"title": "En attente",
"description": "En attente"
},
"declined": {
"title": "Refusé",
"description": "Refusé"
},
"snoozed": {
"title": "Reporté",
"description": "{days, plural, one{# jour} other{# jours}} restants"
},
"accepted": {
"title": "Accepté",
"description": "Accepté"
},
"duplicate": {
"title": "Doublon",
"description": "Doublon"
}
},
"source": {
"in-app": "dans l'application"
},
"order_by": {
"created_at": "Créé le",
"updated_at": "Mis à jour le",
"id": "Identifiant"
}
},
"common": {
"sort": {
"asc": "Croissant",
"desc": "Décroissant"
}
}
}
40 changes: 39 additions & 1 deletion packages/i18n/src/locales/ja/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -316,5 +316,43 @@
"remove_parent_issue": "親問題を削除",
"add_parent": "親問題を追加",
"loading_members": "メンバーを読み込んでいます...",
"inbox": "受信箱"
"inbox": "受信箱",
"inbox_issue": {
"status": {
"pending": {
"title": "保留中",
"description": "保留中"
},
"declined": {
"title": "却下",
"description": "却下"
},
"snoozed": {
"title": "スヌーズ中",
"description": "残り{days}日"
},
"accepted": {
"title": "承認済み",
"description": "承認済み"
},
"duplicate": {
"title": "重複",
"description": "重複"
}
},
"source": {
"in-app": "アプリ内"
},
"order_by": {
"created_at": "作成日時",
"updated_at": "更新日時",
"id": "識別番号"
}
},
"common": {
"sort": {
"asc": "昇順",
"desc": "降順"
}
}
}
40 changes: 39 additions & 1 deletion packages/i18n/src/locales/zh-CN/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -315,5 +315,43 @@
"remove_parent_issue": "移除父问题",
"add_parent": "添加父问题",
"loading_members": "正在加载成员...",
"inbox": "收件箱"
"inbox": "收件箱",
"inbox_issue": {
"status": {
"pending": {
"title": "待处理",
"description": "待处理"
},
"declined": {
"title": "已拒绝",
"description": "已拒绝"
},
"snoozed": {
"title": "已暂停",
"description": "还剩{days}天"
},
"accepted": {
"title": "已接受",
"description": "已接受"
},
"duplicate": {
"title": "重复",
"description": "重复"
}
},
"source": {
"in-app": "应用内"
},
"order_by": {
"created_at": "创建时间",
"updated_at": "更新时间",
"id": "编号"
}
},
"common": {
"sort": {
"asc": "升序",
"desc": "降序"
}
}
}
33 changes: 1 addition & 32 deletions packages/types/src/inbox.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,6 @@ import { TPaginationInfo } from "./common";
import { TIssuePriorities } from "./issues";
import { TIssue } from "./issues/base";

enum EInboxIssueCurrentTab {
OPEN = "open",
CLOSED = "closed",
}

enum EInboxIssueStatus {
PENDING = -2,
DECLINED = -1,
SNOOZED = 0,
ACCEPTED = 1,
DUPLICATE = 2,
}

export type TInboxIssueCurrentTab = EInboxIssueCurrentTab;

export type TInboxIssueStatus = EInboxIssueStatus;

// filters
export type TInboxIssueFilterMemberKeys = "assignees" | "created_by";

Expand All @@ -38,10 +21,7 @@ export type TInboxIssueFilter = {
// sorting filters
export type TInboxIssueSortingKeys = "order_by" | "sort_by";

export type TInboxIssueSortingOrderByKeys =
| "issue__created_at"
| "issue__updated_at"
| "issue__sequence_id";
export type TInboxIssueSortingOrderByKeys = "issue__created_at" | "issue__updated_at" | "issue__sequence_id";

export type TInboxIssueSortingSortByKeys = "asc" | "desc";

Expand Down Expand Up @@ -78,17 +58,6 @@ export type TInboxDuplicateIssueDetails = {
name: string;
};

export type TInboxIssue = {
id: string;
status: TInboxIssueStatus;
snoozed_till: Date | null;
duplicate_to: string | undefined;
source: string;
issue: TIssue;
created_by: string;
duplicate_issue_detail: TInboxDuplicateIssueDetails | undefined;
};

export type TInboxIssuePaginationInfo = TPaginationInfo & {
total_results: number;
};
Expand Down
Loading
Loading