mirror of https://github.com/usbharu/Hideout.git
feat: 通知を送信するように
This commit is contained in:
parent
cd0a659cd6
commit
e7a6f52ef1
|
@ -3,8 +3,11 @@ package dev.usbharu.hideout.core.service.reaction
|
||||||
import dev.usbharu.hideout.activitypub.service.activity.like.APReactionService
|
import dev.usbharu.hideout.activitypub.service.activity.like.APReactionService
|
||||||
import dev.usbharu.hideout.core.domain.exception.resource.DuplicateException
|
import dev.usbharu.hideout.core.domain.exception.resource.DuplicateException
|
||||||
import dev.usbharu.hideout.core.domain.model.emoji.Emoji
|
import dev.usbharu.hideout.core.domain.model.emoji.Emoji
|
||||||
|
import dev.usbharu.hideout.core.domain.model.post.PostRepository
|
||||||
import dev.usbharu.hideout.core.domain.model.reaction.Reaction
|
import dev.usbharu.hideout.core.domain.model.reaction.Reaction
|
||||||
import dev.usbharu.hideout.core.domain.model.reaction.ReactionRepository
|
import dev.usbharu.hideout.core.domain.model.reaction.ReactionRepository
|
||||||
|
import dev.usbharu.hideout.core.service.notification.NotificationService
|
||||||
|
import dev.usbharu.hideout.core.service.notification.ReactionNotificationRequest
|
||||||
import org.slf4j.Logger
|
import org.slf4j.Logger
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
|
@ -12,7 +15,9 @@ import org.springframework.stereotype.Service
|
||||||
@Service
|
@Service
|
||||||
class ReactionServiceImpl(
|
class ReactionServiceImpl(
|
||||||
private val reactionRepository: ReactionRepository,
|
private val reactionRepository: ReactionRepository,
|
||||||
private val apReactionService: APReactionService
|
private val apReactionService: APReactionService,
|
||||||
|
private val notificationService: NotificationService,
|
||||||
|
private val postRepository: PostRepository
|
||||||
) : ReactionService {
|
) : ReactionService {
|
||||||
override suspend fun receiveReaction(
|
override suspend fun receiveReaction(
|
||||||
emoji: Emoji,
|
emoji: Emoji,
|
||||||
|
@ -23,7 +28,16 @@ class ReactionServiceImpl(
|
||||||
reactionRepository.deleteByPostIdAndActorId(postId, actorId)
|
reactionRepository.deleteByPostIdAndActorId(postId, actorId)
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
reactionRepository.save(Reaction(reactionRepository.generateId(), emoji, postId, actorId))
|
val reaction = reactionRepository.save(Reaction(reactionRepository.generateId(), emoji, postId, actorId))
|
||||||
|
|
||||||
|
notificationService.publishNotify(
|
||||||
|
ReactionNotificationRequest(
|
||||||
|
postRepository.findById(postId)!!.actorId,
|
||||||
|
actorId,
|
||||||
|
postId,
|
||||||
|
reaction.id
|
||||||
|
)
|
||||||
|
)
|
||||||
} catch (_: DuplicateException) {
|
} catch (_: DuplicateException) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,6 +63,10 @@ class ReactionServiceImpl(
|
||||||
val reaction = Reaction(reactionRepository.generateId(), emoji, postId, actorId)
|
val reaction = Reaction(reactionRepository.generateId(), emoji, postId, actorId)
|
||||||
reactionRepository.save(reaction)
|
reactionRepository.save(reaction)
|
||||||
apReactionService.reaction(reaction)
|
apReactionService.reaction(reaction)
|
||||||
|
|
||||||
|
val id = postRepository.findById(postId)!!.actorId
|
||||||
|
|
||||||
|
notificationService.publishNotify(ReactionNotificationRequest(id, actorId, postId, reaction.id))
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun removeReaction(actorId: Long, postId: Long) {
|
override suspend fun removeReaction(actorId: Long, postId: Long) {
|
||||||
|
|
|
@ -12,6 +12,9 @@ import dev.usbharu.hideout.core.domain.model.actor.ActorRepository
|
||||||
import dev.usbharu.hideout.core.domain.model.relationship.Relationship
|
import dev.usbharu.hideout.core.domain.model.relationship.Relationship
|
||||||
import dev.usbharu.hideout.core.domain.model.relationship.RelationshipRepository
|
import dev.usbharu.hideout.core.domain.model.relationship.RelationshipRepository
|
||||||
import dev.usbharu.hideout.core.service.follow.SendFollowDto
|
import dev.usbharu.hideout.core.service.follow.SendFollowDto
|
||||||
|
import dev.usbharu.hideout.core.service.notification.FollowNotificationRequest
|
||||||
|
import dev.usbharu.hideout.core.service.notification.FollowRequestNotificationRequest
|
||||||
|
import dev.usbharu.hideout.core.service.notification.NotificationService
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
|
|
||||||
|
@ -24,7 +27,8 @@ class RelationshipServiceImpl(
|
||||||
private val apSendAcceptService: ApSendAcceptService,
|
private val apSendAcceptService: ApSendAcceptService,
|
||||||
private val apSendRejectService: ApSendRejectService,
|
private val apSendRejectService: ApSendRejectService,
|
||||||
private val apSendUndoService: APSendUndoService,
|
private val apSendUndoService: APSendUndoService,
|
||||||
private val actorRepository: ActorRepository
|
private val actorRepository: ActorRepository,
|
||||||
|
private val notificationService: NotificationService
|
||||||
) : RelationshipService {
|
) : RelationshipService {
|
||||||
override suspend fun followRequest(actorId: Long, targetId: Long) {
|
override suspend fun followRequest(actorId: Long, targetId: Long) {
|
||||||
logger.info("START Follow Request userId: {} targetId: {}", actorId, targetId)
|
logger.info("START Follow Request userId: {} targetId: {}", actorId, targetId)
|
||||||
|
@ -82,6 +86,8 @@ class RelationshipServiceImpl(
|
||||||
val target = actorRepository.findById(targetId) ?: throw UserNotFoundException.withId(targetId)
|
val target = actorRepository.findById(targetId) ?: throw UserNotFoundException.withId(targetId)
|
||||||
if (target.locked.not()) {
|
if (target.locked.not()) {
|
||||||
acceptFollowRequest(targetId, actorId)
|
acceptFollowRequest(targetId, actorId)
|
||||||
|
} else {
|
||||||
|
notificationService.publishNotify(FollowRequestNotificationRequest(targetId, actorId))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -185,6 +191,7 @@ class RelationshipServiceImpl(
|
||||||
if (isRemoteActor(remoteActor)) {
|
if (isRemoteActor(remoteActor)) {
|
||||||
apSendAcceptService.sendAcceptFollow(user, remoteActor)
|
apSendAcceptService.sendAcceptFollow(user, remoteActor)
|
||||||
}
|
}
|
||||||
|
notificationService.publishNotify(FollowNotificationRequest(actorId, targetId))
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun rejectFollowRequest(actorId: Long, targetId: Long) {
|
override suspend fun rejectFollowRequest(actorId: Long, targetId: Long) {
|
||||||
|
|
Loading…
Reference in New Issue