diff --git a/dailyjs/shared/contexts/CallProvider.js b/dailyjs/shared/contexts/CallProvider.js
index 1fa331a..b884666 100644
--- a/dailyjs/shared/contexts/CallProvider.js
+++ b/dailyjs/shared/contexts/CallProvider.js
@@ -33,7 +33,7 @@ export const CallProvider = ({
const [preJoinNonAuthorized, setPreJoinNonAuthorized] = useState(false);
// Daily CallMachine hook (primarily handles status of the call)
- const { daily, leave, join, state } = useCallMachine({
+ const { daily, leave, state, setRedirectOnLeave } = useCallMachine({
domain,
room,
token,
@@ -71,10 +71,10 @@ export const CallProvider = ({
addFakeParticipant,
preJoinNonAuthorized,
leave,
- join,
videoQuality,
setVideoQuality,
setBandwidth,
+ setRedirectOnLeave,
subscribeToTracksAutomatically,
}}
>
diff --git a/dailyjs/shared/contexts/useCallMachine.js b/dailyjs/shared/contexts/useCallMachine.js
index 542be7d..848e1fd 100644
--- a/dailyjs/shared/contexts/useCallMachine.js
+++ b/dailyjs/shared/contexts/useCallMachine.js
@@ -38,7 +38,7 @@ export const useCallMachine = ({
}) => {
const [daily, setDaily] = useState(null);
const [state, setState] = useState(CALL_STATE_READY);
- const [redirectOnLeave, setRedirectOnLeave] = useState(true);
+ const [redirectOnLeave, setRedirectOnLeave] = useState(false);
const url = useMemo(
() => (domain && room ? `https://${domain}.daily.co/${room}` : null),
@@ -245,8 +245,9 @@ export const useCallMachine = ({
break;
case 'left-meeting':
daily.destroy();
- if (!redirectOnLeave) return;
- setState(CALL_STATE_REDIRECTING);
+ setState(
+ !redirectOnLeave ? CALL_STATE_ENDED : CALL_STATE_REDIRECTING
+ );
break;
case 'error':
switch (ev?.error?.type) {
diff --git a/dailyjs/shared/hooks/useCallUI.js b/dailyjs/shared/hooks/useCallUI.js
index b8feaec..45ecc3f 100644
--- a/dailyjs/shared/hooks/useCallUI.js
+++ b/dailyjs/shared/hooks/useCallUI.js
@@ -48,15 +48,19 @@ export const useCallUI = ({
);
case CALL_STATE_LOBBY:
return haircheck ? haircheck() : ;
- case CALL_STATE_REDIRECTING:
- window.location = redirectUrl;
- break;
+
case CALL_STATE_JOINED:
return room ? (
room()
) : (
);
+ case CALL_STATE_REDIRECTING:
+ if (!redirectUrl) {
+ break;
+ }
+ window.location = redirectUrl;
+ break;
case CALL_STATE_ENDED:
return callEnded ? (
callEnded()