1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 05:47:05 +09:00

DROID-3659 Multiplayer | Invite link without approve (#2407)

This commit is contained in:
Konstantin Ivanov 2025-05-20 16:39:00 +02:00 committed by GitHub
parent b43fff9472
commit 300709aaa2
Signed by: github
GPG key ID: B5690EEEBB952194
17 changed files with 375 additions and 133 deletions

View file

@ -38,6 +38,7 @@ import com.anytypeio.anytype.core_models.membership.EmailVerificationStatus
import com.anytypeio.anytype.core_models.membership.GetPaymentUrlResponse
import com.anytypeio.anytype.core_models.membership.Membership
import com.anytypeio.anytype.core_models.membership.MembershipTierData
import com.anytypeio.anytype.core_models.multiplayer.InviteType
import com.anytypeio.anytype.core_models.multiplayer.SpaceInviteLink
import com.anytypeio.anytype.core_models.multiplayer.SpaceInviteView
import com.anytypeio.anytype.core_models.multiplayer.SpaceMemberPermissions
@ -872,8 +873,16 @@ class BlockMiddleware(
middleware.makeSpaceShareable(space = space)
}
override suspend fun generateSpaceInviteLink(space: SpaceId): SpaceInviteLink {
return middleware.generateSpaceInviteLink(space)
override suspend fun generateSpaceInviteLink(
space: SpaceId,
inviteType: InviteType,
permissions: SpaceMemberPermissions
): SpaceInviteLink {
return middleware.generateSpaceInviteLink(
space = space,
inviteType = inviteType,
permissions = permissions
)
}
override suspend fun revokeSpaceInviteLink(space: SpaceId) {

View file

@ -47,6 +47,7 @@ import com.anytypeio.anytype.core_models.membership.EmailVerificationStatus
import com.anytypeio.anytype.core_models.membership.GetPaymentUrlResponse
import com.anytypeio.anytype.core_models.membership.Membership
import com.anytypeio.anytype.core_models.membership.MembershipTierData
import com.anytypeio.anytype.core_models.multiplayer.InviteType
import com.anytypeio.anytype.core_models.multiplayer.SpaceInviteLink
import com.anytypeio.anytype.core_models.multiplayer.SpaceInviteView
import com.anytypeio.anytype.core_models.multiplayer.SpaceMemberPermissions
@ -70,6 +71,7 @@ import com.anytypeio.anytype.middleware.mappers.toCoreLinkPreview
import com.anytypeio.anytype.middleware.mappers.toCoreModel
import com.anytypeio.anytype.middleware.mappers.toCoreModelSearchResults
import com.anytypeio.anytype.middleware.mappers.toCoreModels
import com.anytypeio.anytype.middleware.mappers.toMiddleware
import com.anytypeio.anytype.middleware.mappers.toMiddlewareModel
import com.anytypeio.anytype.middleware.mappers.toMw
import com.anytypeio.anytype.middleware.mappers.toPayload
@ -2388,16 +2390,22 @@ class Middleware @Inject constructor(
}
@Throws(Exception::class)
fun generateSpaceInviteLink(space: SpaceId) : SpaceInviteLink {
fun generateSpaceInviteLink(
space: SpaceId,
inviteType: InviteType,
permissions: SpaceMemberPermissions
): SpaceInviteLink {
val request = Rpc.Space.InviteGenerate.Request(
spaceId = space.id
spaceId = space.id,
inviteType = inviteType.toMiddleware(),
permissions = permissions.toMw()
)
logRequestIfDebug(request)
val (response, time) = measureTimedValue { service.spaceInviteGenerate(request) }
logResponseIfDebug(response, time)
return SpaceInviteLink(
contentId = response.inviteCid,
fileKey= response.inviteFileKey
fileKey = response.inviteFileKey
)
}
@ -2511,7 +2519,8 @@ class Middleware @Inject constructor(
space = SpaceId(response.spaceId),
creatorName = response.creatorName,
spaceName = response.spaceName,
spaceIconContentId = response.spaceIconCid
spaceIconContentId = response.spaceIconCid,
withoutApprove = response.inviteType == anytype.model.InviteType.WithoutApprove
)
}

View file

@ -114,4 +114,6 @@ typealias MSyncStatusUpdate = Space.SyncStatus.Update
typealias MDeviceNetworkType = anytype.model.DeviceNetworkType
typealias MLinkPreview = anytype.model.LinkPreview
typealias MLinkPreview = anytype.model.LinkPreview
typealias MInviteType = anytype.model.InviteType

View file

@ -18,6 +18,7 @@ import com.anytypeio.anytype.core_models.Relation
import com.anytypeio.anytype.core_models.chats.Chat
import com.anytypeio.anytype.core_models.membership.MembershipPaymentMethod
import com.anytypeio.anytype.core_models.membership.NameServiceNameType
import com.anytypeio.anytype.core_models.multiplayer.InviteType
import com.anytypeio.anytype.core_models.multiplayer.SpaceMemberPermissions
@ -637,3 +638,9 @@ fun DeviceNetworkType.mw(): MDeviceNetworkType = when(this) {
DeviceNetworkType.NOT_CONNECTED -> MDeviceNetworkType.NOT_CONNECTED
}
fun InviteType.toMiddleware(): MInviteType = when (this) {
InviteType.MEMBER -> MInviteType.Member
InviteType.GUEST -> MInviteType.Guest
InviteType.WITHOUT_APPROVE -> MInviteType.WithoutApprove
}