Skip to content

Commit 8bca9f0

Browse files
authored
fix: inject error into PollComposer state if native numeric field validation fails (#2702)
Pass custom error to PollComposer state upon native validation failure for field `max_votes_allowed`
1 parent b6e91a2 commit 8bca9f0

File tree

15 files changed

+32
-10
lines changed

15 files changed

+32
-10
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@
239239
"react": "^19.0.0",
240240
"react-dom": "^19.0.0",
241241
"semantic-release": "^24.2.3",
242-
"stream-chat": "^9.0.0",
242+
"stream-chat": "9.1.1",
243243
"ts-jest": "^29.2.5",
244244
"typescript": "^5.4.5",
245245
"typescript-eslint": "^8.17.0"

src/components/Poll/PollCreationDialog/MultipleAnswersField.tsx

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,19 @@ export const MultipleAnswersField = () => {
5252
pollComposer.handleFieldBlur('max_votes_allowed');
5353
}}
5454
onChange={(e) => {
55-
pollComposer.updateFields({
56-
max_votes_allowed: e.target.value,
57-
});
55+
const nativeFieldValidation = !e.target.validity.valid
56+
? {
57+
max_votes_allowed: t('Only numbers are allowed'),
58+
}
59+
: undefined;
60+
pollComposer.updateFields(
61+
{
62+
max_votes_allowed: !nativeFieldValidation
63+
? e.target.value
64+
: pollComposer.max_votes_allowed,
65+
},
66+
nativeFieldValidation,
67+
);
5868
}}
5969
placeholder={t<string>('Maximum number of votes (from 2 to 10)')}
6070
type='number'

src/i18n/de.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"Nobody will be able to vote in this poll anymore.": "Niemand kann mehr in dieser Umfrage abstimmen.",
8080
"Nothing yet...": "Noch nichts...",
8181
"Ok": "Ok",
82+
"Only numbers are allowed": "Nur Zahlen sind erlaubt",
8283
"Open emoji picker": "Emoji-Auswahl öffnen",
8384
"Option already exists": "Option existiert bereits",
8485
"Options": "Optionen",

src/i18n/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"Nobody will be able to vote in this poll anymore.": "Nobody will be able to vote in this poll anymore.",
8080
"Nothing yet...": "Nothing yet...",
8181
"Ok": "Ok",
82+
"Only numbers are allowed": "Only numbers are allowed",
8283
"Open emoji picker": "Open emoji picker",
8384
"Option already exists": "Option already exists",
8485
"Options": "Options",

src/i18n/es.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"Nobody will be able to vote in this poll anymore.": "Nadie podrá votar en esta encuesta.",
8080
"Nothing yet...": "Nada aún...",
8181
"Ok": "Ok",
82+
"Only numbers are allowed": "Solo se permiten números",
8283
"Open emoji picker": "Abrir el selector de emojis",
8384
"Option already exists": "La opción ya existe",
8485
"Options": "Opciones",

src/i18n/fr.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"Nobody will be able to vote in this poll anymore.": "Personne ne pourra plus voter dans ce sondage.",
8080
"Nothing yet...": "Rien pour l'instant...",
8181
"Ok": "D'accord",
82+
"Only numbers are allowed": "Seuls les chiffres sont autorisés",
8283
"Open emoji picker": "Ouvrir le sélecteur d'émojis",
8384
"Option already exists": "L'option existe déjà",
8485
"Options": "Options",

src/i18n/hi.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
"Nobody will be able to vote in this poll anymore.": "अब कोई भी इस मतदान में मतदान नहीं कर सकेगा।",
8181
"Nothing yet...": "कोई मैसेज नहीं है",
8282
"Ok": "ठीक है",
83+
"Only numbers are allowed": "केवल संख्याएँ अनुमत हैं",
8384
"Open emoji picker": "इमोजी पिकर खोलिये",
8485
"Option already exists": "विकल्प पहले से मौजूद है",
8586
"Options": "विकल्प",

src/i18n/it.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"Nobody will be able to vote in this poll anymore.": "Nessuno potrà più votare in questo sondaggio.",
8080
"Nothing yet...": "Ancora niente...",
8181
"Ok": "Ok",
82+
"Only numbers are allowed": "Sono consentiti solo numeri",
8283
"Open emoji picker": "Apri il selettore di emoji",
8384
"Option already exists": "L'opzione esiste già",
8485
"Options": "Opzioni",

src/i18n/ja.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"Nobody will be able to vote in this poll anymore.": "この投票では、誰も投票できなくなります。",
8080
"Nothing yet...": "まだ何もありません...",
8181
"Ok": "OK",
82+
"Only numbers are allowed": "数字のみ許可されています",
8283
"Open emoji picker": "絵文字ピッカーを開く",
8384
"Option already exists": "オプションは既に存在します",
8485
"Options": "オプション",

src/i18n/ko.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@
7979
"Nobody will be able to vote in this poll anymore.": "이 투표에 더 이상 아무도 투표할 수 없습니다.",
8080
"Nothing yet...": "아직 아무것도...",
8181
"Ok": "확인",
82-
"Open emoji picker": "이모티콘 선택기 열기",
82+
"Only numbers are allowed": "숫자만 입력 가능합니다",
83+
"Open emoji picker": "이모지 선택기 열기",
8384
"Option already exists": "옵션이 이미 존재합니다",
8485
"Options": "옵션",
8586
"People matching": "일치하는 사람",

0 commit comments

Comments
 (0)