From 3687cda235c19149a8ac11320ed57da94e36cb91 Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal Date: Wed, 9 Apr 2025 15:31:52 +0530 Subject: [PATCH 1/3] chore: intake form version history --- packages/constants/src/inbox.ts | 144 +++++++++--------- .../src/issues/activity/issue_activity.d.ts | 5 +- .../core/description-versions/dropdown.tsx | 7 +- .../core/description-versions/root.tsx | 2 +- .../components/inbox/content/issue-root.tsx | 10 +- .../activity/actions/default.tsx | 9 +- .../issues/issue-detail/main-content.tsx | 5 +- .../issues/peek-overview/issue-detail.tsx | 7 +- .../services/inbox/inbox-issue.service.ts | 9 +- web/core/store/inbox/inbox-issue.store.ts | 6 +- 10 files changed, 113 insertions(+), 91 deletions(-) diff --git a/packages/constants/src/inbox.ts b/packages/constants/src/inbox.ts index cf5270a0440..2d94c1f04c2 100644 --- a/packages/constants/src/inbox.ts +++ b/packages/constants/src/inbox.ts @@ -1,91 +1,97 @@ import { TInboxDuplicateIssueDetails, TIssue } from "@plane/types"; export enum EInboxIssueCurrentTab { - OPEN = "open", - CLOSED = "closed", + OPEN = "open", + CLOSED = "closed", } export enum EInboxIssueStatus { - PENDING = -2, - DECLINED = -1, - SNOOZED = 0, - ACCEPTED = 1, - DUPLICATE = 2, + PENDING = -2, + DECLINED = -1, + SNOOZED = 0, + ACCEPTED = 1, + DUPLICATE = 2, +} + +export enum EInboxIssueSource { + IN_APP = "IN_APP", + FORMS = "FORMS", + EMAIL = "EMAIL", } 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; + id: string; + status: TInboxIssueStatus; + snoozed_till: Date | null; + duplicate_to: string | undefined; + source: EInboxIssueSource | undefined; + 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: 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`, - }, + { + 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", - }, + { + 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", - }, + { + key: "asc", + i18n_label: "common.sort.asc", + }, + { + key: "desc", + i18n_label: "common.sort.desc", + }, ]; diff --git a/packages/types/src/issues/activity/issue_activity.d.ts b/packages/types/src/issues/activity/issue_activity.d.ts index 7eccebdf36f..7ed0c35d6eb 100644 --- a/packages/types/src/issues/activity/issue_activity.d.ts +++ b/packages/types/src/issues/activity/issue_activity.d.ts @@ -1,3 +1,6 @@ +// plane imports +import { EInboxIssueSource } from "@plane/constants"; +// local imports import { TIssueActivityWorkspaceDetail, TIssueActivityProjectDetail, @@ -31,7 +34,7 @@ export type TIssueActivity = { epoch: number; issue_comment: string | null; source_data: { - source: "IN_APP" | "FORM" | "EMAIL"; + source: EInboxIssueSource; source_email?: string; extra: { username?: string; diff --git a/web/core/components/core/description-versions/dropdown.tsx b/web/core/components/core/description-versions/dropdown.tsx index 27d6eaff472..098498500b6 100644 --- a/web/core/components/core/description-versions/dropdown.tsx +++ b/web/core/components/core/description-versions/dropdown.tsx @@ -25,7 +25,9 @@ export const DescriptionVersionsDropdown: React.FC = observer((props) => // derived values const latestVersion = versions?.[0]; const lastUpdatedAt = latestVersion?.created_at ?? entityInformation.createdAt; - const lastUpdatedByUserDetails = getUserDetails(latestVersion?.owned_by ?? entityInformation.createdBy); + const lastUpdatedByUserDisplayName = latestVersion?.owned_by + ? getUserDetails(latestVersion?.owned_by)?.display_name + : entityInformation.createdByDisplayName; // translation const { t } = useTranslation(); @@ -38,8 +40,7 @@ export const DescriptionVersionsDropdown: React.FC = observer((props) =>

{t("description_versions.last_edited_by")}{" "} - {lastUpdatedByUserDetails?.display_name}{" "} - {calculateTimeAgo(lastUpdatedAt)} + {lastUpdatedByUserDisplayName} {calculateTimeAgo(lastUpdatedAt)}

} diff --git a/web/core/components/core/description-versions/root.tsx b/web/core/components/core/description-versions/root.tsx index 174ab807d9c..52faa60154c 100644 --- a/web/core/components/core/description-versions/root.tsx +++ b/web/core/components/core/description-versions/root.tsx @@ -10,7 +10,7 @@ import { DescriptionVersionsModal } from "./modal"; export type TDescriptionVersionEntityInformation = { createdAt: Date; - createdBy: string; + createdByDisplayName: string; id: string; isRestoreDisabled: boolean; }; diff --git a/web/core/components/inbox/content/issue-root.tsx b/web/core/components/inbox/content/issue-root.tsx index ac81d56b44d..be823d64695 100644 --- a/web/core/components/inbox/content/issue-root.tsx +++ b/web/core/components/inbox/content/issue-root.tsx @@ -4,7 +4,7 @@ import { Dispatch, SetStateAction, useEffect, useMemo, useRef } from "react"; import { observer } from "mobx-react"; import { usePathname } from "next/navigation"; // plane imports -import { ISSUE_ARCHIVED, ISSUE_DELETED } from "@plane/constants"; +import { EInboxIssueSource, ISSUE_ARCHIVED, ISSUE_DELETED } from "@plane/constants"; import { EditorRefApi } from "@plane/editor"; import { TIssue, TNameDescriptionLoader } from "@plane/types"; import { Loader, TOAST_TYPE, setToast } from "@plane/ui"; @@ -22,7 +22,7 @@ import { // helpers import { getTextContent } from "@/helpers/editor.helper"; // hooks -import { useEventTracker, useIssueDetail, useProject, useProjectInbox, useUser } from "@/hooks/store"; +import { useEventTracker, useIssueDetail, useMember, useProject, useProjectInbox, useUser } from "@/hooks/store"; import useReloadConfirmations from "@/hooks/use-reload-confirmation"; // store types import { DeDupeIssuePopoverRoot } from "@/plane-web/components/de-dupe"; @@ -51,6 +51,7 @@ export const InboxIssueMainContent: React.FC = observer((props) => { const editorRef = useRef(null); // store hooks const { data: currentUser } = useUser(); + const { getUserDetails } = useMember(); const { loader } = useProjectInbox(); const { getProjectById } = useProject(); const { removeIssue, archiveIssue } = useIssueDetail(); @@ -232,7 +233,10 @@ export const InboxIssueMainContent: React.FC = observer((props) => { className="flex-shrink-0" entityInformation={{ createdAt: new Date(issue.created_at ?? ""), - createdBy: issue.created_by ?? "", + createdByDisplayName: + inboxIssue.source === EInboxIssueSource.FORMS + ? "Intake Form user" + : (getUserDetails(issue.created_by ?? "")?.display_name ?? ""), id: issue.id, isRestoreDisabled: !isEditable, }} diff --git a/web/core/components/issues/issue-detail/issue-activity/activity/actions/default.tsx b/web/core/components/issues/issue-detail/issue-activity/activity/actions/default.tsx index f137498c23f..100be6a13d9 100644 --- a/web/core/components/issues/issue-detail/issue-activity/activity/actions/default.tsx +++ b/web/core/components/issues/issue-detail/issue-activity/activity/actions/default.tsx @@ -2,12 +2,13 @@ import { FC } from "react"; import { observer } from "mobx-react"; -// hooks +// plane imports +import { EInboxIssueSource } from "@plane/constants"; import { LayersIcon } from "@plane/ui"; +// hooks import { useIssueDetail } from "@/hooks/store"; -// components +// local imports import { IssueActivityBlockComponent } from "./"; -// icons type TIssueDefaultActivity = { activityId: string; ends: "top" | "bottom" | undefined }; @@ -31,7 +32,7 @@ export const IssueDefaultActivity: FC = observer((props) > <> {activity.verb === "created" ? ( - source && source !== "IN_APP" ? ( + source && source !== EInboxIssueSource.IN_APP ? ( created the work item via {source.toLowerCase()}. diff --git a/web/core/components/issues/issue-detail/main-content.tsx b/web/core/components/issues/issue-detail/main-content.tsx index dff83d33331..863bd061d7f 100644 --- a/web/core/components/issues/issue-detail/main-content.tsx +++ b/web/core/components/issues/issue-detail/main-content.tsx @@ -20,7 +20,7 @@ import { // helpers import { getTextContent } from "@/helpers/editor.helper"; // hooks -import { useIssueDetail, useProject, useUser } from "@/hooks/store"; +import { useIssueDetail, useMember, useProject, useUser } from "@/hooks/store"; import useReloadConfirmations from "@/hooks/use-reload-confirmation"; import useSize from "@/hooks/use-window-size"; // plane web components @@ -52,6 +52,7 @@ export const IssueMainContent: React.FC = observer((props) => { // hooks const windowSize = useSize(); const { data: currentUser } = useUser(); + const { getUserDetails } = useMember(); const { issue: { getIssueById }, peekIssue, @@ -154,7 +155,7 @@ export const IssueMainContent: React.FC = observer((props) => { className="flex-shrink-0" entityInformation={{ createdAt: new Date(issue.created_at), - createdBy: issue.created_by, + createdByDisplayName: getUserDetails(issue.created_by ?? "")?.display_name ?? "", id: issueId, isRestoreDisabled: !isEditable || isArchived, }} diff --git a/web/core/components/issues/peek-overview/issue-detail.tsx b/web/core/components/issues/peek-overview/issue-detail.tsx index 9322b39c4c4..107b7460c22 100644 --- a/web/core/components/issues/peek-overview/issue-detail.tsx +++ b/web/core/components/issues/peek-overview/issue-detail.tsx @@ -10,7 +10,7 @@ import { IssueParentDetail, TIssueOperations } from "@/components/issues"; // helpers import { getTextContent } from "@/helpers/editor.helper"; // hooks -import { useIssueDetail, useProject, useUser } from "@/hooks/store"; +import { useIssueDetail, useMember, useProject, useUser } from "@/hooks/store"; import useReloadConfirmations from "@/hooks/use-reload-confirmation"; // plane web components import { DeDupeIssuePopoverRoot } from "@/plane-web/components/de-dupe"; @@ -47,7 +47,8 @@ export const PeekOverviewIssueDetails: FC = observer( issue: { getIssueById }, } = useIssueDetail(); const { getProjectById } = useProject(); - // hooks + const { getUserDetails } = useMember(); + // reload confirmation const { setShowAlert } = useReloadConfirmations(isSubmitting === "submitting"); useEffect(() => { @@ -147,7 +148,7 @@ export const PeekOverviewIssueDetails: FC = observer( className="flex-shrink-0" entityInformation={{ createdAt: new Date(issue.created_at), - createdBy: issue.created_by, + createdByDisplayName: getUserDetails(issue.created_by ?? "")?.display_name ?? "", id: issueId, isRestoreDisabled: disabled || isArchived, }} diff --git a/web/core/services/inbox/inbox-issue.service.ts b/web/core/services/inbox/inbox-issue.service.ts index 19b62838b94..007c364c500 100644 --- a/web/core/services/inbox/inbox-issue.service.ts +++ b/web/core/services/inbox/inbox-issue.service.ts @@ -1,9 +1,10 @@ -// types -import { TInboxIssue } from "@plane/constants"; +// plane imports +import { EInboxIssueSource, TInboxIssue } from "@plane/constants"; import type { TIssue, TInboxIssueWithPagination } from "@plane/types"; +// helpers import { API_BASE_URL } from "@/helpers/common.helper"; +// services import { APIService } from "@/services/api.service"; -// helpers export class InboxIssueService extends APIService { constructor() { @@ -32,7 +33,7 @@ export class InboxIssueService extends APIService { async create(workspaceSlug: string, projectId: string, data: Partial): Promise { return this.post(`/api/workspaces/${workspaceSlug}/projects/${projectId}/inbox-issues/`, { - source: "IN_APP", + source: EInboxIssueSource.IN_APP, issue: data, }) .then((response) => response?.data) diff --git a/web/core/store/inbox/inbox-issue.store.ts b/web/core/store/inbox/inbox-issue.store.ts index 2f72575b142..8e193435e26 100644 --- a/web/core/store/inbox/inbox-issue.store.ts +++ b/web/core/store/inbox/inbox-issue.store.ts @@ -1,7 +1,7 @@ import clone from "lodash/clone"; import set from "lodash/set"; import { makeObservable, observable, runInAction, action } from "mobx"; -import { TInboxIssue, TInboxIssueStatus } from "@plane/constants"; +import { TInboxIssue, TInboxIssueStatus, EInboxIssueSource } from "@plane/constants"; import { TIssue, TInboxDuplicateIssueDetails } from "@plane/types"; // helpers import { EInboxIssueStatus } from "@/helpers/inbox.helper"; @@ -19,6 +19,7 @@ export interface IInboxIssueStore { status: TInboxIssueStatus; issue: Partial; snoozed_till: Date | undefined; + source: EInboxIssueSource | undefined; duplicate_to: string | undefined; created_by: string | undefined; duplicate_issue_detail: TInboxDuplicateIssueDetails | undefined; @@ -38,6 +39,7 @@ export class InboxIssueStore implements IInboxIssueStore { status: TInboxIssueStatus = EInboxIssueStatus.PENDING; issue: Partial = {}; snoozed_till: Date | undefined; + source: EInboxIssueSource | undefined; duplicate_to: string | undefined; created_by: string | undefined; duplicate_issue_detail: TInboxDuplicateIssueDetails | undefined = undefined; @@ -59,6 +61,7 @@ export class InboxIssueStore implements IInboxIssueStore { this.snoozed_till = data?.snoozed_till || undefined; this.duplicate_to = data?.duplicate_to || undefined; this.created_by = data?.created_by || undefined; + this.source = data?.source || undefined; this.duplicate_issue_detail = data?.duplicate_issue_detail || undefined; this.workspaceSlug = workspaceSlug; this.projectId = projectId; @@ -74,6 +77,7 @@ export class InboxIssueStore implements IInboxIssueStore { duplicate_to: observable, duplicate_issue_detail: observable, created_by: observable, + source: observable, // actions updateInboxIssueStatus: action, updateInboxIssueDuplicateTo: action, From c61a4bd15035a21a0943a85cf5c1197b7f13038e Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal Date: Wed, 9 Apr 2025 15:50:50 +0530 Subject: [PATCH 2/3] fix: remove autofocus from the copy markdown button --- web/core/components/core/description-versions/modal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/core/components/core/description-versions/modal.tsx b/web/core/components/core/description-versions/modal.tsx index bd1b6ae941c..984a52658fc 100644 --- a/web/core/components/core/description-versions/modal.tsx +++ b/web/core/components/core/description-versions/modal.tsx @@ -175,7 +175,7 @@ export const DescriptionVersionsModal: React.FC = observer((props) => {
- {!isRestoreDisabled && ( From 6fbb4dcb848a1888b313c72882295d8e684f5c78 Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal Date: Wed, 9 Apr 2025 16:03:07 +0530 Subject: [PATCH 3/3] chore: add logic to display deactivated user --- packages/i18n/src/locales/cs/translations.json | 3 ++- packages/i18n/src/locales/de/translations.json | 3 ++- packages/i18n/src/locales/en/translations.json | 3 ++- packages/i18n/src/locales/es/translations.json | 3 ++- packages/i18n/src/locales/fr/translations.json | 3 ++- packages/i18n/src/locales/id/translations.json | 3 ++- packages/i18n/src/locales/it/translations.json | 3 ++- packages/i18n/src/locales/ja/translations.json | 3 ++- packages/i18n/src/locales/ko/translations.json | 3 ++- packages/i18n/src/locales/pl/translations.json | 3 ++- packages/i18n/src/locales/pt-BR/translations.json | 3 ++- packages/i18n/src/locales/ro/translations.json | 3 ++- packages/i18n/src/locales/ru/translations.json | 3 ++- packages/i18n/src/locales/sk/translations.json | 3 ++- packages/i18n/src/locales/ua/translations.json | 3 ++- packages/i18n/src/locales/vi-VN/translations.json | 3 ++- packages/i18n/src/locales/zh-CN/translations.json | 3 ++- packages/i18n/src/locales/zh-TW/translations.json | 3 ++- .../core/description-versions/dropdown-item.tsx | 9 ++++++++- 19 files changed, 44 insertions(+), 19 deletions(-) diff --git a/packages/i18n/src/locales/cs/translations.json b/packages/i18n/src/locales/cs/translations.json index 0dff29fc7e5..4c8c602baf6 100644 --- a/packages/i18n/src/locales/cs/translations.json +++ b/packages/i18n/src/locales/cs/translations.json @@ -867,7 +867,8 @@ "deleting": "Mazání", "pending": "Čekající", "invite": "Pozvat", - "view": "Pohled" + "view": "Pohled", + "deactivated_user": "Deaktivovaný uživatel" }, "chart": { diff --git a/packages/i18n/src/locales/de/translations.json b/packages/i18n/src/locales/de/translations.json index 97334611b88..23ad5f6547f 100644 --- a/packages/i18n/src/locales/de/translations.json +++ b/packages/i18n/src/locales/de/translations.json @@ -862,7 +862,8 @@ "deleting": "Wird gelöscht", "pending": "Ausstehend", "invite": "Einladen", - "view": "Ansicht" + "view": "Ansicht", + "deactivated_user": "Deaktivierter Benutzer" }, "chart": { "x_axis": "X-Achse", diff --git a/packages/i18n/src/locales/en/translations.json b/packages/i18n/src/locales/en/translations.json index d2a891fc6e1..9a5c9493027 100644 --- a/packages/i18n/src/locales/en/translations.json +++ b/packages/i18n/src/locales/en/translations.json @@ -702,7 +702,8 @@ "deleting": "Deleting", "pending": "Pending", "invite": "Invite", - "view": "View" + "view": "View", + "deactivated_user": "Deactivated user" }, "chart": { diff --git a/packages/i18n/src/locales/es/translations.json b/packages/i18n/src/locales/es/translations.json index 9470a8c7aaf..3eecfae797f 100644 --- a/packages/i18n/src/locales/es/translations.json +++ b/packages/i18n/src/locales/es/translations.json @@ -872,7 +872,8 @@ "deleting": "Eliminando", "pending": "Pendiente", "invite": "Invitar", - "view": "Ver" + "view": "Ver", + "deactivated_user": "Usuario desactivado" }, "chart": { diff --git a/packages/i18n/src/locales/fr/translations.json b/packages/i18n/src/locales/fr/translations.json index 27d6f54c85e..5a048ffe792 100644 --- a/packages/i18n/src/locales/fr/translations.json +++ b/packages/i18n/src/locales/fr/translations.json @@ -870,7 +870,8 @@ "deleting": "Suppression", "pending": "En attente", "invite": "Inviter", - "view": "Afficher" + "view": "Afficher", + "deactivated_user": "Utilisateur désactivé" }, "chart": { diff --git a/packages/i18n/src/locales/id/translations.json b/packages/i18n/src/locales/id/translations.json index 22ebae1c0cf..487ac9a9617 100644 --- a/packages/i18n/src/locales/id/translations.json +++ b/packages/i18n/src/locales/id/translations.json @@ -869,7 +869,8 @@ "deleting": "Menghapus", "pending": "Tertunda", "invite": "Undang", - "view": "Lihat" + "view": "Lihat", + "deactivated_user": "Pengguna dinonaktifkan" }, "chart": { diff --git a/packages/i18n/src/locales/it/translations.json b/packages/i18n/src/locales/it/translations.json index 4cfe9c2b5cd..5364443d938 100644 --- a/packages/i18n/src/locales/it/translations.json +++ b/packages/i18n/src/locales/it/translations.json @@ -868,7 +868,8 @@ "deleting": "Eliminazione in corso", "pending": "In sospeso", "invite": "Invita", - "view": "Visualizza" + "view": "Visualizza", + "deactivated_user": "Utente disattivato" }, "chart": { diff --git a/packages/i18n/src/locales/ja/translations.json b/packages/i18n/src/locales/ja/translations.json index 44c9488baed..a83fbe2ee62 100644 --- a/packages/i18n/src/locales/ja/translations.json +++ b/packages/i18n/src/locales/ja/translations.json @@ -870,7 +870,8 @@ "deleting": "デリーティング", "pending": "保留中", "invite": "招待", - "view": "ビュー" + "view": "ビュー", + "deactivated_user": "無効化されたユーザー" }, "chart": { diff --git a/packages/i18n/src/locales/ko/translations.json b/packages/i18n/src/locales/ko/translations.json index f0f74991f6d..af58d9b2af0 100644 --- a/packages/i18n/src/locales/ko/translations.json +++ b/packages/i18n/src/locales/ko/translations.json @@ -871,7 +871,8 @@ "deleting": "삭제 중", "pending": "보류 중", "invite": "초대", - "view": "보기" + "view": "보기", + "deactivated_user": "비활성화된 사용자" }, "chart": { diff --git a/packages/i18n/src/locales/pl/translations.json b/packages/i18n/src/locales/pl/translations.json index 048df2a2ffd..c1d84c82f41 100644 --- a/packages/i18n/src/locales/pl/translations.json +++ b/packages/i18n/src/locales/pl/translations.json @@ -865,7 +865,8 @@ "deleting": "Usuwanie", "pending": "Oczekujące", "invite": "Zaproś", - "view": "Widok" + "view": "Widok", + "deactivated_user": "Dezaktywowany użytkownik" }, "chart": { "x_axis": "Oś X", diff --git a/packages/i18n/src/locales/pt-BR/translations.json b/packages/i18n/src/locales/pt-BR/translations.json index 97b08022129..d3f2eda0e1c 100644 --- a/packages/i18n/src/locales/pt-BR/translations.json +++ b/packages/i18n/src/locales/pt-BR/translations.json @@ -871,7 +871,8 @@ "deleting": "Excluindo", "pending": "Pendente", "invite": "Convidar", - "view": "Visualizar" + "view": "Visualizar", + "deactivated_user": "Usuário desativado" }, "chart": { diff --git a/packages/i18n/src/locales/ro/translations.json b/packages/i18n/src/locales/ro/translations.json index 71d5183e7b2..dbc9458240f 100644 --- a/packages/i18n/src/locales/ro/translations.json +++ b/packages/i18n/src/locales/ro/translations.json @@ -869,7 +869,8 @@ "deleting": "Se șterge", "pending": "În așteptare", "invite": "Invită", - "view": "Vizualizează" + "view": "Vizualizează", + "deactivated_user": "Utilizator dezactivat" }, "chart": { diff --git a/packages/i18n/src/locales/ru/translations.json b/packages/i18n/src/locales/ru/translations.json index 0b43356f998..1ae5acd4320 100644 --- a/packages/i18n/src/locales/ru/translations.json +++ b/packages/i18n/src/locales/ru/translations.json @@ -869,7 +869,8 @@ "deleting": "Удаление", "pending": "Ожидание", "invite": "Пригласить", - "view": "Просмотр" + "view": "Просмотр", + "deactivated_user": "Деактивированный пользователь" }, "chart": { diff --git a/packages/i18n/src/locales/sk/translations.json b/packages/i18n/src/locales/sk/translations.json index 63acc072358..85171ab199c 100644 --- a/packages/i18n/src/locales/sk/translations.json +++ b/packages/i18n/src/locales/sk/translations.json @@ -869,7 +869,8 @@ "deleting": "Mazanie", "pending": "Čakajúce", "invite": "Pozvať", - "view": "Zobraziť" + "view": "Zobraziť", + "deactivated_user": "Deaktivovaný používateľ" }, "chart": { diff --git a/packages/i18n/src/locales/ua/translations.json b/packages/i18n/src/locales/ua/translations.json index 69236d9f1df..df825700653 100644 --- a/packages/i18n/src/locales/ua/translations.json +++ b/packages/i18n/src/locales/ua/translations.json @@ -864,7 +864,8 @@ "deleting": "Видалення", "pending": "Очікує", "invite": "Запросити", - "view": "Подання" + "view": "Подання", + "deactivated_user": "Деактивований користувач" }, "chart": { "x_axis": "Вісь X", diff --git a/packages/i18n/src/locales/vi-VN/translations.json b/packages/i18n/src/locales/vi-VN/translations.json index 7c2c0a40b40..a7ffe3e331f 100644 --- a/packages/i18n/src/locales/vi-VN/translations.json +++ b/packages/i18n/src/locales/vi-VN/translations.json @@ -863,7 +863,8 @@ "deleting": "Đang xóa", "pending": "Đang chờ xử lý", "invite": "Mời", - "view": "Xem" + "view": "Xem", + "deactivated_user": "Người dùng bị vô hiệu hóa" }, "chart": { "x_axis": "Trục X", diff --git a/packages/i18n/src/locales/zh-CN/translations.json b/packages/i18n/src/locales/zh-CN/translations.json index a382c8c2e20..ab584a3b6ed 100644 --- a/packages/i18n/src/locales/zh-CN/translations.json +++ b/packages/i18n/src/locales/zh-CN/translations.json @@ -870,7 +870,8 @@ "deleting": "删除中", "pending": "待处理", "invite": "邀请", - "view": "查看" + "view": "查看", + "deactivated_user": "已停用用户" }, "chart": { diff --git a/packages/i18n/src/locales/zh-TW/translations.json b/packages/i18n/src/locales/zh-TW/translations.json index e86642f3e00..df816c9f0e3 100644 --- a/packages/i18n/src/locales/zh-TW/translations.json +++ b/packages/i18n/src/locales/zh-TW/translations.json @@ -871,7 +871,8 @@ "deleting": "刪除中", "pending": "待處理", "invite": "邀請", - "view": "檢視" + "view": "檢視", + "deactivated_user": "已停用用戶" }, "chart": { diff --git a/web/core/components/core/description-versions/dropdown-item.tsx b/web/core/components/core/description-versions/dropdown-item.tsx index 69321988305..11682c20648 100644 --- a/web/core/components/core/description-versions/dropdown-item.tsx +++ b/web/core/components/core/description-versions/dropdown-item.tsx @@ -1,5 +1,6 @@ import { observer } from "mobx-react"; // plane imports +import { useTranslation } from "@plane/i18n"; import { TDescriptionVersion } from "@plane/types"; import { Avatar, CustomMenu } from "@plane/ui"; import { calculateTimeAgo, getFileURL } from "@plane/utils"; @@ -17,11 +18,17 @@ export const DescriptionVersionsDropdownItem: React.FC = observer((props) const { getUserDetails } = useMember(); // derived values const versionCreator = version.owned_by ? getUserDetails(version.owned_by) : null; + // translation + const { t } = useTranslation(); return ( onClick(version.id)}> - +

{versionCreator?.display_name}