diff --git a/packages/constants/src/inbox.ts b/packages/constants/src/inbox.ts new file mode 100644 index 00000000000..cf5270a0440 --- /dev/null +++ b/packages/constants/src/inbox.ts @@ -0,0 +1,91 @@ +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; +}[] = [ + { + key: "pending", + i18n_title: "inbox_issue.status.pending.title", + status: EInboxIssueStatus.PENDING, + i18n_description: () => `inbox_issue.status.pending.description`, + }, + { + key: "declined", + i18n_title: "inbox_issue.status.declined.title", + status: EInboxIssueStatus.DECLINED, + i18n_description: () => `inbox_issue.status.declined.description`, + }, + { + key: "snoozed", + i18n_title: "inbox_issue.status.snoozed.title", + status: EInboxIssueStatus.SNOOZED, + i18n_description: () => `inbox_issue.status.snoozed.description`, + }, + { + key: "accepted", + i18n_title: "inbox_issue.status.accepted.title", + status: EInboxIssueStatus.ACCEPTED, + i18n_description: () => `inbox_issue.status.accepted.description`, + }, + { + key: "duplicate", + i18n_title: "inbox_issue.status.duplicate.title", + status: EInboxIssueStatus.DUPLICATE, + i18n_description: () => `inbox_issue.status.duplicate.description`, + }, +]; + +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", + }, +]; diff --git a/packages/constants/src/index.ts b/packages/constants/src/index.ts index 0346192af86..69c3e16b45a 100644 --- a/packages/constants/src/index.ts +++ b/packages/constants/src/index.ts @@ -15,5 +15,6 @@ export * from "./tab-indices"; export * from "./user"; export * from "./workspace"; export * from "./stickies"; +export * from "./inbox"; export * from "./profile"; export * from "./workspace-drafts"; diff --git a/packages/i18n/src/locales/en/translations.json b/packages/i18n/src/locales/en/translations.json index b384741ccc5..7dece057a36 100644 --- a/packages/i18n/src/locales/en/translations.json +++ b/packages/i18n/src/locales/en/translations.json @@ -487,6 +487,10 @@ "start_date": "Start date", "due_date": "Due date" }, + "sort": { + "asc": "Ascending", + "desc": "Descending" + }, "comments": "Comments", "updates": "Updates" }, @@ -584,6 +588,39 @@ } }, + "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" + } + }, + "workspace_dashboard": { "empty_state": { "general": { diff --git a/packages/i18n/src/locales/es/translations.json b/packages/i18n/src/locales/es/translations.json index bb113599164..9f1828a1882 100644 --- a/packages/i18n/src/locales/es/translations.json +++ b/packages/i18n/src/locales/es/translations.json @@ -491,6 +491,10 @@ "start_date": "Fecha de inicio", "due_date": "Fecha de vencimiento" }, + "sort": { + "asc": "Ascendente", + "desc": "Descendente" + }, "comments": "Comentarios", "updates": "Actualizaciones" }, @@ -588,6 +592,39 @@ } }, + "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" + } + }, + "workspace_dashboard": { "empty_state": { "general": { diff --git a/packages/i18n/src/locales/fr/translations.json b/packages/i18n/src/locales/fr/translations.json index 22b11f1dbaf..61da187ccf9 100644 --- a/packages/i18n/src/locales/fr/translations.json +++ b/packages/i18n/src/locales/fr/translations.json @@ -490,6 +490,10 @@ "start_date": "Date de début", "due_date": "Date d'échéance" }, + "sort": { + "asc": "Croissant", + "desc": "Décroissant" + }, "comments": "Commentaires", "updates": "Mises à jour" }, @@ -583,6 +587,39 @@ } }, + "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" + } + }, + "workspace_dashboard": { "empty_state": { "general": { diff --git a/packages/i18n/src/locales/ja/translations.json b/packages/i18n/src/locales/ja/translations.json index 825f493c622..781aeb7d484 100644 --- a/packages/i18n/src/locales/ja/translations.json +++ b/packages/i18n/src/locales/ja/translations.json @@ -489,6 +489,10 @@ "start_date": "開始日", "due_date": "期限日" }, + "sort": { + "asc": "昇順", + "desc": "降順" + }, "comments": "コメント", "updates": "更新" }, @@ -586,6 +590,39 @@ } }, + "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": "識別番号" + } + }, + "workspace_dashboard": { "empty_state": { "general": { diff --git a/packages/i18n/src/locales/zh-CN/translations.json b/packages/i18n/src/locales/zh-CN/translations.json index 6df5251a886..9fb3d9dd84d 100644 --- a/packages/i18n/src/locales/zh-CN/translations.json +++ b/packages/i18n/src/locales/zh-CN/translations.json @@ -354,6 +354,7 @@ "add_parent": "添加父问题", "loading_members": "正在加载成员...", "inbox": "收件箱", + "show_all": "显示全部", "show_less": "显示较少", "no_data_yet": "暂无数据", @@ -511,6 +512,10 @@ "start_date": "开始日期", "due_date": "截止日期" }, + "sort": { + "asc": "升序", + "desc": "降序" + }, "comments": "评论", "updates": "更新" }, @@ -604,6 +609,39 @@ } }, + "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": "编号" + } + }, + "user_profile": { "title": "你的工作", "work": "工作", diff --git a/packages/types/src/inbox.d.ts b/packages/types/src/inbox.d.ts index 5ae6c160e80..30ad0120c81 100644 --- a/packages/types/src/inbox.d.ts +++ b/packages/types/src/inbox.d.ts @@ -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"; @@ -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"; @@ -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; }; diff --git a/web/core/components/inbox/inbox-filter/applied-filters/status.tsx b/web/core/components/inbox/inbox-filter/applied-filters/status.tsx index 3232e4a5a21..990f04dced4 100644 --- a/web/core/components/inbox/inbox-filter/applied-filters/status.tsx +++ b/web/core/components/inbox/inbox-filter/applied-filters/status.tsx @@ -1,16 +1,18 @@ import { FC } from "react"; import { observer } from "mobx-react"; import { X } from "lucide-react"; -import { TInboxIssueStatus } from "@plane/types"; +import { INBOX_STATUS, TInboxIssueStatus } from "@plane/constants"; +import { useTranslation } from "@plane/i18n"; // constants import { Tag } from "@plane/ui"; -import { INBOX_STATUS } from "@/constants/inbox"; // hooks import { useProjectInbox } from "@/hooks/store"; +import { InboxStatusIcon } from "../../inbox-status-icon"; export const InboxIssueAppliedFiltersStatus: FC = observer(() => { // hooks const { inboxFilters, handleInboxIssueFilters } = useProjectInbox(); + const { t } = useTranslation(); // derived values const filteredValues = inboxFilters?.status || []; const currentOptionDetail = (status: TInboxIssueStatus) => INBOX_STATUS.find((s) => s.status === status) || undefined; @@ -28,9 +30,9 @@ export const InboxIssueAppliedFiltersStatus: FC = observer(() => { return (
- +
-
{optionDetail?.title}
+
{t(optionDetail?.i18n_title)}
{handleFilterValue(optionDetail?.status).length >= 1 && (
= observer((props) => { const { searchQuery } = props; // hooks const { currentTab, inboxFilters, handleInboxIssueFilters } = useProjectInbox(); + const { t } = useTranslation(); // states const [previewEnabled, setPreviewEnabled] = useState(true); // derived values @@ -52,8 +54,8 @@ export const FilterStatus: FC = observer((props) => { key={status.key} isChecked={filterValue?.includes(status.status) ? true : false} onClick={() => handleStatusFilterSelect(status.status)} - icon={} - title={status.title} + icon={} + title={t(status.i18n_title)} /> )) ) : ( diff --git a/web/core/components/inbox/inbox-filter/sorting/order-by.tsx b/web/core/components/inbox/inbox-filter/sorting/order-by.tsx index f1282c3c1ad..d3dabbf8633 100644 --- a/web/core/components/inbox/inbox-filter/sorting/order-by.tsx +++ b/web/core/components/inbox/inbox-filter/sorting/order-by.tsx @@ -3,9 +3,11 @@ import { FC } from "react"; import { observer } from "mobx-react"; import { ArrowDownWideNarrow, ArrowUpWideNarrow, Check, ChevronDown } from "lucide-react"; +import { INBOX_ISSUE_ORDER_BY_OPTIONS, INBOX_ISSUE_SORT_BY_OPTIONS } from "@plane/constants"; +import { useTranslation } from "@plane/i18n"; +import { TInboxIssueSortingOrderByKeys, TInboxIssueSortingSortByKeys } from "@plane/types"; import { CustomMenu, getButtonStyling } from "@plane/ui"; // constants -import { INBOX_ISSUE_ORDER_BY_OPTIONS, INBOX_ISSUE_SORT_BY_OPTIONS } from "@/constants/inbox"; // helpers import { cn } from "@/helpers/common.helper"; // hooks @@ -14,6 +16,7 @@ import useSize from "@/hooks/use-window-size"; export const InboxIssueOrderByDropdown: FC = observer(() => { // hooks + const { t } = useTranslation(); const windowSize = useSize(); const { inboxSorting, handleInboxIssueSorting } = useProjectInbox(); const orderByDetails = @@ -31,8 +34,7 @@ export const InboxIssueOrderByDropdown: FC = observer(() => { ) : ( )} - {orderByDetails?.label || "Order By"} - + {t(orderByDetails?.i18n_label || "inbox_issue.order_by.created_at")}
); @@ -47,9 +49,9 @@ export const InboxIssueOrderByDropdown: FC = observer(() => { handleInboxIssueSorting("order_by", option.key)} + onClick={() => handleInboxIssueSorting("order_by", option.key as TInboxIssueSortingOrderByKeys)} > - {option.label} + {t(option.i18n_label)} {inboxSorting?.order_by?.includes(option.key) && } ))} @@ -58,9 +60,9 @@ export const InboxIssueOrderByDropdown: FC = observer(() => { handleInboxIssueSorting("sort_by", option.key)} + onClick={() => handleInboxIssueSorting("sort_by", option.key as TInboxIssueSortingSortByKeys)} > - {option.label} + {t(option.i18n_label)} {inboxSorting?.sort_by?.includes(option.key) && } ))} diff --git a/web/core/components/inbox/inbox-issue-status.tsx b/web/core/components/inbox/inbox-issue-status.tsx index f74693f7688..8e7867a7572 100644 --- a/web/core/components/inbox/inbox-issue-status.tsx +++ b/web/core/components/inbox/inbox-issue-status.tsx @@ -1,11 +1,14 @@ import React from "react"; import { observer } from "mobx-react"; // constants -import { INBOX_STATUS } from "@/constants/inbox"; // helpers +import { INBOX_STATUS } from "@plane/constants"; +import { useTranslation } from "@plane/i18n"; import { cn } from "@/helpers/common.helper"; +import { findHowManyDaysLeft } from "@/helpers/date-time.helper"; // store import { IInboxIssueStore } from "@/store/inbox/inbox-issue.store"; +import { ICON_PROPERTIES, InboxStatusIcon } from "./inbox-status-icon"; type Props = { inboxIssue: IInboxIssueStore; @@ -15,28 +18,31 @@ type Props = { export const InboxIssueStatus: React.FC = observer((props) => { const { inboxIssue, iconSize = 16, showDescription = false } = props; + //hooks + const { t } = useTranslation(); // derived values const inboxIssueStatusDetail = INBOX_STATUS.find((s) => s.status === inboxIssue.status); const isSnoozedDatePassed = inboxIssue.status === 0 && new Date(inboxIssue.snoozed_till ?? "") < new Date(); if (!inboxIssueStatusDetail || isSnoozedDatePassed) return <>; - const description = inboxIssueStatusDetail.description(new Date(inboxIssue.snoozed_till ?? "")); + const description = t(inboxIssueStatusDetail.i18n_description(), { + days: findHowManyDaysLeft(new Date(inboxIssue.snoozed_till ?? "")), + }); + const statusIcon = ICON_PROPERTIES[inboxIssue?.status]; return (
- +
- {inboxIssue?.status === 0 && inboxIssue?.snoozed_till - ? inboxIssueStatusDetail.description(inboxIssue?.snoozed_till) - : inboxIssueStatusDetail.title} + {inboxIssue?.status === 0 && inboxIssue?.snoozed_till ? description : t(inboxIssueStatusDetail.i18n_title)}
{showDescription &&
{description}
} diff --git a/web/core/components/inbox/inbox-status-icon.tsx b/web/core/components/inbox/inbox-status-icon.tsx new file mode 100644 index 00000000000..03c6acd6ce2 --- /dev/null +++ b/web/core/components/inbox/inbox-status-icon.tsx @@ -0,0 +1,46 @@ +import { AlertTriangle, CheckCircle2, Clock, Copy, XCircle } from "lucide-react"; +import { TInboxIssueStatus, EInboxIssueStatus } from "@plane/constants"; +import { cn } from "@plane/utils"; + +export const ICON_PROPERTIES = { + [EInboxIssueStatus.PENDING]: { + icon: AlertTriangle, + textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-[#AB6400]"), + bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-[#FFF7C2]"), + }, + [EInboxIssueStatus.DECLINED]: { + icon: XCircle, + textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-[#CE2C31]"), + bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-[#FEEBEC]"), + }, + [EInboxIssueStatus.SNOOZED]: { + icon: Clock, + textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "text-red-500" : "text-custom-text-400"), + bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "bg-red-500/10" : "bg-[#E0E1E6]"), + }, + [EInboxIssueStatus.ACCEPTED]: { + icon: CheckCircle2, + textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-[#3E9B4F]"), + bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-[#E9F6E9]"), + }, + [EInboxIssueStatus.DUPLICATE]: { + icon: Copy, + textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-custom-text-200"), + bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-gray-500/10"), + }, +}; +export const InboxStatusIcon = ({ + type, + size, + className, + renderColor = true, +}: { + type: TInboxIssueStatus; + size?: number; + className?: string; + renderColor?: boolean; +}) => { + if (type === undefined) return null; + const Icon = ICON_PROPERTIES[type]; + return ; +}; diff --git a/web/core/components/inbox/sidebar/root.tsx b/web/core/components/inbox/sidebar/root.tsx index ea85b5dd4b6..a7821ec9e45 100644 --- a/web/core/components/inbox/sidebar/root.tsx +++ b/web/core/components/inbox/sidebar/root.tsx @@ -3,8 +3,8 @@ import { FC, useCallback, useEffect, useRef, useState } from "react"; import { observer } from "mobx-react"; // plane imports +import { TInboxIssueCurrentTab } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; -import { TInboxIssueCurrentTab } from "@plane/types"; import { Header, Loader, EHeaderVariant } from "@plane/ui"; // components import { SimpleEmptyState } from "@/components/empty-state"; diff --git a/web/core/constants/inbox.tsx b/web/core/constants/inbox.tsx deleted file mode 100644 index fb0f4ec636e..00000000000 --- a/web/core/constants/inbox.tsx +++ /dev/null @@ -1,91 +0,0 @@ -// icons -import { AlertTriangle, CheckCircle2, Clock, Copy, LucideIcon, XCircle } from "lucide-react"; -// types -import { TInboxIssueSortingOrderByKeys, TInboxIssueSortingSortByKeys, TInboxIssueStatus } from "@plane/types"; -// helpers -import { findHowManyDaysLeft } from "@/helpers/date-time.helper"; -import { EInboxIssueStatus } from "@/helpers/inbox.helper"; - -export const INBOX_STATUS: { - key: string; - status: TInboxIssueStatus; - icon: LucideIcon; - title: string; - description: (snoozedTillDate: Date) => string; - textColor: (snoozeDatePassed: boolean) => string; - bgColor: (snoozeDatePassed: boolean) => string; -}[] = [ - { - key: "pending", - status: EInboxIssueStatus.PENDING, - icon: AlertTriangle, - title: "Pending", - description: () => `Pending`, - textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-[#AB6400]"), - bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-[#FFF7C2]"), - }, - { - key: "declined", - status: EInboxIssueStatus.DECLINED, - icon: XCircle, - title: "Declined", - description: () => `Declined`, - textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-[#CE2C31]"), - bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-[#FEEBEC]"), - }, - { - key: "snoozed", - status: EInboxIssueStatus.SNOOZED, - icon: Clock, - title: "Snoozed", - description: (snoozedTillDate: Date = new Date()) => `${findHowManyDaysLeft(snoozedTillDate)} days to go`, - 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", - status: EInboxIssueStatus.ACCEPTED, - icon: CheckCircle2, - title: "Accepted", - description: () => `Accepted`, - textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-[#3E9B4F]"), - bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-[#E9F6E9]"), - }, - { - key: "duplicate", - status: EInboxIssueStatus.DUPLICATE, - icon: Copy, - title: "Duplicate", - description: () => `Duplicate`, - textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-custom-text-200"), - bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-gray-500/10"), - }, -]; - -export const INBOX_ISSUE_SOURCE = "in-app"; - -export const INBOX_ISSUE_ORDER_BY_OPTIONS: { key: TInboxIssueSortingOrderByKeys; label: string }[] = [ - { - key: "issue__created_at", - label: "Created at", - }, - { - key: "issue__updated_at", - label: "Updated at", - }, - { - key: "issue__sequence_id", - label: "ID", - }, -]; - -export const INBOX_ISSUE_SORT_BY_OPTIONS: { key: TInboxIssueSortingSortByKeys; label: string }[] = [ - { - key: "asc", - label: "Ascending", - }, - { - key: "desc", - label: "Descending", - }, -]; diff --git a/web/core/services/inbox/inbox-issue.service.ts b/web/core/services/inbox/inbox-issue.service.ts index 8837b6e74a3..737065d7003 100644 --- a/web/core/services/inbox/inbox-issue.service.ts +++ b/web/core/services/inbox/inbox-issue.service.ts @@ -1,5 +1,6 @@ // types -import type { TInboxIssue, TIssue, TInboxIssueWithPagination, TInboxForm } from "@plane/types"; +import { TInboxIssue } from "@plane/constants"; +import type { TIssue, TInboxIssueWithPagination, TInboxForm } from "@plane/types"; import { API_BASE_URL } from "@/helpers/common.helper"; import { APIService } from "@/services/api.service"; // helpers diff --git a/web/core/store/inbox/inbox-issue.store.ts b/web/core/store/inbox/inbox-issue.store.ts index 31bb5f591a4..2f72575b142 100644 --- a/web/core/store/inbox/inbox-issue.store.ts +++ b/web/core/store/inbox/inbox-issue.store.ts @@ -1,7 +1,8 @@ import clone from "lodash/clone"; import set from "lodash/set"; import { makeObservable, observable, runInAction, action } from "mobx"; -import { TIssue, TInboxIssue, TInboxIssueStatus, TInboxDuplicateIssueDetails } from "@plane/types"; +import { TInboxIssue, TInboxIssueStatus } from "@plane/constants"; +import { TIssue, TInboxDuplicateIssueDetails } from "@plane/types"; // helpers import { EInboxIssueStatus } from "@/helpers/inbox.helper"; // local db diff --git a/web/core/store/inbox/project-inbox.store.ts b/web/core/store/inbox/project-inbox.store.ts index 4dcb7297734..6ca0f31ba29 100644 --- a/web/core/store/inbox/project-inbox.store.ts +++ b/web/core/store/inbox/project-inbox.store.ts @@ -5,9 +5,8 @@ import set from "lodash/set"; import { action, computed, makeObservable, observable, runInAction } from "mobx"; import { computedFn } from "mobx-utils"; // types +import { TInboxIssue, TInboxIssueCurrentTab } from "@plane/constants"; import { - TInboxIssue, - TInboxIssueCurrentTab, TInboxIssueFilter, TInboxIssueSorting, TInboxIssuePaginationInfo,