Merge pull request #24 from jambonz/fix/review_comment

fix review comments
This commit is contained in:
Dave Horton
2023-10-31 07:52:40 -04:00
committed by GitHub
3 changed files with 42 additions and 15 deletions
+8 -4
View File
@@ -5,12 +5,14 @@ type JambonzSwitchProbs = {
onlabel: string; onlabel: string;
offLabel: string; offLabel: string;
initialCheck: boolean; initialCheck: boolean;
isDisabled?: boolean;
onChange: (value: boolean) => void; onChange: (value: boolean) => void;
}; };
function JambonzSwitch({ function JambonzSwitch({
onlabel, onlabel,
offLabel, offLabel,
initialCheck, initialCheck,
isDisabled = false,
onChange, onChange,
}: JambonzSwitchProbs) { }: JambonzSwitchProbs) {
const [isToggled, setToggled] = useState(initialCheck); const [isToggled, setToggled] = useState(initialCheck);
@@ -24,12 +26,14 @@ function JambonzSwitch({
position="relative" position="relative"
w="90px" w="90px"
h="30px" h="30px"
bg={isToggled ? "green.500" : "grey.500"} bg={isToggled && !isDisabled ? "green.500" : "grey.500"}
borderRadius="full" borderRadius="full"
onClick={() => { onClick={() => {
const value = !isToggled; if (!isDisabled) {
setToggled(value); const value = !isToggled;
onChange(value); setToggled(value);
onChange(value);
}
}} }}
_hover={{ cursor: "pointer" }} _hover={{ cursor: "pointer" }}
> >
+22 -4
View File
@@ -1,6 +1,6 @@
import { Box, Button, HStack, VStack } from "@chakra-ui/react"; import { Box, Button, HStack, VStack } from "@chakra-ui/react";
import DialPadAudioElements from "./DialPadSoundElement"; import DialPadAudioElements from "./DialPadSoundElement";
import { useEffect } from "react"; import { useEffect, useRef, useState } from "react";
type DialPadProbs = { type DialPadProbs = {
handleDigitPress: (digit: string) => void; handleDigitPress: (digit: string) => void;
@@ -9,6 +9,8 @@ type DialPadProbs = {
const keySounds = new DialPadAudioElements(); const keySounds = new DialPadAudioElements();
export const DialPad = ({ handleDigitPress }: DialPadProbs) => { export const DialPad = ({ handleDigitPress }: DialPadProbs) => {
const selfRef = useRef<HTMLDivElement | null>(null);
const isVisibleRef = useRef(false);
const buttons = [ const buttons = [
["1", "2", "3"], ["1", "2", "3"],
["4", "5", "6"], ["4", "5", "6"],
@@ -22,20 +24,36 @@ export const DialPad = ({ handleDigitPress }: DialPadProbs) => {
e.key e.key
) )
) { ) {
keySounds?.playKeyTone(e.key); if (isVisibleRef.current) {
handleDigitPress(e.key); keySounds?.playKeyTone(e.key);
handleDigitPress(e.key);
}
} }
}; };
useEffect(() => { useEffect(() => {
const observer = new IntersectionObserver(
([entry]) => {
isVisibleRef.current = entry.isIntersecting;
},
{
threshold: 0.5,
}
);
if (selfRef.current) {
observer.observe(selfRef.current);
}
document.addEventListener("keydown", handleKeyDown); document.addEventListener("keydown", handleKeyDown);
return () => { return () => {
document.removeEventListener("keydown", handleKeyDown); document.removeEventListener("keydown", handleKeyDown);
if (selfRef.current) {
observer.unobserve(selfRef.current);
}
}; };
}, []); }, []);
return ( return (
<Box p={2} w="full"> <Box p={2} w="full" ref={selfRef}>
<VStack w="full" bg="grey.500" spacing={0.5}> <VStack w="full" bg="grey.500" spacing={0.5}>
{buttons.map((row, rowIndex) => ( {buttons.map((row, rowIndex) => (
<HStack key={rowIndex} justifyContent="space-between" spacing={0.5}> <HStack key={rowIndex} justifyContent="space-between" spacing={0.5}>
+12 -7
View File
@@ -156,7 +156,9 @@ export const Phone = ({
}, [calledANumber]); }, [calledANumber]);
useEffect(() => { useEffect(() => {
setIsForceChangeUaStatus(false); if (status === "online" || status === "offline") {
setIsForceChangeUaStatus(false);
}
}, [status]); }, [status]);
// useEffect(() => { // useEffect(() => {
@@ -236,12 +238,14 @@ export const Phone = ({
sipClient.on(SipConstants.UA_DISCONNECTED, (args) => { sipClient.on(SipConstants.UA_DISCONNECTED, (args) => {
setStatus("disconnected"); setStatus("disconnected");
toast({ if (args.error) {
title: `Cannot connect to ${sipServerAddress}`, toast({
status: "warning", title: `Cannot connect to ${sipServerAddress}, ${args.reason}`,
duration: DEFAULT_TOAST_DURATION, status: "warning",
isClosable: true, duration: DEFAULT_TOAST_DURATION,
}); isClosable: true,
});
}
}); });
// Call Status // Call Status
sipClient.on(SipConstants.SESSION_RINGING, (args) => { sipClient.on(SipConstants.SESSION_RINGING, (args) => {
@@ -423,6 +427,7 @@ export const Phone = ({
<Circle size="8px" bg={isOnline() ? "green.500" : "gray.500"} /> <Circle size="8px" bg={isOnline() ? "green.500" : "gray.500"} />
<Spacer /> <Spacer />
<JambonzSwitch <JambonzSwitch
isDisabled={isForceChangeUaStatus}
onlabel="Online" onlabel="Online"
offLabel="Offline" offLabel="Offline"
initialCheck={isOnline() || isForceChangeUaStatus} initialCheck={isOnline() || isForceChangeUaStatus}