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

View File

@@ -5,12 +5,14 @@ type JambonzSwitchProbs = {
onlabel: string;
offLabel: string;
initialCheck: boolean;
isDisabled?: boolean;
onChange: (value: boolean) => void;
};
function JambonzSwitch({
onlabel,
offLabel,
initialCheck,
isDisabled = false,
onChange,
}: JambonzSwitchProbs) {
const [isToggled, setToggled] = useState(initialCheck);
@@ -24,12 +26,14 @@ function JambonzSwitch({
position="relative"
w="90px"
h="30px"
bg={isToggled ? "green.500" : "grey.500"}
bg={isToggled && !isDisabled ? "green.500" : "grey.500"}
borderRadius="full"
onClick={() => {
const value = !isToggled;
setToggled(value);
onChange(value);
if (!isDisabled) {
const value = !isToggled;
setToggled(value);
onChange(value);
}
}}
_hover={{ cursor: "pointer" }}
>

View File

@@ -1,6 +1,6 @@
import { Box, Button, HStack, VStack } from "@chakra-ui/react";
import DialPadAudioElements from "./DialPadSoundElement";
import { useEffect } from "react";
import { useEffect, useRef, useState } from "react";
type DialPadProbs = {
handleDigitPress: (digit: string) => void;
@@ -9,6 +9,8 @@ type DialPadProbs = {
const keySounds = new DialPadAudioElements();
export const DialPad = ({ handleDigitPress }: DialPadProbs) => {
const selfRef = useRef<HTMLDivElement | null>(null);
const isVisibleRef = useRef(false);
const buttons = [
["1", "2", "3"],
["4", "5", "6"],
@@ -22,20 +24,36 @@ export const DialPad = ({ handleDigitPress }: DialPadProbs) => {
e.key
)
) {
keySounds?.playKeyTone(e.key);
handleDigitPress(e.key);
if (isVisibleRef.current) {
keySounds?.playKeyTone(e.key);
handleDigitPress(e.key);
}
}
};
useEffect(() => {
const observer = new IntersectionObserver(
([entry]) => {
isVisibleRef.current = entry.isIntersecting;
},
{
threshold: 0.5,
}
);
if (selfRef.current) {
observer.observe(selfRef.current);
}
document.addEventListener("keydown", handleKeyDown);
return () => {
document.removeEventListener("keydown", handleKeyDown);
if (selfRef.current) {
observer.unobserve(selfRef.current);
}
};
}, []);
return (
<Box p={2} w="full">
<Box p={2} w="full" ref={selfRef}>
<VStack w="full" bg="grey.500" spacing={0.5}>
{buttons.map((row, rowIndex) => (
<HStack key={rowIndex} justifyContent="space-between" spacing={0.5}>

View File

@@ -156,7 +156,9 @@ export const Phone = ({
}, [calledANumber]);
useEffect(() => {
setIsForceChangeUaStatus(false);
if (status === "online" || status === "offline") {
setIsForceChangeUaStatus(false);
}
}, [status]);
// useEffect(() => {
@@ -236,12 +238,14 @@ export const Phone = ({
sipClient.on(SipConstants.UA_DISCONNECTED, (args) => {
setStatus("disconnected");
toast({
title: `Cannot connect to ${sipServerAddress}`,
status: "warning",
duration: DEFAULT_TOAST_DURATION,
isClosable: true,
});
if (args.error) {
toast({
title: `Cannot connect to ${sipServerAddress}, ${args.reason}`,
status: "warning",
duration: DEFAULT_TOAST_DURATION,
isClosable: true,
});
}
});
// Call Status
sipClient.on(SipConstants.SESSION_RINGING, (args) => {
@@ -423,6 +427,7 @@ export const Phone = ({
<Circle size="8px" bg={isOnline() ? "green.500" : "gray.500"} />
<Spacer />
<JambonzSwitch
isDisabled={isForceChangeUaStatus}
onlabel="Online"
offLabel="Offline"
initialCheck={isOnline() || isForceChangeUaStatus}