diff --git a/package.json b/package.json index b5942a3909..e8a6508848 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,7 @@ "emoji-mart": "^5.4.0", "react": "^19.0.0 || ^18.0.0 || ^17.0.0 || ^16.14.0", "react-dom": "^19.0.0 || ^18.0.0 || ^17.0.0 || ^16.14.0", - "stream-chat": "^9.12.0" + "stream-chat": "^9.15.0" }, "peerDependenciesMeta": { "@breezystack/lamejs": { @@ -236,7 +236,7 @@ "react": "^19.0.0", "react-dom": "^19.0.0", "semantic-release": "^24.2.3", - "stream-chat": "^9.12.0", + "stream-chat": "^9.15.0", "ts-jest": "^29.2.5", "typescript": "^5.4.5", "typescript-eslint": "^8.17.0" diff --git a/src/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.ts b/src/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.ts index ec417dbcfe..ec73833b45 100644 --- a/src/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.ts +++ b/src/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.ts @@ -7,6 +7,7 @@ import type { Notification } from 'stream-chat'; import type { NotificationTranslatorOptions } from './types'; import type { TranslationTopicOptions, Translator } from '../../index'; import { pollCreationFailedNotificationTranslator } from './pollComposition'; +import { pollVoteCountTrespass } from './pollVoteCountTrespass'; export const defaultNotificationTranslators: Record< string, @@ -15,6 +16,7 @@ export const defaultNotificationTranslators: Record< 'api:attachment:upload:failed': attachmentUploadFailedNotificationTranslator, 'api:poll:create:failed': pollCreationFailedNotificationTranslator, 'validation:attachment:upload:blocked': attachmentUploadBlockedNotificationTranslator, + 'validation:poll:castVote:limit': pollVoteCountTrespass, }; export class NotificationTranslationTopic extends TranslationTopic { diff --git a/src/i18n/TranslationBuilder/notifications/pollVoteCountTrespass.ts b/src/i18n/TranslationBuilder/notifications/pollVoteCountTrespass.ts new file mode 100644 index 0000000000..53023c28a8 --- /dev/null +++ b/src/i18n/TranslationBuilder/notifications/pollVoteCountTrespass.ts @@ -0,0 +1,5 @@ +import type { Translator } from '../TranslationBuilder'; +import type { NotificationTranslatorOptions } from './types'; + +export const pollVoteCountTrespass: Translator = ({ t }) => + t('Reached the vote limit. Remove an existing vote first.'); diff --git a/src/i18n/de.json b/src/i18n/de.json index 73fdf3f5dd..ea3615bce7 100644 --- a/src/i18n/de.json +++ b/src/i18n/de.json @@ -109,6 +109,7 @@ "Poll results": "Umfrageergebnisse", "Question": "Frage", "Quote": "Zitieren", + "Reached the vote limit. Remove an existing vote first.": "Das Abstimmungslimit wurde erreicht. Entfernen Sie zuerst eine bestehende Stimme.", "Recording format is not supported and cannot be reproduced": "Aufnahmeformat wird nicht unterstützt und kann nicht wiedergegeben werden", "Remind Me": "Erinnern", "Remove reminder": "Erinnerung entfernen", diff --git a/src/i18n/en.json b/src/i18n/en.json index 333bec5eef..6976a56e60 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -109,6 +109,7 @@ "Poll results": "Poll results", "Question": "Question", "Quote": "Quote", + "Reached the vote limit. Remove an existing vote first.": "Reached the vote limit. Remove an existing vote first.", "Recording format is not supported and cannot be reproduced": "Recording format is not supported and cannot be reproduced", "Remind Me": "Remind Me", "Remove reminder": "Remove reminder", diff --git a/src/i18n/es.json b/src/i18n/es.json index 0008129597..fb2e718c33 100644 --- a/src/i18n/es.json +++ b/src/i18n/es.json @@ -109,6 +109,7 @@ "Poll results": "Resultados de la encuesta", "Question": "Pregunta", "Quote": "Citar", + "Reached the vote limit. Remove an existing vote first.": "Se ha alcanzado el límite de votos. Elimina un voto existente primero.", "Recording format is not supported and cannot be reproduced": "El formato de grabación no es compatible y no se puede reproducir", "Remind Me": "Recordarme", "Remove reminder": "Eliminar recordatorio", diff --git a/src/i18n/fr.json b/src/i18n/fr.json index 2fd963d630..b05acbe875 100644 --- a/src/i18n/fr.json +++ b/src/i18n/fr.json @@ -109,6 +109,7 @@ "Poll results": "Résultats du sondage", "Question": "Question", "Quote": "Citer", + "Reached the vote limit. Remove an existing vote first.": "La limite de votes a été atteinte. Supprimez d'abord un vote existant.", "Recording format is not supported and cannot be reproduced": "Le format d'enregistrement n'est pas pris en charge et ne peut pas être reproduit", "Remind Me": "Me rappeler", "Remove reminder": "Supprimer le rappel", diff --git a/src/i18n/hi.json b/src/i18n/hi.json index 1a46975068..3fe75df921 100644 --- a/src/i18n/hi.json +++ b/src/i18n/hi.json @@ -110,6 +110,7 @@ "Poll results": "मतदान परिणाम", "Question": "प्रश्न", "Quote": "उद्धरण", + "Reached the vote limit. Remove an existing vote first.": "मतदान सीमा तक पहुंच गया। पहले एक मौजूदा वोट हटाएं।", "Recording format is not supported and cannot be reproduced": "रेकॉर्डिंग फ़ॉर्मेट समर्थित नहीं है और पुनः उत्पन्न नहीं किया जा सकता", "Remind Me": "मुझे याद दिलाएं", "Remove reminder": "रिमाइंडर हटाएं", diff --git a/src/i18n/it.json b/src/i18n/it.json index 05b6e10d11..5fd54c7298 100644 --- a/src/i18n/it.json +++ b/src/i18n/it.json @@ -109,6 +109,7 @@ "Poll results": "Risultati del sondaggio", "Question": "Domanda", "Quote": "Citazione", + "Reached the vote limit. Remove an existing vote first.": "Raggiunto il limite di voti. Rimuovi prima un voto esistente.", "Recording format is not supported and cannot be reproduced": "Il formato di registrazione non è supportato e non può essere riprodotto", "Remind Me": "Ricordami", "Remove reminder": "Rimuovi promemoria", diff --git a/src/i18n/ja.json b/src/i18n/ja.json index 0d8b759b9c..ff4ac067f9 100644 --- a/src/i18n/ja.json +++ b/src/i18n/ja.json @@ -109,6 +109,7 @@ "Poll results": "投票結果", "Question": "質問", "Quote": "引用", + "Reached the vote limit. Remove an existing vote first.": "投票制限に達しました。既存の投票を先に削除してください。", "Recording format is not supported and cannot be reproduced": "録音形式はサポートされておらず、再生できません", "Remind Me": "リマインダー", "Remove reminder": "リマインダーを削除", diff --git a/src/i18n/ko.json b/src/i18n/ko.json index 17ac1c4337..3af3830020 100644 --- a/src/i18n/ko.json +++ b/src/i18n/ko.json @@ -109,6 +109,7 @@ "Poll results": "투표 결과", "Question": "질문", "Quote": "인용", + "Reached the vote limit. Remove an existing vote first.": "투표 한도에 도달했습니다. 기존 투표를 먼저 제거하세요.", "Recording format is not supported and cannot be reproduced": "녹음 형식이 지원되지 않으므로 재생할 수 없습니다", "Remind Me": "알림 설정", "Remove reminder": "알림 제거", diff --git a/src/i18n/nl.json b/src/i18n/nl.json index 5b615ce15e..6ef4a477fe 100644 --- a/src/i18n/nl.json +++ b/src/i18n/nl.json @@ -109,6 +109,7 @@ "Poll results": "Peiling resultaten", "Question": "Vraag", "Quote": "Citeer", + "Reached the vote limit. Remove an existing vote first.": "Stemlimiet bereikt. Verwijder eerst een bestaande stem.", "Recording format is not supported and cannot be reproduced": "Opnameformaat wordt niet ondersteund en kan niet worden gereproduceerd", "Remind Me": "Herinner mij", "Remove reminder": "Herinnering verwijderen", diff --git a/src/i18n/pt.json b/src/i18n/pt.json index ca7db1568b..26df113c36 100644 --- a/src/i18n/pt.json +++ b/src/i18n/pt.json @@ -109,6 +109,7 @@ "Poll results": "Resultados da pesquisa", "Question": "Pergunta", "Quote": "Citar", + "Reached the vote limit. Remove an existing vote first.": "Limite de votos atingido. Remova um voto existente primeiro.", "Recording format is not supported and cannot be reproduced": "Formato de gravação não é suportado e não pode ser reproduzido", "Remind Me": "Lembrar-me", "Remove reminder": "Remover lembrete", diff --git a/src/i18n/ru.json b/src/i18n/ru.json index b09b8eaa60..98a41e503c 100644 --- a/src/i18n/ru.json +++ b/src/i18n/ru.json @@ -109,6 +109,7 @@ "Poll results": "Результаты опроса", "Question": "Вопрос", "Quote": "Цитировать", + "Reached the vote limit. Remove an existing vote first.": "Достигнут лимит голосов. Сначала удалите существующий голос.", "Recording format is not supported and cannot be reproduced": "Формат записи не поддерживается и не может быть воспроизведен", "Remind Me": "Напомнить мне", "Remove reminder": "Удалить напоминание", diff --git a/src/i18n/tr.json b/src/i18n/tr.json index b1e36c4b79..385872f329 100644 --- a/src/i18n/tr.json +++ b/src/i18n/tr.json @@ -109,6 +109,7 @@ "Poll results": "Anket sonuçları", "Question": "Soru", "Quote": "Alıntı", + "Reached the vote limit. Remove an existing vote first.": "Oylama sınırına ulaşıldı. Önce mevcut bir oyu kaldırın.", "Recording format is not supported and cannot be reproduced": "Kayıt formatı desteklenmiyor ve çoğaltılamıyor", "Remind Me": "Hatırlat", "Remove reminder": "Hatırlatıcıyı kaldır", diff --git a/yarn.lock b/yarn.lock index 95c5c4c38b..b5a5fa2033 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6221,6 +6221,17 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -12036,16 +12047,16 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -stream-chat@^9.12.0: - version "9.12.0" - resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-9.12.0.tgz#d27b1319844d100ca419c61463f5c65f53c87952" - integrity sha512-/A4y8jBmWdP53RUY9f8dlc8dRjC/irR5KUMiOhn0IiAEmK2fKuD/7IpUzXi7cNmR8QMxlHdDMJZdB2wMDkiskQ== +stream-chat@^9.15.0: + version "9.15.0" + resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-9.15.0.tgz#97df48dd1c11b6c251bace9a43519f98841660b8" + integrity sha512-Y2azwTbfyN8dMAovpxvjZTDTotpmRKucj/dYpVeiDgog9BZzxaaQVhKOYzDFdxA1I6PKicMAXLvgAf+py0CWEg== dependencies: "@types/jsonwebtoken" "^9.0.8" "@types/ws" "^8.5.14" axios "^1.6.0" base64-js "^1.5.1" - form-data "^4.0.0" + form-data "^4.0.4" isomorphic-ws "^5.0.0" jsonwebtoken "^9.0.2" linkifyjs "^4.2.0"