fix(web): translate the skipped-active toast and show one toast
selectedSessionsSkippedActive is required in Translations, but only en.ts had it. Every locale typed `: Translations` failed tsc -b with TS2741, which breaks scripts/build/web.mjs. Add a translation next to selectedSessionsDeleted in each of them (ar.ts goes through defineLocale and falls back to English). useToast holds one toast and only supports success|error, so the skipped toast replaced the success toast in the same tick and the deleted count was lost. Show a single toast instead: success with the count when nothing was skipped, otherwise one error toast that carries both counts. Also drop the duplicated comment.
This commit is contained in:
@@ -162,6 +162,7 @@ export const af: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"Dit verwyder {count} gekose sessies en al hul boodskappe permanent. Dit kan nie ongedaan gemaak word nie.",
|
"Dit verwyder {count} gekose sessies en al hul boodskappe permanent. Dit kan nie ongedaan gemaak word nie.",
|
||||||
selectedSessionsDeleted: "{count} sessies geskrap",
|
selectedSessionsDeleted: "{count} sessies geskrap",
|
||||||
|
selectedSessionsSkippedActive: "{deleted} geskrap; {count} behou omdat 'n beurt nog loop",
|
||||||
failedToDeleteSelected: "Kon nie gekose sessies skrap nie",
|
failedToDeleteSelected: "Kon nie gekose sessies skrap nie",
|
||||||
resumeInChat: "Hervat in Klets",
|
resumeInChat: "Hervat in Klets",
|
||||||
newChat: "Nuwe klets",
|
newChat: "Nuwe klets",
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ export const de: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"Dies entfernt {count} ausgewählte Sitzungen und alle zugehörigen Nachrichten dauerhaft. Dies kann nicht rückgängig gemacht werden.",
|
"Dies entfernt {count} ausgewählte Sitzungen und alle zugehörigen Nachrichten dauerhaft. Dies kann nicht rückgängig gemacht werden.",
|
||||||
selectedSessionsDeleted: "{count} Sitzungen gelöscht",
|
selectedSessionsDeleted: "{count} Sitzungen gelöscht",
|
||||||
|
selectedSessionsSkippedActive: "{deleted} gelöscht; {count} behalten, weil noch ein Turn läuft",
|
||||||
failedToDeleteSelected: "Ausgewählte Sitzungen konnten nicht gelöscht werden",
|
failedToDeleteSelected: "Ausgewählte Sitzungen konnten nicht gelöscht werden",
|
||||||
resumeInChat: "Im Chat fortsetzen",
|
resumeInChat: "Im Chat fortsetzen",
|
||||||
newChat: "Neuer Chat",
|
newChat: "Neuer Chat",
|
||||||
|
|||||||
@@ -194,7 +194,7 @@ export const en: Translations = {
|
|||||||
"This permanently removes {count} selected sessions and all their messages. This cannot be undone.",
|
"This permanently removes {count} selected sessions and all their messages. This cannot be undone.",
|
||||||
selectedSessionsDeleted: "{count} sessions deleted",
|
selectedSessionsDeleted: "{count} sessions deleted",
|
||||||
selectedSessionsSkippedActive:
|
selectedSessionsSkippedActive:
|
||||||
"{count} sessions kept: a live turn is still running in them",
|
"{deleted} deleted; {count} kept because a turn is running",
|
||||||
failedToDeleteSelected: "Failed to delete selected sessions",
|
failedToDeleteSelected: "Failed to delete selected sessions",
|
||||||
resumeInChat: "Resume in Chat",
|
resumeInChat: "Resume in Chat",
|
||||||
newChat: "New chat",
|
newChat: "New chat",
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ export const es: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"Esto elimina permanentemente {count} sesiones seleccionadas y todos sus mensajes. No se puede deshacer.",
|
"Esto elimina permanentemente {count} sesiones seleccionadas y todos sus mensajes. No se puede deshacer.",
|
||||||
selectedSessionsDeleted: "{count} sesiones eliminadas",
|
selectedSessionsDeleted: "{count} sesiones eliminadas",
|
||||||
|
selectedSessionsSkippedActive: "{deleted} eliminadas; {count} conservadas porque hay un turno en curso",
|
||||||
failedToDeleteSelected: "No se pudieron eliminar las sesiones seleccionadas",
|
failedToDeleteSelected: "No se pudieron eliminar las sesiones seleccionadas",
|
||||||
resumeInChat: "Reanudar en el chat",
|
resumeInChat: "Reanudar en el chat",
|
||||||
newChat: "Nuevo chat",
|
newChat: "Nuevo chat",
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ export const fr: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"Cela supprime définitivement {count} sessions sélectionnées et tous leurs messages. Cette action est irréversible.",
|
"Cela supprime définitivement {count} sessions sélectionnées et tous leurs messages. Cette action est irréversible.",
|
||||||
selectedSessionsDeleted: "{count} sessions supprimées",
|
selectedSessionsDeleted: "{count} sessions supprimées",
|
||||||
|
selectedSessionsSkippedActive: "{deleted} supprimées ; {count} conservées car un tour est en cours",
|
||||||
failedToDeleteSelected: "Échec de la suppression des sessions sélectionnées",
|
failedToDeleteSelected: "Échec de la suppression des sessions sélectionnées",
|
||||||
resumeInChat: "Reprendre dans le chat",
|
resumeInChat: "Reprendre dans le chat",
|
||||||
newChat: "Nouveau chat",
|
newChat: "Nouveau chat",
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ export const ga: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"Bainfear {count} seisiún roghnaithe agus a dteachtaireachtaí go léir go buan. Ní féidir é seo a chur ar ais.",
|
"Bainfear {count} seisiún roghnaithe agus a dteachtaireachtaí go léir go buan. Ní féidir é seo a chur ar ais.",
|
||||||
selectedSessionsDeleted: "Scriosadh {count} seisiún",
|
selectedSessionsDeleted: "Scriosadh {count} seisiún",
|
||||||
|
selectedSessionsSkippedActive: "Scriosadh {deleted}; coinníodh {count} mar go bhfuil seal ar siúl",
|
||||||
failedToDeleteSelected: "Theip ar scriosadh na seisiún roghnaithe",
|
failedToDeleteSelected: "Theip ar scriosadh na seisiún roghnaithe",
|
||||||
resumeInChat: "Lean ar aghaidh sa chomhrá",
|
resumeInChat: "Lean ar aghaidh sa chomhrá",
|
||||||
newChat: "Comhrá nua",
|
newChat: "Comhrá nua",
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ export const hu: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"Ez véglegesen eltávolítja a kijelölt {count} munkamenetet és minden üzenetüket. A művelet nem vonható vissza.",
|
"Ez véglegesen eltávolítja a kijelölt {count} munkamenetet és minden üzenetüket. A művelet nem vonható vissza.",
|
||||||
selectedSessionsDeleted: "{count} munkamenet törölve",
|
selectedSessionsDeleted: "{count} munkamenet törölve",
|
||||||
|
selectedSessionsSkippedActive: "{deleted} törölve; {count} megtartva, mert egy kör még fut",
|
||||||
failedToDeleteSelected: "Nem sikerült törölni a kijelölt munkameneteket",
|
failedToDeleteSelected: "Nem sikerült törölni a kijelölt munkameneteket",
|
||||||
resumeInChat: "Folytatás a csevegésben",
|
resumeInChat: "Folytatás a csevegésben",
|
||||||
newChat: "Új csevegés",
|
newChat: "Új csevegés",
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ export const it: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"Verranno eliminate definitivamente {count} sessioni selezionate e tutti i loro messaggi. L'operazione non può essere annullata.",
|
"Verranno eliminate definitivamente {count} sessioni selezionate e tutti i loro messaggi. L'operazione non può essere annullata.",
|
||||||
selectedSessionsDeleted: "{count} sessioni eliminate",
|
selectedSessionsDeleted: "{count} sessioni eliminate",
|
||||||
|
selectedSessionsSkippedActive: "{deleted} eliminate; {count} mantenute perché un turno è in corso",
|
||||||
failedToDeleteSelected: "Impossibile eliminare le sessioni selezionate",
|
failedToDeleteSelected: "Impossibile eliminare le sessioni selezionate",
|
||||||
resumeInChat: "Riprendi nella chat",
|
resumeInChat: "Riprendi nella chat",
|
||||||
newChat: "Nuova chat",
|
newChat: "Nuova chat",
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ export const ja: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"選択した{count}件のセッションとそのすべてのメッセージが完全に削除されます。この操作は取り消せません。",
|
"選択した{count}件のセッションとそのすべてのメッセージが完全に削除されます。この操作は取り消せません。",
|
||||||
selectedSessionsDeleted: "{count}件のセッションを削除しました",
|
selectedSessionsDeleted: "{count}件のセッションを削除しました",
|
||||||
|
selectedSessionsSkippedActive: "{deleted}件を削除、実行中のターンがあるため{count}件を保持しました",
|
||||||
failedToDeleteSelected: "選択したセッションの削除に失敗しました",
|
failedToDeleteSelected: "選択したセッションの削除に失敗しました",
|
||||||
resumeInChat: "チャットで再開",
|
resumeInChat: "チャットで再開",
|
||||||
newChat: "新しいチャット",
|
newChat: "新しいチャット",
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ export const ko: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"선택한 {count}개 세션과 모든 메시지가 영구적으로 제거됩니다. 이 작업은 취소할 수 없습니다.",
|
"선택한 {count}개 세션과 모든 메시지가 영구적으로 제거됩니다. 이 작업은 취소할 수 없습니다.",
|
||||||
selectedSessionsDeleted: "{count}개 세션이 삭제되었습니다",
|
selectedSessionsDeleted: "{count}개 세션이 삭제되었습니다",
|
||||||
|
selectedSessionsSkippedActive: "{deleted}개 삭제됨, 진행 중인 턴이 있어 {count}개 유지됨",
|
||||||
failedToDeleteSelected: "선택한 세션 삭제에 실패했습니다",
|
failedToDeleteSelected: "선택한 세션 삭제에 실패했습니다",
|
||||||
resumeInChat: "채팅에서 다시 시작",
|
resumeInChat: "채팅에서 다시 시작",
|
||||||
newChat: "새 채팅",
|
newChat: "새 채팅",
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ export const pt: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"Isto remove permanentemente {count} sessões selecionadas e todas as suas mensagens. Não pode ser desfeito.",
|
"Isto remove permanentemente {count} sessões selecionadas e todas as suas mensagens. Não pode ser desfeito.",
|
||||||
selectedSessionsDeleted: "{count} sessões eliminadas",
|
selectedSessionsDeleted: "{count} sessões eliminadas",
|
||||||
|
selectedSessionsSkippedActive: "{deleted} eliminadas; {count} mantidas porque há um turno em curso",
|
||||||
failedToDeleteSelected: "Falha ao eliminar as sessões selecionadas",
|
failedToDeleteSelected: "Falha ao eliminar as sessões selecionadas",
|
||||||
resumeInChat: "Retomar no Chat",
|
resumeInChat: "Retomar no Chat",
|
||||||
newChat: "Novo chat",
|
newChat: "Novo chat",
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ export const ru: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"Это безвозвратно удалит {count} выбранных сессий и все их сообщения. Это действие нельзя отменить.",
|
"Это безвозвратно удалит {count} выбранных сессий и все их сообщения. Это действие нельзя отменить.",
|
||||||
selectedSessionsDeleted: "Удалено сессий: {count}",
|
selectedSessionsDeleted: "Удалено сессий: {count}",
|
||||||
|
selectedSessionsSkippedActive: "Удалено: {deleted}; сохранено: {count}, так как ход ещё выполняется",
|
||||||
failedToDeleteSelected: "Не удалось удалить выбранные сессии",
|
failedToDeleteSelected: "Не удалось удалить выбранные сессии",
|
||||||
resumeInChat: "Продолжить в чате",
|
resumeInChat: "Продолжить в чате",
|
||||||
newChat: "Новый чат",
|
newChat: "Новый чат",
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ export const tr: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"Bu, seçilen {count} oturumu ve tüm mesajlarını kalıcı olarak siler. Bu işlem geri alınamaz.",
|
"Bu, seçilen {count} oturumu ve tüm mesajlarını kalıcı olarak siler. Bu işlem geri alınamaz.",
|
||||||
selectedSessionsDeleted: "{count} oturum silindi",
|
selectedSessionsDeleted: "{count} oturum silindi",
|
||||||
|
selectedSessionsSkippedActive: "{deleted} silindi; bir tur çalıştığı için {count} tutuldu",
|
||||||
failedToDeleteSelected: "Seçilen oturumlar silinemedi",
|
failedToDeleteSelected: "Seçilen oturumlar silinemedi",
|
||||||
resumeInChat: "Sohbette Devam Et",
|
resumeInChat: "Sohbette Devam Et",
|
||||||
newChat: "Yeni sohbet",
|
newChat: "Yeni sohbet",
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ export const uk: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"Це назавжди видалить {count} вибраних сесій і всі їхні повідомлення. Цю дію неможливо скасувати.",
|
"Це назавжди видалить {count} вибраних сесій і всі їхні повідомлення. Цю дію неможливо скасувати.",
|
||||||
selectedSessionsDeleted: "Видалено сесій: {count}",
|
selectedSessionsDeleted: "Видалено сесій: {count}",
|
||||||
|
selectedSessionsSkippedActive: "Видалено: {deleted}; залишено: {count}, бо хід ще виконується",
|
||||||
failedToDeleteSelected: "Не вдалося видалити вибрані сесії",
|
failedToDeleteSelected: "Не вдалося видалити вибрані сесії",
|
||||||
resumeInChat: "Продовжити в чаті",
|
resumeInChat: "Продовжити в чаті",
|
||||||
newChat: "Новий чат",
|
newChat: "Новий чат",
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ export const zhHant: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"此操作將永久刪除所選的 {count} 個工作階段及其所有訊息。無法復原。",
|
"此操作將永久刪除所選的 {count} 個工作階段及其所有訊息。無法復原。",
|
||||||
selectedSessionsDeleted: "已刪除 {count} 個工作階段",
|
selectedSessionsDeleted: "已刪除 {count} 個工作階段",
|
||||||
|
selectedSessionsSkippedActive: "已刪除 {deleted} 個;{count} 個因仍有回合執行中而保留",
|
||||||
failedToDeleteSelected: "刪除所選工作階段失敗",
|
failedToDeleteSelected: "刪除所選工作階段失敗",
|
||||||
resumeInChat: "在對話中繼續",
|
resumeInChat: "在對話中繼續",
|
||||||
newChat: "新對話",
|
newChat: "新對話",
|
||||||
|
|||||||
@@ -160,6 +160,7 @@ export const zh: Translations = {
|
|||||||
deleteSelectedConfirmMessage:
|
deleteSelectedConfirmMessage:
|
||||||
"此操作将永久删除所选的 {count} 个会话及其所有消息。无法撤销。",
|
"此操作将永久删除所选的 {count} 个会话及其所有消息。无法撤销。",
|
||||||
selectedSessionsDeleted: "已删除 {count} 个会话",
|
selectedSessionsDeleted: "已删除 {count} 个会话",
|
||||||
|
selectedSessionsSkippedActive: "已删除 {deleted} 个;{count} 个因仍有回合运行中而保留",
|
||||||
failedToDeleteSelected: "删除所选会话失败",
|
failedToDeleteSelected: "删除所选会话失败",
|
||||||
resumeInChat: "在对话中继续",
|
resumeInChat: "在对话中继续",
|
||||||
newChat: "新对话",
|
newChat: "新对话",
|
||||||
|
|||||||
@@ -1396,22 +1396,22 @@ export default function SessionsPage() {
|
|||||||
ids,
|
ids,
|
||||||
owners.size === 1 ? [...owners][0] : undefined,
|
owners.size === 1 ? [...owners][0] : undefined,
|
||||||
);
|
);
|
||||||
showToast(
|
const skippedCount = resp.skipped_active?.length ?? 0;
|
||||||
t.sessions.selectedSessionsDeleted.replace(
|
if (skippedCount) {
|
||||||
"{count}",
|
|
||||||
String(resp.deleted),
|
|
||||||
),
|
|
||||||
"success",
|
|
||||||
);
|
|
||||||
if (resp.skipped_active?.length) {
|
|
||||||
// Rows a live turn owns were refused server-side; say so instead of implying all went.
|
|
||||||
showToast(
|
showToast(
|
||||||
t.sessions.selectedSessionsSkippedActive.replace(
|
t.sessions.selectedSessionsSkippedActive
|
||||||
"{count}",
|
.replace("{deleted}", String(resp.deleted))
|
||||||
String(resp.skipped_active.length),
|
.replace("{count}", String(skippedCount)),
|
||||||
),
|
|
||||||
"error",
|
"error",
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
showToast(
|
||||||
|
t.sessions.selectedSessionsDeleted.replace(
|
||||||
|
"{count}",
|
||||||
|
String(resp.deleted),
|
||||||
|
),
|
||||||
|
"success",
|
||||||
|
);
|
||||||
}
|
}
|
||||||
setDeleteSelectedOpen(false);
|
setDeleteSelectedOpen(false);
|
||||||
// Drop deleted rows out of the visible list immediately rather
|
// Drop deleted rows out of the visible list immediately rather
|
||||||
|
|||||||
Reference in New Issue
Block a user