diff --git a/src/components/Asks/AskDiscord.tsx b/src/components/Asks/AskDiscord.tsx index 8d48e6d..a683b92 100644 --- a/src/components/Asks/AskDiscord.tsx +++ b/src/components/Asks/AskDiscord.tsx @@ -53,7 +53,7 @@ export function AskDiscord(asks: JSX.Element[], id: number): void { équipes s'organisent !

- Pour s'y retrouver tellement on est nombreux (plus de 120), il est nécessaire + Pour s'y retrouver tellement on est nombreux (plus de 200), il est nécessaire d'avoir son prénom comme alias. Voir même d'avoir ensuite la première lettre de ton nom de famille si un autre bénévole présent sur le serveur a le même prénom. Pour changer ton alias uniquement sur le serveur PeL, il faut faire un clique droit sur diff --git a/src/components/ForgotForm/ForgotForm.tsx b/src/components/ForgotForm/ForgotForm.tsx index 65771bd..ad91c70 100644 --- a/src/components/ForgotForm/ForgotForm.tsx +++ b/src/components/ForgotForm/ForgotForm.tsx @@ -13,7 +13,7 @@ interface Props { const ForgotForm = ({ dispatch, error, message }: Props): JSX.Element => { const onSubmit = useCallback( - (event: React.SyntheticEvent): void => { + (event: React.SyntheticEvent): boolean => { event.preventDefault() const target = event.target as typeof event.target & { email: { value: string } @@ -21,6 +21,7 @@ const ForgotForm = ({ dispatch, error, message }: Props): JSX.Element => { const email = target.email.value dispatch(fetchVolunteerForgot({ email })) + return false }, [dispatch] ) @@ -35,7 +36,7 @@ const ForgotForm = ({ dispatch, error, message }: Props): JSX.Element => {

- Envoyer + Envoyer
{error}
{message}
diff --git a/src/components/Form/FormSubmit/FormSubmit.tsx b/src/components/Form/FormSubmit/FormSubmit.tsx index 06d1823..0537fc4 100644 --- a/src/components/Form/FormSubmit/FormSubmit.tsx +++ b/src/components/Form/FormSubmit/FormSubmit.tsx @@ -1,14 +1,20 @@ +/* eslint-disable jsx-a11y/anchor-is-valid */ import { FC, ReactNode } from "react" import styles from "./styles.module.scss" type Props = { children: ReactNode + onClick?: (event: React.SyntheticEvent) => void } -const FormSubmit: FC = ({ children }): JSX.Element => ( - ) +FormSubmit.defaultProps = { + onClick: undefined, +} + export default FormSubmit diff --git a/src/components/Loan/LoaningIntro.tsx b/src/components/Loan/LoaningIntro.tsx index c9058bd..e50d114 100644 --- a/src/components/Loan/LoaningIntro.tsx +++ b/src/components/Loan/LoaningIntro.tsx @@ -7,7 +7,7 @@ const LoaningIntro: React.FC = (): JSX.Element => (

Emprunt et tri des jeux

Lors du brunch des bénévoles ayant contribué au dernier festival, des boîtes de jeux en - trop dans la ludothèque seront données, et des boîtes qui passe l'année dans la cave + trop dans la ludothèque seront données, et des boîtes qui passent l'année dans la cave entre deux éditions seront prêtées pour 4 mois.

diff --git a/src/components/LoginForm/index.tsx b/src/components/LoginForm/index.tsx index e1b9973..8b53bbf 100644 --- a/src/components/LoginForm/index.tsx +++ b/src/components/LoginForm/index.tsx @@ -1,4 +1,5 @@ -import React, { memo, useCallback } from "react" +import { memo, useCallback, useRef } from "react" +import { get } from "lodash" import { shallowEqual, useDispatch, useSelector } from "react-redux" import { AppState } from "../../store" import { fetchVolunteerLogin } from "../../store/volunteerLogin" @@ -9,36 +10,37 @@ const LoginForm = (): JSX.Element => { const dispatch = useDispatch() const loginError = useSelector((state: AppState) => state.volunteerLogin.error, shallowEqual) + const emailRef = useRef(null) + const passwordRef = useRef(null) + const onSubmit = useCallback( - (event: React.SyntheticEvent): void => { + (event: React.SyntheticEvent): boolean => { event.preventDefault() - const target = event.target as typeof event.target & { - email: { value: string } - password: { value: string } - } - const email = target.email.value - const password = target.password.value + event.stopPropagation() + const email = get(emailRef, "current.value", "") + const password = get(passwordRef, "current.value", "") dispatch(fetchVolunteerLogin({ email, password })) + return false }, [dispatch] ) return ( -

+
Si tu es bénévole, connecte-toi pour accéder à ton espace.
- +
- +
- Connexion + Connexion
{loginError &&
{loginError}
}
diff --git a/src/components/LogoutButton/LogoutButton.tsx b/src/components/LogoutButton/LogoutButton.tsx index 1fdfd19..210ddbd 100644 --- a/src/components/LogoutButton/LogoutButton.tsx +++ b/src/components/LogoutButton/LogoutButton.tsx @@ -7,11 +7,12 @@ import styles from "./styles.module.scss" const LogoutButton: FC = (): JSX.Element | null => { const connected = useSelector(isUserConnected) - const onClick = useCallback((event: React.SyntheticEvent): void => { + const onClick = useCallback((event: React.SyntheticEvent): boolean => { event.preventDefault() unsetJWT() // eslint-disable-next-line no-restricted-globals location?.reload() + return false }, []) if (!connected) return null diff --git a/src/server/gsheets/volunteers.ts b/src/server/gsheets/volunteers.ts index 7917162..106b6ba 100644 --- a/src/server/gsheets/volunteers.ts +++ b/src/server/gsheets/volunteers.ts @@ -152,6 +152,7 @@ async function sendSignUpEmail(email: string, password: string): Promise { export const volunteerLogin = expressAccessor.get(async (list, bodyArray) => { const [body] = bodyArray const volunteer = getByEmail(list, body.email) + if (!volunteer) { throw Error("Il n'y a aucun bénévole avec cet email") } @@ -173,8 +174,6 @@ export const volunteerLogin = expressAccessor.get(async (list, b map(toTry, async ([p, save]) => bcrypt.compare(p, save.replace(/^\$2y/, "$2a"))) ) - console.log("tries", JSON.stringify(tries)) - if (!some(tries)) { throw Error("Mauvais mot de passe pour cet email") } diff --git a/src/store/utils.ts b/src/store/utils.ts index aa3d81c..4d4eb1f 100644 --- a/src/store/utils.ts +++ b/src/store/utils.ts @@ -158,7 +158,7 @@ export function gameTitleOrder(boxOrGame: { title: string }): string { export function gameTitleCategory(boxOrGame: { title: string }, length = 3): string { return gameTitleOrder(boxOrGame) .substring(0, length) - .replace(/(?<=[0-9]).+/, "") + .replace(/([0-9]).+/, "$1") .toUpperCase() } diff --git a/src/theme/mixins.scss b/src/theme/mixins.scss index 2851832..46bbe57 100644 --- a/src/theme/mixins.scss +++ b/src/theme/mixins.scss @@ -103,6 +103,7 @@ color: $color-white; border-radius: 16px; font-weight: bold; + cursor: "pointer"; } @mixin form-grey-button { diff --git a/src/utils/standardization.ts b/src/utils/standardization.ts index 21523da..000163b 100644 --- a/src/utils/standardization.ts +++ b/src/utils/standardization.ts @@ -48,7 +48,7 @@ export function trim(src: string): string { export function canonicalFirstname(firstname: string): string { return trim(firstname) .toLowerCase() - .replace(/(?<=^|[\s'-])([a-zA-Z]|[à-ú]|[À-Ú])/gi, (s) => s.toUpperCase()) + .replace(/(^|[\s'-])([a-zA-Z]|[à-ú]|[À-Ú])/gi, (s, before) => before + s.toUpperCase()) .replace(/\b(de|d'|du|le|la)\b/gi, (s) => s.toLowerCase()) .replace(/\b(d'|l')/gi, (s) => s.toLowerCase()) } @@ -56,7 +56,7 @@ export function canonicalFirstname(firstname: string): string { export function canonicalLastname(lastname: string): string { return trim(lastname) .toLowerCase() - .replace(/(?<=^|[\s'-])([a-zA-Z]|[à-ú]|[À-Ú])/gi, (s) => s.toUpperCase()) + .replace(/(^|[\s'-])([a-zA-Z]|[à-ú]|[À-Ú])/gi, (s, before) => before + s.toUpperCase()) .replace(/\b(de|d'|du|le|la)\b/gi, (s) => s.toLowerCase()) .replace(/\b(d'|l')/gi, (s) => s.toLowerCase()) }