Skip to content

Commit 4673093

Browse files
authored
Merge pull request #102 from meetacy/#101-implement-meeting-batch-inviting
Implement meeting batch inviting
2 parents 5aa835f + e09e00c commit 4673093

File tree

5 files changed

+23
-26
lines changed

5 files changed

+23
-26
lines changed

api/api-ktor/src/commonMain/kotlin/app/meetacy/sdk/engine/ktor/requests/invitations/InvitationsEngine.kt

+6-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import app.meetacy.sdk.engine.requests.AcceptInvitationRequest
88
import app.meetacy.sdk.engine.requests.CancelInvitationRequest
99
import app.meetacy.sdk.engine.requests.CreateInvitationRequest
1010
import app.meetacy.sdk.engine.requests.DenyInvitationRequest
11+
import app.meetacy.sdk.types.invitation.Invitation
1112
import app.meetacy.sdk.types.serializable.invitation.InvitationIdSerializable
1213
import app.meetacy.sdk.types.serializable.invitation.InvitationSerializable
1314
import app.meetacy.sdk.types.serializable.invitation.serializable
@@ -17,6 +18,7 @@ import app.meetacy.sdk.types.serializable.meeting.serializable
1718
import app.meetacy.sdk.types.serializable.user.UserIdSerializable
1819
import app.meetacy.sdk.types.serializable.user.serializable
1920
import app.meetacy.sdk.types.url.Url
21+
import app.meetacy.sdk.types.user.UserId
2022
import io.ktor.client.HttpClient
2123
import io.ktor.client.call.body
2224
import io.ktor.client.request.post
@@ -32,12 +34,12 @@ internal class InvitationsEngine(
3234
@Serializable
3335
private data class CreateInvitationBody(
3436
val meetingId: MeetingIdSerializable,
35-
val userId: UserIdSerializable
37+
val usersIds: List<UserIdSerializable>
3638
)
3739

3840
private fun CreateInvitationRequest.toBody() = CreateInvitationBody(
3941
meetingId.serializable(),
40-
userId.serializable()
42+
usersIds.map(UserId::serializable)
4143
)
4244

4345
suspend fun create(
@@ -49,8 +51,8 @@ internal class InvitationsEngine(
4951
apiVersion(request.apiVersion)
5052
token(request.token)
5153
setBody(body)
52-
}.bodyAsSuccess<InvitationSerializable>()
53-
return CreateInvitationRequest.Response(response.type())
54+
}.bodyAsSuccess<List<InvitationSerializable>>()
55+
return CreateInvitationRequest.Response(response.map(InvitationSerializable::type))
5456
}
5557

5658
@Serializable

api/src/commonMain/kotlin/app/meetacy/sdk/engine/requests/CreateInvitationRequest.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import app.meetacy.sdk.types.user.UserId
77

88
public data class CreateInvitationRequest(
99
val token: Token,
10-
val userId: UserId,
10+
val usersIds: List<UserId>,
1111
val meetingId: MeetingId
1212
) : MeetacyRequest<CreateInvitationRequest.Response> {
13-
public data class Response(val invitation: Invitation)
13+
public data class Response(val invitations: List<Invitation>)
1414
}

api/src/commonMain/kotlin/app/meetacy/sdk/invitations/AuthorizedInvitationsApi.kt

+4-8
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,21 @@ package app.meetacy.sdk.invitations
22

33
import app.meetacy.sdk.AuthorizedMeetacyApi
44
import app.meetacy.sdk.types.auth.Token
5-
import app.meetacy.sdk.types.datetime.DateTime
65
import app.meetacy.sdk.types.invitation.InvitationId
76
import app.meetacy.sdk.types.meeting.MeetingId
8-
import app.meetacy.sdk.types.user.User
97
import app.meetacy.sdk.types.user.UserId
10-
import app.meetacy.sdk.users.UserRepository
11-
import kotlin.jvm.JvmName
128

139
public class AuthorizedInvitationsApi(private val api: AuthorizedMeetacyApi) {
1410
public val token: Token get() = api.token
1511
public val base: InvitationsApi = api.base.invitations
1612

1713
public suspend fun create(
18-
userId: UserId,
14+
usersIds: List<UserId>,
1915
meetingId: MeetingId
20-
): AuthorizedInvitationRepository {
21-
val invitation = base.create(token, userId, meetingId).data
16+
): List<AuthorizedInvitationRepository> {
17+
val invitations = base.create(token, usersIds, meetingId)
2218

23-
return AuthorizedInvitationRepository(invitation, api)
19+
return invitations.map { AuthorizedInvitationRepository(it.data, api) }
2420
}
2521

2622
public suspend fun accept(invitationId: InvitationId) {

api/src/commonMain/kotlin/app/meetacy/sdk/invitations/InvitationsApi.kt

+10-11
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,30 @@
11
package app.meetacy.sdk.invitations
22

33
import app.meetacy.sdk.MeetacyApi
4-
import app.meetacy.sdk.engine.requests.*
4+
import app.meetacy.sdk.engine.requests.AcceptInvitationRequest
5+
import app.meetacy.sdk.engine.requests.CancelInvitationRequest
6+
import app.meetacy.sdk.engine.requests.CreateInvitationRequest
7+
import app.meetacy.sdk.engine.requests.DenyInvitationRequest
58
import app.meetacy.sdk.types.auth.Token
6-
import app.meetacy.sdk.types.datetime.DateTime
79
import app.meetacy.sdk.types.invitation.InvitationId
810
import app.meetacy.sdk.types.meeting.MeetingId
9-
import app.meetacy.sdk.types.user.User
1011
import app.meetacy.sdk.types.user.UserId
11-
import app.meetacy.sdk.users.UserRepository
12-
import kotlin.jvm.JvmName
1312

1413
public class InvitationsApi(private val api: MeetacyApi) {
1514
public suspend fun create(
1615
token: Token,
17-
userId: UserId,
16+
usersIds: List<UserId>,
1817
meetingId: MeetingId
19-
): InvitationsRepository {
20-
val invitation = api.engine.execute(
18+
): List<InvitationsRepository> {
19+
val invitations = api.engine.execute(
2120
request = CreateInvitationRequest(
2221
token,
23-
userId,
22+
usersIds,
2423
meetingId
2524
)
26-
).invitation
25+
).invitations
2726

28-
return InvitationsRepository(invitation, api)
27+
return invitations.map { InvitationsRepository(it, api) }
2928
}
3029

3130
public suspend fun accept(

gradle/libs.versions.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
kotlin = "1.9.0"
44
ktor = "2.3.6"
5-
meetacySdk = "0.0.70"
5+
meetacySdk = "0.0.71"
66

77
# kotlinx
88
kotlinxCoroutines = "1.6.4"

0 commit comments

Comments
 (0)