From 58d92849fc84651240c3776db894de16d719b46e Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 10 Sep 2020 16:19:05 +0600 Subject: [PATCH] improve business post creating case --- .../post_creating/server/BusinessPostCreatingCase.kt | 12 +++++++----- .../core/publishing/PublishingKeyReceiver.kt | 2 ++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/business_cases/post_creating/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/business_cases/post_creating/server/BusinessPostCreatingCase.kt b/business_cases/post_creating/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/business_cases/post_creating/server/BusinessPostCreatingCase.kt index e25d62d6..93150188 100644 --- a/business_cases/post_creating/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/business_cases/post_creating/server/BusinessPostCreatingCase.kt +++ b/business_cases/post_creating/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/business_cases/post_creating/server/BusinessPostCreatingCase.kt @@ -11,17 +11,19 @@ class BusinessPostCreatingCase( private val postsRepo: PostsRepo, private val contentRepo: ContentRepo, private val publishingRegistrar: PublishingRegistrar, - private val postKeyGenerator: PostKeyGenerator = { _, _ -> uuid4().toString() } + private val postKeyGenerator: PostKeyGenerator = { _, _ -> uuid4().toString() }, + private val publishingKeyReceiverGetter: PublishingKeyReceiverGetter ) : PostCreatingCase { override suspend fun createPost(postContent: List, triggerId: TriggerId?): RegisteredPost? { val content = postContent.mapNotNull { contentRepo.registerContent(it) } val post = postsRepo.createPost(SimplePost(content.map { it.id })) ?: return null triggerId ?.let { - publishingRegistrar.registerTriggerForPost( - postKeyGenerator(post.id, triggerId), - post.id - ) + val key = postKeyGenerator(post.id, triggerId) + + if (publishingRegistrar.registerTriggerForPost(key, post.id)) { + publishingKeyReceiverGetter(it) ?.acceptKey(post.id, key) + } } return post diff --git a/publishing/api/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/publishing/PublishingKeyReceiver.kt b/publishing/api/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/publishing/PublishingKeyReceiver.kt index 405f6bc5..12af993f 100644 --- a/publishing/api/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/publishing/PublishingKeyReceiver.kt +++ b/publishing/api/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/publishing/PublishingKeyReceiver.kt @@ -2,6 +2,8 @@ package com.insanusmokrassar.postssystem.core.publishing import com.insanusmokrassar.postssystem.core.post.PostId +typealias PublishingKeyReceiverGetter = suspend (TriggerId) -> PublishingKeyReceiver? + interface PublishingKeyReceiver : Trigger { suspend fun acceptKey(postId: PostId, publishingKey: TriggerControlKey) }