Fix wrong ringerId in auto-ended remote call

This commit is contained in:
Jamie Kyle 2024-01-03 11:19:08 -08:00 committed by GitHub
parent fee1359d5b
commit a60cf05f83
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 57 additions and 16 deletions

View file

@ -752,7 +752,8 @@ export class CallingClass {
); );
const callEvent = getCallEventDetails( const callEvent = getCallEventDetails(
callDetails, callDetails,
localCallEvent localCallEvent,
'RingRTC.onLocalDeviceStateChanged'
); );
drop(updateCallHistoryFromLocalEvent(callEvent, null)); drop(updateCallHistoryFromLocalEvent(callEvent, null));
} }
@ -1757,12 +1758,16 @@ export class CallingClass {
const callDetails = getCallDetailsFromEndedDirectCall( const callDetails = getCallDetailsFromEndedDirectCall(
callId.toString(), callId.toString(),
peerId, peerId,
peerId, // Incoming call remoteUserId, // Incoming call
wasVideoCall, wasVideoCall,
envelope.timestamp envelope.timestamp
); );
const localCallEvent = LocalCallEvent.Missed; const localCallEvent = LocalCallEvent.Missed;
const callEvent = getCallEventDetails(callDetails, localCallEvent); const callEvent = getCallEventDetails(
callDetails,
localCallEvent,
'CallingClass.handleCallingMessage'
);
await updateCallHistoryFromLocalEvent( await updateCallHistoryFromLocalEvent(
callEvent, callEvent,
envelope.receivedAtCounter envelope.receivedAtCounter
@ -2016,7 +2021,8 @@ export class CallingClass {
}); });
const callEvent = getCallEventDetails( const callEvent = getCallEventDetails(
callDetails, callDetails,
shouldRing ? LocalCallEvent.Ringing : LocalCallEvent.Started shouldRing ? LocalCallEvent.Ringing : LocalCallEvent.Started,
'CallingClass.handleGroupCallRingUpdate'
); );
await updateCallHistoryFromLocalEvent(callEvent, null); await updateCallHistoryFromLocalEvent(callEvent, null);
} }
@ -2108,7 +2114,11 @@ export class CallingClass {
const localCallEvent = LocalCallEvent.Missed; const localCallEvent = LocalCallEvent.Missed;
const peerId = getPeerIdFromConversation(conversation.attributes); const peerId = getPeerIdFromConversation(conversation.attributes);
const callDetails = getCallDetailsFromDirectCall(peerId, call); const callDetails = getCallDetailsFromDirectCall(peerId, call);
const callEvent = getCallEventDetails(callDetails, localCallEvent); const callEvent = getCallEventDetails(
callDetails,
localCallEvent,
'CallingClass.handleIncomingCall'
);
await updateCallHistoryFromLocalEvent(callEvent, null); await updateCallHistoryFromLocalEvent(callEvent, null);
return false; return false;
@ -2161,7 +2171,11 @@ export class CallingClass {
); );
const localCallEvent = const localCallEvent =
getLocalCallEventFromCallEndedReason(callEndedReason); getLocalCallEventFromCallEndedReason(callEndedReason);
const callEvent = getCallEventDetails(callDetails, localCallEvent); const callEvent = getCallEventDetails(
callDetails,
localCallEvent,
'CallingClass.handleAutoEndedIncomingCallRequest'
);
await updateCallHistoryFromLocalEvent(callEvent, receivedAtCounter ?? null); await updateCallHistoryFromLocalEvent(callEvent, receivedAtCounter ?? null);
} }
@ -2191,7 +2205,11 @@ export class CallingClass {
if (localCallEvent != null) { if (localCallEvent != null) {
const peerId = getPeerIdFromConversation(conversation.attributes); const peerId = getPeerIdFromConversation(conversation.attributes);
const callDetails = getCallDetailsFromDirectCall(peerId, call); const callDetails = getCallDetailsFromDirectCall(peerId, call);
const callEvent = getCallEventDetails(callDetails, localCallEvent); const callEvent = getCallEventDetails(
callDetails,
localCallEvent,
'call.handleStateChanged'
);
await updateCallHistoryFromLocalEvent(callEvent, null); await updateCallHistoryFromLocalEvent(callEvent, null);
} }
@ -2397,7 +2415,11 @@ export class CallingClass {
peerId, peerId,
groupCallMeta groupCallMeta
); );
const callEvent = getCallEventDetails(callDetails, localCallEvent); const callEvent = getCallEventDetails(
callDetails,
localCallEvent,
'CallingClass.updateCallHistoryForGroupCall'
);
await updateCallHistoryFromLocalEvent(callEvent, null); await updateCallHistoryFromLocalEvent(callEvent, null);
} }
} }

View file

@ -3450,7 +3450,10 @@ export default class MessageReceiver
const { receivedAtCounter } = envelope; const { receivedAtCounter } = envelope;
const callEventDetails = getCallEventForProto(callEvent); const callEventDetails = getCallEventForProto(
callEvent,
'MessageReceiver.handleCallEvent'
);
const callEventSync = new CallEventSyncEvent( const callEventSync = new CallEventSyncEvent(
{ {

View file

@ -79,6 +79,7 @@ export type CallDetails = Readonly<{
export type CallEventDetails = CallDetails & export type CallEventDetails = CallDetails &
Readonly<{ Readonly<{
event: CallEvent; event: CallEvent;
eventSource: string;
}>; }>;
export type CallHistoryDetails = CallDetails & export type CallHistoryDetails = CallDetails &
@ -145,6 +146,7 @@ export const callDetailsSchema = z.object({
export const callEventDetailsSchema = callDetailsSchema.extend({ export const callEventDetailsSchema = callDetailsSchema.extend({
event: callEventSchema, event: callEventSchema,
eventSource: z.string(),
}) satisfies z.ZodType<CallEventDetails>; }) satisfies z.ZodType<CallEventDetails>;
export const callHistoryDetailsSchema = callDetailsSchema.extend({ export const callHistoryDetailsSchema = callDetailsSchema.extend({

View file

@ -65,14 +65,25 @@ import type { ConversationModel } from '../models/conversations';
// ----- // -----
export function formatCallEvent(callEvent: CallEventDetails): string { export function formatCallEvent(callEvent: CallEventDetails): string {
const { callId, peerId, direction, event, type, mode, timestamp } = callEvent; const {
return `CallEvent (${callId}, ${peerId}, ${mode}, ${event}, ${direction}, ${type}, ${mode}, ${timestamp})`; callId,
peerId,
direction,
event,
eventSource,
type,
mode,
ringerId,
timestamp,
} = callEvent;
const peerIdLog = mode === CallMode.Group ? `groupv2(${peerId})` : peerId;
return `CallEvent (${callId}, ${peerIdLog}, ${mode}, ${event}, ${direction}, ${type}, ${mode}, ${timestamp}, ${ringerId}, ${eventSource})`;
} }
export function formatCallHistory(callHistory: CallHistoryDetails): string { export function formatCallHistory(callHistory: CallHistoryDetails): string {
const { callId, peerId, direction, status, type, mode, timestamp } = const { callId, peerId, direction, status, type, mode, timestamp, ringerId } =
callHistory; callHistory;
return `CallHistory (${callId}, ${peerId}, ${mode}, ${status}, ${direction}, ${type}, ${mode}, ${timestamp})`; return `CallHistory (${callId}, ${peerId}, ${mode}, ${status}, ${direction}, ${type}, ${mode}, ${timestamp}, ${ringerId})`;
} }
export function formatCallHistoryGroup( export function formatCallHistoryGroup(
@ -162,7 +173,8 @@ export function convertJoinState(joinState: JoinState): GroupCallJoinState {
// ---------------------- // ----------------------
export function getCallEventForProto( export function getCallEventForProto(
callEventProto: Proto.SyncMessage.ICallEvent callEventProto: Proto.SyncMessage.ICallEvent,
eventSource: string
): CallEventDetails { ): CallEventDetails {
const callEvent = callEventNormalizeSchema.parse(callEventProto); const callEvent = callEventNormalizeSchema.parse(callEventProto);
const { callId, peerId, timestamp } = callEvent; const { callId, peerId, timestamp } = callEvent;
@ -218,6 +230,7 @@ export function getCallEventForProto(
direction, direction,
timestamp, timestamp,
event, event,
eventSource,
}); });
} }
@ -459,9 +472,10 @@ export function getCallDetailsFromGroupCallMeta(
export function getCallEventDetails( export function getCallEventDetails(
callDetails: CallDetails, callDetails: CallDetails,
event: LocalCallEvent event: LocalCallEvent,
eventSource: string
): CallEventDetails { ): CallEventDetails {
return callEventDetailsSchema.parse({ ...callDetails, event }); return callEventDetailsSchema.parse({ ...callDetails, event, eventSource });
} }
// transitions // transitions