fix(voice): accept calls without conversation hydration; warn on refresh during ringing
- FloatingCallWidget: drop !conversation early-return in handleJoinCall — on a fresh account or after a hard refresh the inbound call's conversation may not be in the Vuex store yet, which silently no-op'd Accept while Reject worked (Reject doesn't read the conversation). - useCallSession: seed the calls store from already-loaded voice_call messages with status='ringing' on mount and whenever the conversation list changes. Cable events (voice_call.incoming, message.created) are one-shot and not replayed on reconnect, so without seeding a refresh during a ringing call leaves the FloatingCallWidget empty. - useCallSession: extend the beforeunload warning to fire while a call is ringing too — losing a ringing inbound to refresh is the same UX hit as losing an active one.
This commit is contained in:
@@ -74,21 +74,25 @@ const handleEndCall = async () => {
|
||||
};
|
||||
|
||||
const handleJoinCall = async call => {
|
||||
if (!call || isJoining.value) return;
|
||||
const { conversation } = getCallInfo(call);
|
||||
if (!call || !conversation || isJoining.value) return;
|
||||
|
||||
// End current active call before joining new one
|
||||
if (hasActiveCall.value) {
|
||||
await handleEndCall();
|
||||
}
|
||||
|
||||
// After a hard refresh the conversation may not be hydrated yet — but the call
|
||||
// object already carries inboxId from the cable / seeding path, so accept can
|
||||
// proceed without it. Twilio still needs inboxId for initializeDevice; falls
|
||||
// back to the conversation's inbox_id when present.
|
||||
const result = await joinCall({
|
||||
conversationId: call.conversationId,
|
||||
inboxId: conversation.inbox_id,
|
||||
inboxId: call.inboxId || conversation?.inbox_id,
|
||||
callSid: call.callSid,
|
||||
});
|
||||
|
||||
if (result) {
|
||||
if (result && conversation) {
|
||||
router.push({
|
||||
name: 'inbox_conversation',
|
||||
params: { conversation_id: call.conversationId },
|
||||
|
||||
Reference in New Issue
Block a user