Allow searching calls with legacy conversation id as peerId
This commit is contained in:
parent
e78da67a51
commit
af0beb6d8e
3 changed files with 48 additions and 8 deletions
|
@ -3356,6 +3356,7 @@ function getCallHistoryGroupDataSync(
|
|||
|
||||
const [createTempTable] = sql`
|
||||
CREATE TEMP TABLE temp_callHistory_filtered_conversations (
|
||||
id TEXT,
|
||||
uuid TEXT,
|
||||
groupId TEXT
|
||||
);
|
||||
|
@ -3365,14 +3366,14 @@ function getCallHistoryGroupDataSync(
|
|||
|
||||
batchMultiVarQuery(db, conversationIds, ids => {
|
||||
const idList = sqlJoin(
|
||||
ids.map(id => sqlFragment`(${id})`),
|
||||
ids.map(id => sqlFragment`${id}`),
|
||||
','
|
||||
);
|
||||
|
||||
const [insertQuery, insertParams] = sql`
|
||||
INSERT INTO temp_callHistory_filtered_conversations
|
||||
(uuid, groupId)
|
||||
SELECT uuid, groupId
|
||||
(id, uuid, groupId)
|
||||
SELECT id, uuid, groupId
|
||||
FROM conversations
|
||||
WHERE conversations.id IN (${idList});
|
||||
`;
|
||||
|
@ -3383,9 +3384,11 @@ function getCallHistoryGroupDataSync(
|
|||
|
||||
const innerJoin =
|
||||
conversationIds != null
|
||||
? sqlFragment`
|
||||
? // peerId can be a conversation id (legacy), a uuid, or a groupId
|
||||
sqlFragment`
|
||||
INNER JOIN temp_callHistory_filtered_conversations ON (
|
||||
temp_callHistory_filtered_conversations.uuid IS c.peerId
|
||||
temp_callHistory_filtered_conversations.id IS c.peerId
|
||||
OR temp_callHistory_filtered_conversations.uuid IS c.peerId
|
||||
OR temp_callHistory_filtered_conversations.groupId IS c.peerId
|
||||
)
|
||||
`
|
||||
|
|
|
@ -36,7 +36,7 @@ export default function updateToSchemaVersion87(
|
|||
|
||||
CREATE TABLE callsHistory (
|
||||
callId TEXT PRIMARY KEY,
|
||||
peerId TEXT NOT NULL, -- conversation uuid | groupId | roomId
|
||||
peerId TEXT NOT NULL, -- conversation id (legacy) | uuid | groupId | roomId
|
||||
ringerId TEXT DEFAULT NULL, -- ringer uuid
|
||||
mode TEXT NOT NULL, -- enum "Direct" | "Group"
|
||||
type TEXT NOT NULL, -- enum "Audio" | "Video" | "Group"
|
||||
|
|
|
@ -177,11 +177,11 @@ describe('sql/getCallHistoryGroups', () => {
|
|||
callId: string,
|
||||
timestamp: number,
|
||||
mode: CallMode,
|
||||
conversationId: string | UUIDStringType
|
||||
peerId: string | UUIDStringType
|
||||
) {
|
||||
return {
|
||||
callId,
|
||||
peerId: conversationId,
|
||||
peerId,
|
||||
ringerId: null,
|
||||
mode,
|
||||
type: CallType.Video,
|
||||
|
@ -221,4 +221,41 @@ describe('sql/getCallHistoryGroups', () => {
|
|||
assert.deepEqual(groups, [toGroup([call2])]);
|
||||
}
|
||||
});
|
||||
|
||||
it('should support legacy call history with conversation.id', async () => {
|
||||
const now = Date.now();
|
||||
|
||||
const conversationId = getUuid();
|
||||
|
||||
const conversation: ConversationAttributesType = {
|
||||
type: 'private',
|
||||
version: 0,
|
||||
id: conversationId,
|
||||
};
|
||||
|
||||
await saveConversation(conversation);
|
||||
|
||||
const call = {
|
||||
callId: '1',
|
||||
peerId: conversationId,
|
||||
ringerId: null,
|
||||
mode: CallMode.Direct,
|
||||
type: CallType.Video,
|
||||
direction: CallDirection.Incoming,
|
||||
timestamp: now,
|
||||
status: DirectCallStatus.Accepted,
|
||||
};
|
||||
|
||||
await saveCallHistory(call);
|
||||
|
||||
const groups = await getCallHistoryGroups(
|
||||
{
|
||||
status: CallHistoryFilterStatus.All,
|
||||
conversationIds: [conversation.id],
|
||||
},
|
||||
{ offset: 0, limit: 0 }
|
||||
);
|
||||
|
||||
assert.deepEqual(groups, [toGroup([call])]);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue