Add exception handling for already joined users

This commit is contained in:
Henrik Hüttemann 2023-09-14 16:12:04 +02:00
parent ba900e913f
commit 86e938794b
No known key found for this signature in database
GPG Key ID: 9F7BD10E0A8A111E
2 changed files with 23 additions and 7 deletions

View File

@ -1,5 +1,6 @@
import { expect, jest, test } from '@jest/globals'
import axios from 'axios'
import { Entity, entities } from '../Entities'
import { IdMapping } from '../entity/IdMapping'
import * as storage from '../helpers/storage'
import { SessionOptions } from '../helpers/synapse'
@ -9,15 +10,14 @@ import {
RcRoom,
RcRoomTypes,
acceptInvitation,
createDirectChatMemberships,
createMapping,
getCreator,
getFilteredMembers,
inviteMember,
mapRoom,
createDirectChatMemberships,
registerRoom,
} from './rooms'
import { Entity, entities } from '../Entities'
jest.mock('axios')
const mockedAxios = axios as jest.Mocked<typeof axios>

View File

@ -1,3 +1,4 @@
import { AxiosError } from 'axios'
import { Entity, entities } from '../Entities'
import { IdMapping } from '../entity/IdMapping'
import log from '../helpers/logger'
@ -160,11 +161,26 @@ export async function inviteMember(
creatorSessionOptions: SessionOptions | object
): Promise<void> {
log.http(`Invite member ${inviteeId}`)
await axios.post(
`/_matrix/client/v3/rooms/${roomId}/invite`,
{ user_id: inviteeId },
creatorSessionOptions
)
try {
await axios.post(
`/_matrix/client/v3/rooms/${roomId}/invite`,
{ user_id: inviteeId },
creatorSessionOptions
)
} catch (error) {
if (
error instanceof AxiosError &&
error.response &&
error.response.data.errcode === 'M_FORBIDDEN' &&
error.response.data.error === `${inviteeId} is already in the room.`
) {
log.debug(
`User ${inviteeId} is already in room ${roomId}, probably because this user created the room as a fallback.`
)
} else {
throw error
}
}
}
export async function acceptInvitation(