[WEB-5624] chore: added webhook translations #8312

This commit is contained in:
b-saikrishnakanth
2025-12-11 17:02:20 +05:30
committed by GitHub
parent 8e518966c2
commit 906c1b51bb
20 changed files with 159 additions and 58 deletions

View File

@@ -2,24 +2,24 @@ import { useState } from "react";
import { intersection } from "lodash-es"; import { intersection } from "lodash-es";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { Controller, useForm } from "react-hook-form"; import { Controller, useForm } from "react-hook-form";
import { Info } from "lucide-react"; // import { Info } from "lucide-react";
import { import {
EUserPermissions, EUserPermissions,
EUserPermissionsLevel, EUserPermissionsLevel,
EXPORTERS_LIST, EXPORTERS_LIST,
ISSUE_DISPLAY_FILTERS_BY_PAGE, // ISSUE_DISPLAY_FILTERS_BY_PAGE,
WORKSPACE_SETTINGS_TRACKER_EVENTS, WORKSPACE_SETTINGS_TRACKER_EVENTS,
WORKSPACE_SETTINGS_TRACKER_ELEMENTS, WORKSPACE_SETTINGS_TRACKER_ELEMENTS,
} from "@plane/constants"; } from "@plane/constants";
import { useTranslation } from "@plane/i18n"; import { useTranslation } from "@plane/i18n";
import { Button } from "@plane/propel/button"; import { Button } from "@plane/propel/button";
import { TOAST_TYPE, setToast } from "@plane/propel/toast"; import { TOAST_TYPE, setToast } from "@plane/propel/toast";
import { Tooltip } from "@plane/propel/tooltip"; // import { Tooltip } from "@plane/propel/tooltip";
import { EIssuesStoreType } from "@plane/types"; // import { EIssuesStoreType } from "@plane/types";
import type { TWorkItemFilterExpression } from "@plane/types"; import type { TWorkItemFilterExpression } from "@plane/types";
import { CustomSearchSelect, CustomSelect } from "@plane/ui"; import { CustomSearchSelect, CustomSelect } from "@plane/ui";
import { WorkspaceLevelWorkItemFiltersHOC } from "@/components/work-item-filters/filters-hoc/workspace-level"; // import { WorkspaceLevelWorkItemFiltersHOC } from "@/components/work-item-filters/filters-hoc/workspace-level";
import { WorkItemFiltersRow } from "@/components/work-item-filters/filters-row"; // import { WorkItemFiltersRow } from "@/components/work-item-filters/filters-row";
import { captureError, captureSuccess } from "@/helpers/event-tracker.helper"; import { captureError, captureSuccess } from "@/helpers/event-tracker.helper";
import { useProject } from "@/hooks/store/use-project"; import { useProject } from "@/hooks/store/use-project";
import { useUser, useUserPermissions } from "@/hooks/store/user"; import { useUser, useUserPermissions } from "@/hooks/store/user";
@@ -37,15 +37,15 @@ type FormData = {
filters: TWorkItemFilterExpression; filters: TWorkItemFilterExpression;
}; };
const initialWorkItemFilters = { // const initialWorkItemFilters = {
richFilters: {}, // richFilters: {},
displayFilters: {}, // displayFilters: {},
displayProperties: {}, // displayProperties: {},
kanbanFilters: { // kanbanFilters: {
group_by: [], // group_by: [],
sub_group_by: [], // sub_group_by: [],
}, // },
}; // };
const projectExportService = new ProjectExportService(); const projectExportService = new ProjectExportService();
@@ -101,52 +101,57 @@ export const ExportForm = observer(function ExportForm(props: Props) {
multiple: formData.project.length > 1, multiple: formData.project.length > 1,
rich_filters: formData.filters, rich_filters: formData.filters,
}; };
await projectExportService try {
.csvExport(workspaceSlug, payload) await projectExportService.csvExport(workspaceSlug, payload);
.then(() => { mutateServices();
mutateServices(); setExportLoading(false);
setExportLoading(false); captureSuccess({
captureSuccess({ eventName: WORKSPACE_SETTINGS_TRACKER_EVENTS.csv_exported,
eventName: WORKSPACE_SETTINGS_TRACKER_EVENTS.csv_exported, payload: {
payload: { provider: formData.provider.provider,
provider: formData.provider.provider, },
},
});
setToast({
type: TOAST_TYPE.SUCCESS,
title: t("workspace_settings.settings.exports.modal.toasts.success.title"),
message: t("workspace_settings.settings.exports.modal.toasts.success.message", {
entity:
formData.provider.provider === "csv"
? "CSV"
: formData.provider.provider === "xlsx"
? "Excel"
: formData.provider.provider === "json"
? "JSON"
: "",
}),
});
})
.catch((error) => {
setExportLoading(false);
captureError({
eventName: WORKSPACE_SETTINGS_TRACKER_EVENTS.csv_exported,
payload: {
provider: formData.provider.provider,
},
error: error as Error,
});
setToast({
type: TOAST_TYPE.ERROR,
title: t("error"),
message: t("workspace_settings.settings.exports.modal.toasts.error.message"),
});
}); });
setToast({
type: TOAST_TYPE.SUCCESS,
title: t("workspace_settings.settings.exports.modal.toasts.success.title"),
message: t("workspace_settings.settings.exports.modal.toasts.success.message", {
entity:
formData.provider.provider === "csv"
? "CSV"
: formData.provider.provider === "xlsx"
? "Excel"
: formData.provider.provider === "json"
? "JSON"
: "",
}),
});
} catch (error) {
setExportLoading(false);
captureError({
eventName: WORKSPACE_SETTINGS_TRACKER_EVENTS.csv_exported,
payload: {
provider: formData.provider.provider,
},
error: error as Error,
});
setToast({
type: TOAST_TYPE.ERROR,
title: t("error"),
message: t("workspace_settings.settings.exports.modal.toasts.error.message"),
});
}
} else {
setExportLoading(false);
} }
} }
return ( return (
<form onSubmit={handleSubmit(ExportCSVToMail)} className="flex flex-col gap-4 mt-4"> <form
onSubmit={(e) => {
void handleSubmit(ExportCSVToMail)(e);
}}
className="flex flex-col gap-4 mt-4"
>
<div className="flex gap-4"> <div className="flex gap-4">
{/* Project Selector */} {/* Project Selector */}
<div className="w-1/2"> <div className="w-1/2">
@@ -210,7 +215,7 @@ export const ExportForm = observer(function ExportForm(props: Props) {
</div> </div>
</div> </div>
{/* Rich Filters */} {/* Rich Filters */}
<div className="w-full"> {/* <div className="w-full">
<div className="flex items-center gap-2 mb-2"> <div className="flex items-center gap-2 mb-2">
<div className="text-sm font-medium text-custom-text-200 leading-tight">{t("common.filters")}</div> <div className="text-sm font-medium text-custom-text-200 leading-tight">{t("common.filters")}</div>
<Tooltip <Tooltip
@@ -251,7 +256,7 @@ export const ExportForm = observer(function ExportForm(props: Props) {
</WorkspaceLevelWorkItemFiltersHOC> </WorkspaceLevelWorkItemFiltersHOC>
)} )}
/> />
</div> </div> */}
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<Button <Button
variant="primary" variant="primary"

View File

@@ -188,5 +188,10 @@ export default {
"Generujte bezpečné API tokeny pro připojení vašeho pracovního prostoru s externími systémy a aplikacemi.", "Generujte bezpečné API tokeny pro připojení vašeho pracovního prostoru s externími systémy a aplikacemi.",
cta_primary: "Přidat API token", cta_primary: "Přidat API token",
}, },
webhooks: {
title: "Zatím nebyl přidán žádný Webhook",
description: "Automatizujte oznámení externím službám při výskytu událostí projektu.",
cta_primary: "Přidat webhook",
},
}, },
} as const; } as const;

View File

@@ -198,5 +198,10 @@ export default {
"Generieren Sie sichere API-Tokens, um Ihren Workspace mit externen Systemen und Anwendungen zu verbinden.", "Generieren Sie sichere API-Tokens, um Ihren Workspace mit externen Systemen und Anwendungen zu verbinden.",
cta_primary: "API-Token hinzufügen", cta_primary: "API-Token hinzufügen",
}, },
webhooks: {
title: "Noch kein Webhook hinzugefügt",
description: "Automatisieren Sie Benachrichtigungen an externe Dienste, wenn Projektereignisse auftreten.",
cta_primary: "Webhook hinzufügen",
},
}, },
} as const; } as const;

View File

@@ -183,5 +183,10 @@ export default {
description: "Generate secure API tokens to connect your workspace with external systems and applications.", description: "Generate secure API tokens to connect your workspace with external systems and applications.",
cta_primary: "Add API token", cta_primary: "Add API token",
}, },
webhooks: {
title: "No Webhook added yet",
description: "Automate notifications to external services when project events occur.",
cta_primary: "Add webhook",
},
}, },
} as const; } as const;

View File

@@ -192,5 +192,10 @@ export default {
"Genera tokens API seguros para conectar tu espacio de trabajo con sistemas y aplicaciones externos.", "Genera tokens API seguros para conectar tu espacio de trabajo con sistemas y aplicaciones externos.",
cta_primary: "Agregar token API", cta_primary: "Agregar token API",
}, },
webhooks: {
title: "Aún no se ha agregado ningún Webhook",
description: "Automatiza las notificaciones a servicios externos cuando ocurran eventos del proyecto.",
cta_primary: "Agregar webhook",
},
}, },
} as const; } as const;

View File

@@ -195,5 +195,11 @@ export default {
"Générez des jetons API sécurisés pour connecter votre espace de travail avec des systèmes et applications externes.", "Générez des jetons API sécurisés pour connecter votre espace de travail avec des systèmes et applications externes.",
cta_primary: "Ajouter un jeton API", cta_primary: "Ajouter un jeton API",
}, },
webhooks: {
title: "Aucun Webhook ajouté pour le moment",
description:
"Automatisez les notifications vers des services externes lorsque des événements de projet se produisent.",
cta_primary: "Ajouter un webhook",
},
}, },
} as const; } as const;

View File

@@ -192,5 +192,10 @@ export default {
"Hasilkan token API yang aman untuk menghubungkan ruang kerja Anda dengan sistem dan aplikasi eksternal.", "Hasilkan token API yang aman untuk menghubungkan ruang kerja Anda dengan sistem dan aplikasi eksternal.",
cta_primary: "Tambahkan token API", cta_primary: "Tambahkan token API",
}, },
webhooks: {
title: "Belum ada Webhook yang ditambahkan",
description: "Otomatisasi notifikasi ke layanan eksternal ketika peristiwa proyek terjadi.",
cta_primary: "Tambahkan webhook",
},
}, },
} as const; } as const;

View File

@@ -192,5 +192,10 @@ export default {
description: "Genera token API sicuri per connettere il tuo workspace con sistemi e applicazioni esterne.", description: "Genera token API sicuri per connettere il tuo workspace con sistemi e applicazioni esterne.",
cta_primary: "Aggiungi token API", cta_primary: "Aggiungi token API",
}, },
webhooks: {
title: "Nessun Webhook aggiunto ancora",
description: "Automatizza le notifiche a servizi esterni quando si verificano eventi del progetto.",
cta_primary: "Aggiungi webhook",
},
}, },
} as const; } as const;

View File

@@ -182,5 +182,10 @@ export default {
description: "ワークスペースを外部システムおよびアプリケーションと接続するための安全なAPIトークンを生成します。", description: "ワークスペースを外部システムおよびアプリケーションと接続するための安全なAPIトークンを生成します。",
cta_primary: "APIトークンを追加", cta_primary: "APIトークンを追加",
}, },
webhooks: {
title: "まだWebhookが追加されていません",
description: "プロジェクトイベントが発生したときに外部サービスへの通知を自動化します。",
cta_primary: "Webhookを追加",
},
}, },
} as const; } as const;

View File

@@ -181,5 +181,10 @@ export default {
description: "작업 공간을 외부 시스템 및 애플리케이션과 연결하기 위한 보안 API 토큰을 생성하세요.", description: "작업 공간을 외부 시스템 및 애플리케이션과 연결하기 위한 보안 API 토큰을 생성하세요.",
cta_primary: "API 토큰 추가", cta_primary: "API 토큰 추가",
}, },
webhooks: {
title: "아직 웹훅이 추가되지 않았습니다",
description: "프로젝트 이벤트가 발생할 때 외부 서비스에 대한 알림을 자동화하세요.",
cta_primary: "웹훅 추가",
},
}, },
} as const; } as const;

View File

@@ -193,5 +193,10 @@ export default {
"Generuj bezpieczne tokeny API, aby połączyć swój obszar roboczy z zewnętrznymi systemami i aplikacjami.", "Generuj bezpieczne tokeny API, aby połączyć swój obszar roboczy z zewnętrznymi systemami i aplikacjami.",
cta_primary: "Dodaj token API", cta_primary: "Dodaj token API",
}, },
webhooks: {
title: "Nie dodano jeszcze webhooka",
description: "Automatyzuj powiadomienia do usług zewnętrznych, gdy wystąpią zdarzenia projektowe.",
cta_primary: "Dodaj webhook",
},
}, },
} as const; } as const;

View File

@@ -193,5 +193,10 @@ export default {
"Gere tokens de API seguros para conectar seu espaço de trabalho com sistemas e aplicativos externos.", "Gere tokens de API seguros para conectar seu espaço de trabalho com sistemas e aplicativos externos.",
cta_primary: "Adicionar token de API", cta_primary: "Adicionar token de API",
}, },
webhooks: {
title: "Ainda não foi adicionado nenhum Webhook",
description: "Automatize notificações para serviços externos quando ocorrerem eventos do projeto.",
cta_primary: "Adicionar webhook",
},
}, },
} as const; } as const;

View File

@@ -191,5 +191,10 @@ export default {
"Generați token-uri API sigure pentru a conecta spațiul dvs. de lucru cu sisteme și aplicații externe.", "Generați token-uri API sigure pentru a conecta spațiul dvs. de lucru cu sisteme și aplicații externe.",
cta_primary: "Adăugați token API", cta_primary: "Adăugați token API",
}, },
webhooks: {
title: "Încă nu s-a adăugat niciun Webhook",
description: "Automatizați notificările către servicii externe când apar evenimente ale proiectului.",
cta_primary: "Adăugați webhook",
},
}, },
} as const; } as const;

View File

@@ -194,5 +194,10 @@ export default {
"Генерируйте безопасные API-токены для подключения вашего рабочего пространства к внешним системам и приложениям.", "Генерируйте безопасные API-токены для подключения вашего рабочего пространства к внешним системам и приложениям.",
cta_primary: "Добавить API-токен", cta_primary: "Добавить API-токен",
}, },
webhooks: {
title: "Вебхуков пока не добавлено",
description: "Автоматизируйте уведомления внешних сервисов при возникновении событий проекта.",
cta_primary: "Добавить вебхук",
},
}, },
} as const; } as const;

View File

@@ -191,5 +191,10 @@ export default {
"Generujte bezpečné API tokeny na pripojenie vášho pracovného priestoru s externými systémami a aplikáciami.", "Generujte bezpečné API tokeny na pripojenie vášho pracovného priestoru s externými systémami a aplikáciami.",
cta_primary: "Pridať API token", cta_primary: "Pridať API token",
}, },
webhooks: {
title: "Zatiaľ nebol pridaný žiadny Webhook",
description: "Automatizujte oznámenia externým službám pri výskyte udalostí projektu.",
cta_primary: "Pridať webhook",
},
}, },
} as const; } as const;

View File

@@ -190,5 +190,10 @@ export default {
"Çalışma alanınızı harici sistemler ve uygulamalarla bağlamak için güvenli API token'ları oluşturun.", "Çalışma alanınızı harici sistemler ve uygulamalarla bağlamak için güvenli API token'ları oluşturun.",
cta_primary: "API token'ı ekle", cta_primary: "API token'ı ekle",
}, },
webhooks: {
title: "Henüz Webhook eklenmedi",
description: "Proje olayları gerçekleştiğinde harici hizmetlere bildirimleri otomatikleştirin.",
cta_primary: "Webhook ekle",
},
}, },
} as const; } as const;

View File

@@ -193,5 +193,10 @@ export default {
"Генеруйте безпечні API токени для підключення вашого робочого простору до зовнішніх систем та додатків.", "Генеруйте безпечні API токени для підключення вашого робочого простору до зовнішніх систем та додатків.",
cta_primary: "Додати API токен", cta_primary: "Додати API токен",
}, },
webhooks: {
title: "Ще не додано Webhook",
description: "Автоматизуйте сповіщення зовнішнім сервісам, коли відбуваються події проєкту.",
cta_primary: "Додати webhook",
},
}, },
} as const; } as const;

View File

@@ -191,5 +191,10 @@ export default {
"Tạo token API an toàn để kết nối không gian làm việc của bạn với các hệ thống và ứng dụng bên ngoài.", "Tạo token API an toàn để kết nối không gian làm việc của bạn với các hệ thống và ứng dụng bên ngoài.",
cta_primary: "Thêm token API", cta_primary: "Thêm token API",
}, },
webhooks: {
title: "Chưa thêm Webhook",
description: "Tự động hóa thông báo đến các dịch vụ bên ngoài khi sự kiện dự án xảy ra.",
cta_primary: "Thêm webhook",
},
}, },
} as const; } as const;

View File

@@ -177,5 +177,10 @@ export default {
description: "生成安全的 API 令牌以将工作空间与外部系统和应用程序连接。", description: "生成安全的 API 令牌以将工作空间与外部系统和应用程序连接。",
cta_primary: "添加 API 令牌", cta_primary: "添加 API 令牌",
}, },
webhooks: {
title: "尚未添加 Webhook",
description: "在项目事件发生时自动向外部服务发送通知。",
cta_primary: "添加 webhook",
},
}, },
} as const; } as const;

View File

@@ -177,5 +177,10 @@ export default {
description: "產生安全的 API 權杖以將工作區與外部系統和應用程式連線。", description: "產生安全的 API 權杖以將工作區與外部系統和應用程式連線。",
cta_primary: "新增 API 權杖", cta_primary: "新增 API 權杖",
}, },
webhooks: {
title: "尚未新增 Webhook",
description: "在專案事件發生時自動向外部服務傳送通知。",
cta_primary: "新增 webhook",
},
}, },
} as const; } as const;