mirror of https://github.com/usbharu/Hideout.git
feat: ミュート等ができるように
This commit is contained in:
parent
a939dd5f30
commit
1245165516
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship.acceptfollowrequest
|
||||
|
||||
data class AcceptFollowRequest(val sourceActorId: Long)
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship.acceptfollowrequest
|
||||
|
||||
import dev.usbharu.hideout.core.application.relationship.block.UserBlockApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.AbstractApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.CommandExecutor
|
||||
import dev.usbharu.hideout.core.application.shared.Transaction
|
||||
import dev.usbharu.hideout.core.application.shared.UserDetailGettableCommandExecutor
|
||||
import dev.usbharu.hideout.core.domain.model.actor.ActorId
|
||||
import dev.usbharu.hideout.core.domain.model.actor.ActorRepository
|
||||
import dev.usbharu.hideout.core.domain.model.relationship.RelationshipRepository
|
||||
import dev.usbharu.hideout.core.domain.model.userdetails.UserDetailRepository
|
||||
import org.slf4j.LoggerFactory
|
||||
import org.springframework.stereotype.Service
|
||||
|
||||
@Service
|
||||
class UserAcceptFollowRequestApplicationService(
|
||||
private val relationshipRepository: RelationshipRepository,
|
||||
transaction: Transaction,
|
||||
private val actorRepository: ActorRepository,
|
||||
private val userDetailRepository: UserDetailRepository,
|
||||
) :
|
||||
AbstractApplicationService<AcceptFollowRequest, Unit>(transaction, logger) {
|
||||
companion object {
|
||||
private val logger = LoggerFactory.getLogger(UserBlockApplicationService::class.java)
|
||||
}
|
||||
|
||||
override suspend fun internalExecute(command: AcceptFollowRequest, executor: CommandExecutor) {
|
||||
require(executor is UserDetailGettableCommandExecutor)
|
||||
|
||||
val userDetail = userDetailRepository.findById(executor.userDetailId)!!
|
||||
val actor = actorRepository.findById(userDetail.actorId)!!
|
||||
|
||||
val targetId = ActorId(command.sourceActorId)
|
||||
|
||||
val relationship = relationshipRepository.findByActorIdAndTargetId(targetId, actor.id)
|
||||
?: throw Exception("Follow request not found")
|
||||
|
||||
relationship.acceptFollowRequest()
|
||||
|
||||
relationshipRepository.save(relationship)
|
||||
}
|
||||
}
|
|
@ -14,6 +14,6 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship
|
||||
package dev.usbharu.hideout.core.application.relationship.block
|
||||
|
||||
data class Block(val targetActorId: Long)
|
|
@ -14,7 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship
|
||||
package dev.usbharu.hideout.core.application.relationship.block
|
||||
|
||||
import dev.usbharu.hideout.core.application.shared.AbstractApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.CommandExecutor
|
|
@ -14,6 +14,6 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship
|
||||
package dev.usbharu.hideout.core.application.relationship.followrequest
|
||||
|
||||
data class FollowRequest(val targetActorId: Long)
|
|
@ -14,7 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship
|
||||
package dev.usbharu.hideout.core.application.relationship.followrequest
|
||||
|
||||
import dev.usbharu.hideout.core.application.shared.AbstractApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.CommandExecutor
|
|
@ -14,6 +14,6 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship
|
||||
package dev.usbharu.hideout.core.application.relationship.get
|
||||
|
||||
data class GetRelationship(val targetActorId: Long)
|
|
@ -14,7 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship
|
||||
package dev.usbharu.hideout.core.application.relationship.get
|
||||
|
||||
import dev.usbharu.hideout.core.application.shared.AbstractApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.CommandExecutor
|
|
@ -14,7 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship
|
||||
package dev.usbharu.hideout.core.application.relationship.get
|
||||
|
||||
import dev.usbharu.hideout.core.domain.model.actorinstancerelationship.ActorInstanceRelationship
|
||||
import dev.usbharu.hideout.core.domain.model.relationship.Relationship
|
||||
|
@ -38,7 +38,7 @@ data class Relationship(
|
|||
relationship: Relationship,
|
||||
relationship2: Relationship,
|
||||
actorInstanceRelationship: ActorInstanceRelationship,
|
||||
): dev.usbharu.hideout.core.application.relationship.Relationship {
|
||||
): dev.usbharu.hideout.core.application.relationship.get.Relationship {
|
||||
return Relationship(
|
||||
relationship.actorId.id,
|
||||
relationship.targetActorId.id,
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship.mute
|
||||
|
||||
data class Mute(val targetActorId: Long)
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship.mute
|
||||
|
||||
import dev.usbharu.hideout.core.application.relationship.block.UserBlockApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.AbstractApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.CommandExecutor
|
||||
import dev.usbharu.hideout.core.application.shared.Transaction
|
||||
import dev.usbharu.hideout.core.application.shared.UserDetailGettableCommandExecutor
|
||||
import dev.usbharu.hideout.core.domain.model.actor.ActorId
|
||||
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.RelationshipRepository
|
||||
import dev.usbharu.hideout.core.domain.model.userdetails.UserDetailRepository
|
||||
import org.slf4j.LoggerFactory
|
||||
import org.springframework.stereotype.Service
|
||||
|
||||
@Service
|
||||
class UserMuteApplicationService(
|
||||
private val relationshipRepository: RelationshipRepository,
|
||||
transaction: Transaction,
|
||||
private val actorRepository: ActorRepository,
|
||||
private val userDetailRepository: UserDetailRepository,
|
||||
) :
|
||||
AbstractApplicationService<Mute, Unit>(transaction, logger) {
|
||||
companion object {
|
||||
private val logger = LoggerFactory.getLogger(UserBlockApplicationService::class.java)
|
||||
}
|
||||
|
||||
override suspend fun internalExecute(command: Mute, executor: CommandExecutor) {
|
||||
require(executor is UserDetailGettableCommandExecutor)
|
||||
|
||||
val userDetail = userDetailRepository.findById(executor.userDetailId)!!
|
||||
val actor = actorRepository.findById(userDetail.actorId)!!
|
||||
|
||||
val targetId = ActorId(command.targetActorId)
|
||||
val relationship = relationshipRepository.findByActorIdAndTargetId(actor.id, targetId) ?: Relationship.default(
|
||||
actor.id,
|
||||
targetId
|
||||
)
|
||||
|
||||
relationship.mute()
|
||||
|
||||
relationshipRepository.save(relationship)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship.rejectfollowrequest
|
||||
|
||||
data class RejectFollowRequest(val sourceActorId: Long)
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship.rejectfollowrequest
|
||||
|
||||
import dev.usbharu.hideout.core.application.relationship.block.UserBlockApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.AbstractApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.CommandExecutor
|
||||
import dev.usbharu.hideout.core.application.shared.Transaction
|
||||
import dev.usbharu.hideout.core.application.shared.UserDetailGettableCommandExecutor
|
||||
import dev.usbharu.hideout.core.domain.model.actor.ActorId
|
||||
import dev.usbharu.hideout.core.domain.model.actor.ActorRepository
|
||||
import dev.usbharu.hideout.core.domain.model.relationship.RelationshipRepository
|
||||
import dev.usbharu.hideout.core.domain.model.userdetails.UserDetailRepository
|
||||
import org.slf4j.LoggerFactory
|
||||
import org.springframework.stereotype.Service
|
||||
|
||||
@Service
|
||||
class UserRejectFollowRequestApplicationService(
|
||||
private val relationshipRepository: RelationshipRepository,
|
||||
transaction: Transaction,
|
||||
private val actorRepository: ActorRepository,
|
||||
private val userDetailRepository: UserDetailRepository,
|
||||
) :
|
||||
AbstractApplicationService<RejectFollowRequest, Unit>(transaction, logger) {
|
||||
companion object {
|
||||
private val logger = LoggerFactory.getLogger(UserBlockApplicationService::class.java)
|
||||
}
|
||||
|
||||
override suspend fun internalExecute(command: RejectFollowRequest, executor: CommandExecutor) {
|
||||
require(executor is UserDetailGettableCommandExecutor)
|
||||
|
||||
val userDetail = userDetailRepository.findById(executor.userDetailId)!!
|
||||
val actor = actorRepository.findById(userDetail.actorId)!!
|
||||
|
||||
val targetId = ActorId(command.sourceActorId)
|
||||
|
||||
val relationship = relationshipRepository.findByActorIdAndTargetId(targetId, actor.id)
|
||||
?: throw Exception("Follow request not found")
|
||||
|
||||
relationship.rejectFollowRequest()
|
||||
|
||||
relationshipRepository.save(relationship)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship.removefromfollowers
|
||||
|
||||
data class RemoveFromFollowers(val targetActorId: Long)
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship.removefromfollowers
|
||||
|
||||
import dev.usbharu.hideout.core.application.relationship.block.UserBlockApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.AbstractApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.CommandExecutor
|
||||
import dev.usbharu.hideout.core.application.shared.Transaction
|
||||
import dev.usbharu.hideout.core.application.shared.UserDetailGettableCommandExecutor
|
||||
import dev.usbharu.hideout.core.domain.model.actor.ActorId
|
||||
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.RelationshipRepository
|
||||
import dev.usbharu.hideout.core.domain.model.userdetails.UserDetailRepository
|
||||
import org.slf4j.LoggerFactory
|
||||
import org.springframework.stereotype.Service
|
||||
|
||||
@Service
|
||||
class UserRemoveFromFollowersApplicationService(
|
||||
private val relationshipRepository: RelationshipRepository,
|
||||
transaction: Transaction,
|
||||
private val actorRepository: ActorRepository,
|
||||
private val userDetailRepository: UserDetailRepository,
|
||||
) :
|
||||
AbstractApplicationService<RemoveFromFollowers, Unit>(transaction, logger) {
|
||||
companion object {
|
||||
private val logger = LoggerFactory.getLogger(UserBlockApplicationService::class.java)
|
||||
}
|
||||
|
||||
override suspend fun internalExecute(command: RemoveFromFollowers, executor: CommandExecutor) {
|
||||
require(executor is UserDetailGettableCommandExecutor)
|
||||
|
||||
val userDetail = userDetailRepository.findById(executor.userDetailId)!!
|
||||
val actor = actorRepository.findById(userDetail.actorId)!!
|
||||
|
||||
val targetId = ActorId(command.targetActorId)
|
||||
val relationship = relationshipRepository.findByActorIdAndTargetId(targetId, actor.id) ?: Relationship.default(
|
||||
targetId,
|
||||
actor.id
|
||||
)
|
||||
|
||||
relationship.unfollow()
|
||||
|
||||
relationshipRepository.save(relationship)
|
||||
}
|
||||
}
|
|
@ -14,6 +14,6 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship
|
||||
package dev.usbharu.hideout.core.application.relationship.unblock
|
||||
|
||||
data class Unblock(val targetActorId: Long)
|
|
@ -14,8 +14,9 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship
|
||||
package dev.usbharu.hideout.core.application.relationship.unblock
|
||||
|
||||
import dev.usbharu.hideout.core.application.relationship.block.UserBlockApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.AbstractApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.CommandExecutor
|
||||
import dev.usbharu.hideout.core.application.shared.Transaction
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship.unfollow
|
||||
|
||||
data class Unfollow(val targetActorId: Long)
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship.unfollow
|
||||
|
||||
import dev.usbharu.hideout.core.application.relationship.block.UserBlockApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.AbstractApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.CommandExecutor
|
||||
import dev.usbharu.hideout.core.application.shared.Transaction
|
||||
import dev.usbharu.hideout.core.application.shared.UserDetailGettableCommandExecutor
|
||||
import dev.usbharu.hideout.core.domain.model.actor.ActorId
|
||||
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.RelationshipRepository
|
||||
import dev.usbharu.hideout.core.domain.model.userdetails.UserDetailRepository
|
||||
import org.slf4j.LoggerFactory
|
||||
import org.springframework.stereotype.Service
|
||||
|
||||
@Service
|
||||
class UserUnfollowApplicationService(
|
||||
private val relationshipRepository: RelationshipRepository,
|
||||
transaction: Transaction,
|
||||
private val actorRepository: ActorRepository,
|
||||
private val userDetailRepository: UserDetailRepository,
|
||||
) :
|
||||
AbstractApplicationService<Unfollow, Unit>(transaction, logger) {
|
||||
companion object {
|
||||
private val logger = LoggerFactory.getLogger(UserBlockApplicationService::class.java)
|
||||
}
|
||||
|
||||
override suspend fun internalExecute(command: Unfollow, executor: CommandExecutor) {
|
||||
require(executor is UserDetailGettableCommandExecutor)
|
||||
|
||||
val userDetail = userDetailRepository.findById(executor.userDetailId)!!
|
||||
val actor = actorRepository.findById(userDetail.actorId)!!
|
||||
|
||||
val targetId = ActorId(command.targetActorId)
|
||||
val relationship = relationshipRepository.findByActorIdAndTargetId(actor.id, targetId) ?: Relationship.default(
|
||||
actor.id,
|
||||
targetId
|
||||
)
|
||||
|
||||
relationship.unfollow()
|
||||
|
||||
relationshipRepository.save(relationship)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship.unmute
|
||||
|
||||
data class Unmute(val targetActorId: Long)
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* Copyright (C) 2024 usbharu
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package dev.usbharu.hideout.core.application.relationship.unmute
|
||||
|
||||
import dev.usbharu.hideout.core.application.relationship.block.UserBlockApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.AbstractApplicationService
|
||||
import dev.usbharu.hideout.core.application.shared.CommandExecutor
|
||||
import dev.usbharu.hideout.core.application.shared.Transaction
|
||||
import dev.usbharu.hideout.core.application.shared.UserDetailGettableCommandExecutor
|
||||
import dev.usbharu.hideout.core.domain.model.actor.ActorId
|
||||
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.RelationshipRepository
|
||||
import dev.usbharu.hideout.core.domain.model.userdetails.UserDetailRepository
|
||||
import org.slf4j.LoggerFactory
|
||||
import org.springframework.stereotype.Service
|
||||
|
||||
@Service
|
||||
class UserUnmuteApplicationService(
|
||||
private val relationshipRepository: RelationshipRepository,
|
||||
transaction: Transaction,
|
||||
private val actorRepository: ActorRepository,
|
||||
private val userDetailRepository: UserDetailRepository,
|
||||
) :
|
||||
AbstractApplicationService<Unmute, Unit>(transaction, logger) {
|
||||
companion object {
|
||||
private val logger = LoggerFactory.getLogger(UserBlockApplicationService::class.java)
|
||||
}
|
||||
|
||||
override suspend fun internalExecute(command: Unmute, executor: CommandExecutor) {
|
||||
require(executor is UserDetailGettableCommandExecutor)
|
||||
|
||||
val userDetail = userDetailRepository.findById(executor.userDetailId)!!
|
||||
val actor = actorRepository.findById(userDetail.actorId)!!
|
||||
|
||||
val targetId = ActorId(command.targetActorId)
|
||||
val relationship = relationshipRepository.findByActorIdAndTargetId(actor.id, targetId) ?: Relationship.default(
|
||||
actor.id,
|
||||
targetId
|
||||
)
|
||||
|
||||
relationship.unmute()
|
||||
|
||||
relationshipRepository.save(relationship)
|
||||
}
|
||||
}
|
|
@ -18,14 +18,32 @@ package dev.usbharu.hideout.mastodon.interfaces.api
|
|||
|
||||
import dev.usbharu.hideout.core.application.actor.GetUserDetail
|
||||
import dev.usbharu.hideout.core.application.actor.GetUserDetailApplicationService
|
||||
import dev.usbharu.hideout.core.application.relationship.*
|
||||
import dev.usbharu.hideout.core.application.relationship.acceptfollowrequest.AcceptFollowRequest
|
||||
import dev.usbharu.hideout.core.application.relationship.acceptfollowrequest.UserAcceptFollowRequestApplicationService
|
||||
import dev.usbharu.hideout.core.application.relationship.block.Block
|
||||
import dev.usbharu.hideout.core.application.relationship.block.UserBlockApplicationService
|
||||
import dev.usbharu.hideout.core.application.relationship.followrequest.FollowRequest
|
||||
import dev.usbharu.hideout.core.application.relationship.followrequest.UserFollowRequestApplicationService
|
||||
import dev.usbharu.hideout.core.application.relationship.get.GetRelationship
|
||||
import dev.usbharu.hideout.core.application.relationship.get.GetRelationshipApplicationService
|
||||
import dev.usbharu.hideout.core.application.relationship.mute.Mute
|
||||
import dev.usbharu.hideout.core.application.relationship.mute.UserMuteApplicationService
|
||||
import dev.usbharu.hideout.core.application.relationship.rejectfollowrequest.RejectFollowRequest
|
||||
import dev.usbharu.hideout.core.application.relationship.rejectfollowrequest.UserRejectFollowRequestApplicationService
|
||||
import dev.usbharu.hideout.core.application.relationship.removefromfollowers.RemoveFromFollowers
|
||||
import dev.usbharu.hideout.core.application.relationship.removefromfollowers.UserRemoveFromFollowersApplicationService
|
||||
import dev.usbharu.hideout.core.application.relationship.unblock.Unblock
|
||||
import dev.usbharu.hideout.core.application.relationship.unblock.UserUnblockApplicationService
|
||||
import dev.usbharu.hideout.core.application.relationship.unfollow.Unfollow
|
||||
import dev.usbharu.hideout.core.application.relationship.unfollow.UserUnfollowApplicationService
|
||||
import dev.usbharu.hideout.core.application.relationship.unmute.Unmute
|
||||
import dev.usbharu.hideout.core.application.relationship.unmute.UserUnmuteApplicationService
|
||||
import dev.usbharu.hideout.core.infrastructure.springframework.oauth2.Oauth2CommandExecutor
|
||||
import dev.usbharu.hideout.core.infrastructure.springframework.oauth2.Oauth2CommandExecutorFactory
|
||||
import dev.usbharu.hideout.mastodon.application.accounts.GetAccount
|
||||
import dev.usbharu.hideout.mastodon.application.accounts.GetAccountApplicationService
|
||||
import dev.usbharu.hideout.mastodon.interfaces.api.generated.AccountApi
|
||||
import dev.usbharu.hideout.mastodon.interfaces.api.generated.model.*
|
||||
import dev.usbharu.hideout.mastodon.interfaces.api.generated.model.Relationship
|
||||
import org.springframework.http.ResponseEntity
|
||||
import org.springframework.stereotype.Controller
|
||||
|
||||
|
@ -38,7 +56,15 @@ class SpringAccountApi(
|
|||
private val getRelationshipApplicationService: GetRelationshipApplicationService,
|
||||
private val userBlockApplicationService: UserBlockApplicationService,
|
||||
private val userUnblockApplicationService: UserUnblockApplicationService,
|
||||
private val userMuteApplicationService: UserMuteApplicationService,
|
||||
private val userUnmuteApplicationService: UserUnmuteApplicationService,
|
||||
private val userAcceptFollowRequestApplicationService: UserAcceptFollowRequestApplicationService,
|
||||
private val userRejectFollowRequestApplicationService: UserRejectFollowRequestApplicationService,
|
||||
private val userRemoveFromFollowersApplicationService: UserRemoveFromFollowersApplicationService,
|
||||
private val userUnfollowApplicationService: UserUnfollowApplicationService,
|
||||
) : AccountApi {
|
||||
|
||||
|
||||
override suspend fun apiV1AccountsIdBlockPost(id: String): ResponseEntity<Relationship> {
|
||||
val executor = oauth2CommandExecutorFactory.getCommandExecutor()
|
||||
userBlockApplicationService.execute(Block(id.toLong()), executor)
|
||||
|
@ -90,11 +116,19 @@ class SpringAccountApi(
|
|||
}
|
||||
|
||||
override suspend fun apiV1AccountsIdMutePost(id: String): ResponseEntity<Relationship> {
|
||||
return super.apiV1AccountsIdMutePost(id)
|
||||
val executor = oauth2CommandExecutorFactory.getCommandExecutor()
|
||||
userMuteApplicationService.execute(
|
||||
Mute(id.toLong()), executor
|
||||
)
|
||||
return fetchRelationship(id, executor)
|
||||
}
|
||||
|
||||
override suspend fun apiV1AccountsIdRemoveFromFollowersPost(id: String): ResponseEntity<Relationship> {
|
||||
return super.apiV1AccountsIdRemoveFromFollowersPost(id)
|
||||
val executor = oauth2CommandExecutorFactory.getCommandExecutor()
|
||||
userRemoveFromFollowersApplicationService.execute(
|
||||
RemoveFromFollowers(id.toLong()), executor
|
||||
)
|
||||
return fetchRelationship(id, executor)
|
||||
}
|
||||
|
||||
override suspend fun apiV1AccountsIdUnblockPost(id: String): ResponseEntity<Relationship> {
|
||||
|
@ -106,11 +140,19 @@ class SpringAccountApi(
|
|||
}
|
||||
|
||||
override suspend fun apiV1AccountsIdUnfollowPost(id: String): ResponseEntity<Relationship> {
|
||||
return super.apiV1AccountsIdUnfollowPost(id)
|
||||
val executor = oauth2CommandExecutorFactory.getCommandExecutor()
|
||||
userUnfollowApplicationService.execute(
|
||||
Unfollow(id.toLong()), executor
|
||||
)
|
||||
return fetchRelationship(id, executor)
|
||||
}
|
||||
|
||||
override suspend fun apiV1AccountsIdUnmutePost(id: String): ResponseEntity<Relationship> {
|
||||
return super.apiV1AccountsIdUnmutePost(id)
|
||||
val executor = oauth2CommandExecutorFactory.getCommandExecutor()
|
||||
userUnmuteApplicationService.execute(
|
||||
Unmute(id.toLong()), executor
|
||||
)
|
||||
return fetchRelationship(id, executor)
|
||||
}
|
||||
|
||||
override suspend fun apiV1AccountsPost(accountsCreateRequest: AccountsCreateRequest): ResponseEntity<Unit> {
|
||||
|
@ -174,11 +216,19 @@ class SpringAccountApi(
|
|||
}
|
||||
|
||||
override suspend fun apiV1FollowRequestsAccountIdAuthorizePost(accountId: String): ResponseEntity<Relationship> {
|
||||
return super.apiV1FollowRequestsAccountIdAuthorizePost(accountId)
|
||||
val executor = oauth2CommandExecutorFactory.getCommandExecutor()
|
||||
userAcceptFollowRequestApplicationService.execute(
|
||||
AcceptFollowRequest(accountId.toLong()), executor
|
||||
)
|
||||
return fetchRelationship(accountId, executor)
|
||||
}
|
||||
|
||||
override suspend fun apiV1FollowRequestsAccountIdRejectPost(accountId: String): ResponseEntity<Relationship> {
|
||||
return super.apiV1FollowRequestsAccountIdRejectPost(accountId)
|
||||
val executor = oauth2CommandExecutorFactory.getCommandExecutor()
|
||||
userRejectFollowRequestApplicationService.execute(
|
||||
RejectFollowRequest(accountId.toLong()), executor
|
||||
)
|
||||
return fetchRelationship(accountId, executor)
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue