Skip to content

Commit

Permalink
Merge branch 'develop' into feat/issue-164
Browse files Browse the repository at this point in the history
  • Loading branch information
parvez-ahammed committed Jan 24, 2025
2 parents d6ae987 + ab79428 commit 1ec0a26
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 34 deletions.
47 changes: 15 additions & 32 deletions client/src/components/AttendeeInput.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,44 +34,28 @@ export default function AttendeeInput({ id, onChange, value, type }: AttendeeInp

const handleSelectionChange = (_: React.SyntheticEvent, newValue: Array<string | IPeopleInformation>) => {
const emails = newValue.map((option) => (typeof option === 'object' && option.email ? option.email : (option as string)));
const filteredEmails = emails.filter((email) => emails.indexOf(email) === emails.lastIndexOf(email));
if (filteredEmails.length > 0) {
const lastValue = filteredEmails[filteredEmails.length - 1].trim();
if (isEmailValid(lastValue)) {
onChange(id, filteredEmails);
setTextInput('');
} else {
toast.error(locale.error.invalidEmail);
}
} else {
onChange(id, filteredEmails);
setTextInput('');
}
};
const filteredEmails = emails
.join(' ')
.split(/\s+/)
.map((email) => email.trim())
.filter((email) => email !== '');

const handleKeyDown = (event: any) => {
if (event.key === ' ') {
event.preventDefault();
const inputValue = event.target.value.trim();
const existingEmails = value || [];
const uniqueEmails = [...new Set(filteredEmails)];
const validEmails: string[] = [];
const invalidEmails: string[] = [];

if (existingEmails.find((email) => email === inputValue)) {
toast.error(locale.error.duplicateEmail);
return;
}
uniqueEmails.forEach((email) => {
isEmailValid(email) ? validEmails.push(email) : invalidEmails.push(email);
});

if (!isEmailValid(inputValue)) {
toast.error(locale.error.invalidEmail);
return;
}
invalidEmails.length > 0 && toast.error(locale.error.invalidEmail);

onChange(id, [...existingEmails, inputValue]);
setTextInput('');
if (validEmails.length >= 0) {
onChange(id, validEmails);
}
setTextInput('');
};

const debouncedInputChange = debounce(handleInputChange, 300);

return (
<Box
display="flex"
Expand Down Expand Up @@ -151,7 +135,6 @@ export default function AttendeeInput({ id, onChange, value, type }: AttendeeInp
type={type}
variant="standard"
placeholder={locale.placeholder.attendees}
onKeyDown={handleKeyDown}
slotProps={{
input: {
...params.InputProps,
Expand Down
2 changes: 1 addition & 1 deletion client/src/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"delete": "Delete"
},
"error": {
"invalidEmail": "Invalid email entered",
"invalidEmail": "Invalid email(s) entered.",
"duplicateEmail": "Duplicate email entered",
"failedToRetieveCallbackUrl": "Failed to retrieve oauth callback url",
"missingFields": "Input missing fields",
Expand Down
2 changes: 1 addition & 1 deletion client/src/locales/no.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"delete": "Slett"
},
"error": {
"invalidEmail": "Ugyldig e-post angitt",
"invalidEmail": "Ugyldig(e) e-post(er) angitt.",
"duplicateEmail": "Duplikat e-post oppgitt",
"failedToRetieveCallbackUrl": "Kunne ikke hente oauth tilbakeringingsadress",
"missingFields": "Skriv inn manglende felt",
Expand Down

0 comments on commit 1ec0a26

Please sign in to comment.