Skip thread replies imported before the thread root
This commit is contained in:
parent
b5605e64f7
commit
bf683e84cf
@ -58,7 +58,8 @@ test('handling messages', async () => {
|
|||||||
mockedAxios.put.mockResolvedValue({ data: { event_id: 'test@matrix' } })
|
mockedAxios.put.mockResolvedValue({ data: { event_id: 'test@matrix' } })
|
||||||
mockedStorage.getRoomId.mockResolvedValue('testMatrixRoom')
|
mockedStorage.getRoomId.mockResolvedValue('testMatrixRoom')
|
||||||
mockedStorage.getUserId.mockResolvedValue('testMatrixUser')
|
mockedStorage.getUserId.mockResolvedValue('testMatrixUser')
|
||||||
mockedStorage.getMessageId.mockResolvedValue('testMatrixMessage')
|
mockedStorage.getMessageId.mockResolvedValueOnce(undefined) // For checking if the Message already exists
|
||||||
|
mockedStorage.getMessageId.mockResolvedValue('testMatrixMessage') // For checking the parent message
|
||||||
|
|
||||||
await expect(handle({ ...rcMessage, tmid: 'threadId' })).resolves.toBe(
|
await expect(handle({ ...rcMessage, tmid: 'threadId' })).resolves.toBe(
|
||||||
undefined
|
undefined
|
||||||
|
|||||||
@ -85,12 +85,20 @@ export async function createMessage(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function handle(rcMessage: RcMessage): Promise<void> {
|
export async function handle(rcMessage: RcMessage): Promise<void> {
|
||||||
|
log.info(`Parsing message with ID: ${rcMessage._id}`)
|
||||||
|
|
||||||
|
const matrixId = await getMessageId(rcMessage._id)
|
||||||
|
if (matrixId) {
|
||||||
|
log.debug(`Mapping exists: ${rcMessage._id} -> ${matrixId}`)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if (rcMessage.t) {
|
if (rcMessage.t) {
|
||||||
log.warn(`Message ${rcMessage._id} is of type ${rcMessage.t}, skipping.`)
|
log.warn(`Message ${rcMessage._id} is of type ${rcMessage.t}, skipping.`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const room_id = (await getRoomId(rcMessage.rid)) || ''
|
const room_id = await getRoomId(rcMessage.rid)
|
||||||
if (!room_id) {
|
if (!room_id) {
|
||||||
log.warn(
|
log.warn(
|
||||||
`Could not find room ${rcMessage.rid} for message ${rcMessage._id}, skipping.`
|
`Could not find room ${rcMessage.rid} for message ${rcMessage._id}, skipping.`
|
||||||
@ -98,7 +106,7 @@ export async function handle(rcMessage: RcMessage): Promise<void> {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const user_id = (await getUserId(rcMessage.u._id)) || ''
|
const user_id = await getUserId(rcMessage.u._id)
|
||||||
if (!user_id) {
|
if (!user_id) {
|
||||||
log.warn(
|
log.warn(
|
||||||
`Could not find author ${rcMessage.u.username} for message ${rcMessage._id}, skipping.`
|
`Could not find author ${rcMessage.u.username} for message ${rcMessage._id}, skipping.`
|
||||||
@ -110,7 +118,11 @@ export async function handle(rcMessage: RcMessage): Promise<void> {
|
|||||||
|
|
||||||
const ts = new Date(rcMessage.ts.$date).valueOf()
|
const ts = new Date(rcMessage.ts.$date).valueOf()
|
||||||
if (rcMessage.tmid) {
|
if (rcMessage.tmid) {
|
||||||
const event_id = (await getMessageId(rcMessage.tmid)) || ''
|
const event_id = await getMessageId(rcMessage.tmid)
|
||||||
|
if (!event_id) {
|
||||||
|
log.warn(`Related message ${rcMessage.tmid} missing, skipping.`)
|
||||||
|
return
|
||||||
|
} else {
|
||||||
matrixMessage['m.relates_to'] = {
|
matrixMessage['m.relates_to'] = {
|
||||||
rel_type: 'm.thread',
|
rel_type: 'm.thread',
|
||||||
event_id,
|
event_id,
|
||||||
@ -120,6 +132,7 @@ export async function handle(rcMessage: RcMessage): Promise<void> {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const event_id = await createMessage(
|
const event_id = await createMessage(
|
||||||
matrixMessage,
|
matrixMessage,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user