diff --git a/src/js/components/AudioControl.tsx b/src/js/components/AudioControl.tsx index 09e98e890..495b507cd 100644 --- a/src/js/components/AudioControl.tsx +++ b/src/js/components/AudioControl.tsx @@ -22,7 +22,7 @@ export function AudioControl({ onStatusChange = () => null, }: Props) { const [enabled, setEnabled] = useState(false); - const [audioStatus, setAudioStatus] = useState(null); + const [audioStatus, setAudioStatus] = useState>(null); const play = (audio: HTMLAudioElement) => audio.play().catch(() => null); const pause = (audio: HTMLAudioElement) => audio.pause(); @@ -69,22 +69,26 @@ export function AudioControl({ }, [enabled, ayah?.id]); useEffect(() => { - onStatusChange(audioStatus, [ - () => setEnabled(true), - () => setEnabled(false), - ]); + if (audioStatus) { + onStatusChange(audioStatus, [ + () => setEnabled(true), + () => setEnabled(false), + ]); + } }, [audioStatus]); + if (hidden) { + return null; + } + return ( - !hidden && ( - <> - {enabled && ( - [setEnabled(false), pause(audio)]} /> - )} - {!enabled && ( - [setEnabled(true), play(audio)]} /> - )} - - ) + <> + {enabled && ( + [setEnabled(false), pause(audio)]} /> + )} + {!enabled && ( + [setEnabled(true), play(audio)]} /> + )} + ); } diff --git a/src/js/components/LanguageSelect.tsx b/src/js/components/LanguageSelect.tsx index 9b3408e46..66f4e5a3d 100644 --- a/src/js/components/LanguageSelect.tsx +++ b/src/js/components/LanguageSelect.tsx @@ -17,7 +17,7 @@ export function LanguageSelect({ locale }: Props) { new RegExp(`^/${locale}/`), `/${newLocale}/`, ); - content.classList.add("invisible"); + content?.classList?.add("invisible"); location.replace(path); }} > diff --git a/src/js/components/Select.tsx b/src/js/components/Select.tsx index c769dfa37..2c3dbd2e5 100644 --- a/src/js/components/Select.tsx +++ b/src/js/components/Select.tsx @@ -1,6 +1,8 @@ import React, { useState, useEffect } from "react"; import classNames from "classnames"; +type Maybe = T | null | undefined; + type Props = { value: string; children: JSX.Element[]; @@ -15,7 +17,7 @@ export function Select({ className, }: Props) { const [open, setOpen] = useState(false); - const [selected, setSelected] = useState( + const [selected, setSelected] = useState>( query(option, { within }), ); const close = () => setOpen(false); @@ -31,7 +33,7 @@ export function Select({ className="selected" onClick={e => [e.stopPropagation(), setOpen(true)]} > - {selected.props.children} + {selected?.props?.children}