mirror of https://github.com/usbharu/Hideout.git
38 lines
1.3 KiB
Kotlin
38 lines
1.3 KiB
Kotlin
package dev.usbharu.hideout.service.api
|
|
|
|
import dev.usbharu.hideout.domain.model.ap.Note
|
|
import dev.usbharu.hideout.domain.model.hideout.entity.Visibility
|
|
import dev.usbharu.hideout.query.FollowerQueryService
|
|
import dev.usbharu.hideout.query.activitypub.NoteQueryService
|
|
import dev.usbharu.hideout.service.core.Transaction
|
|
import org.springframework.stereotype.Service
|
|
|
|
@Service
|
|
class NoteApApiServiceImpl(
|
|
private val noteQueryService: NoteQueryService,
|
|
private val followerQueryService: FollowerQueryService,
|
|
private val transaction: Transaction
|
|
) : NoteApApiService {
|
|
override suspend fun getNote(postId: Long, userId: Long?): Note? = transaction.transaction {
|
|
val findById = noteQueryService.findById(postId)
|
|
when (findById.second.visibility) {
|
|
Visibility.PUBLIC, Visibility.UNLISTED -> {
|
|
return@transaction findById.first
|
|
}
|
|
|
|
Visibility.FOLLOWERS -> {
|
|
if (userId == null) {
|
|
return@transaction null
|
|
}
|
|
|
|
if (followerQueryService.alreadyFollow(findById.second.userId, userId).not()) {
|
|
return@transaction null
|
|
}
|
|
return@transaction findById.first
|
|
}
|
|
|
|
Visibility.DIRECT -> return@transaction null
|
|
}
|
|
}
|
|
}
|