diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/FollowSetFeedViewModel.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/FollowSetFeedViewModel.kt index 33c3f52a4..b1cf1e8c9 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/FollowSetFeedViewModel.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/FollowSetFeedViewModel.kt @@ -191,11 +191,10 @@ class FollowSetFeedViewModel( println("You are in read-only mode. Please login to make modifications.") } else { viewModelScope.launch(Dispatchers.IO) { - PeopleListEvent.createListWithDescription( + PeopleListEvent.copy( dTag = UUID.randomUUID().toString(), title = customCloneName ?: currentFollowSet.title, description = customCloneDescription ?: currentFollowSet.description, - isPrivate = false, firstPublicMembers = currentFollowSet.publicProfiles.toList(), firstPrivateMembers = currentFollowSet.privateProfiles.toList(), signer = account.signer, diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip51Lists/peopleList/PeopleListEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip51Lists/peopleList/PeopleListEvent.kt index 05215ef58..13e71223c 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip51Lists/peopleList/PeopleListEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip51Lists/peopleList/PeopleListEvent.kt @@ -229,53 +229,55 @@ class PeopleListEvent( createdAt: Long = TimeUtils.now(), onReady: (PeopleListEvent) -> Unit, ) { - if (description == null) { - val newListTemplate = - build( - name = title, - publicPeople = - if (!isPrivate && firstPublicMembers.isNotEmpty()) { - firstPublicMembers.map { UserTag(pubKey = it) } - } else { - emptyList() - }, - privatePeople = - if (isPrivate && firstPrivateMembers.isNotEmpty()) { - firstPrivateMembers.map { UserTag(pubKey = it) } - } else { - emptyList() - }, - signer = signer, - dTag = dTag, - createdAt = createdAt, - ) - val newList = signer.sign(newListTemplate) - onReady(newList) - } else { - val event = - build( - name = title, - publicPeople = - if (!isPrivate && firstPublicMembers.isNotEmpty()) { - firstPublicMembers.map { UserTag(pubKey = it) } - } else { - emptyList() - }, - privatePeople = - if (isPrivate && firstPrivateMembers.isNotEmpty()) { - firstPrivateMembers.map { UserTag(pubKey = it) } - } else { - emptyList() - }, - signer = signer, - dTag = dTag, - createdAt = createdAt, - ) { - addUnique(DescriptionTag.assemble(description)) - } - val list = signer.sign(event) - onReady(list) - } + val newListTemplate = + build( + name = title, + publicPeople = + if (!isPrivate && firstPublicMembers.isNotEmpty()) { + firstPublicMembers.map { UserTag(pubKey = it) } + } else { + emptyList() + }, + privatePeople = + if (isPrivate && firstPrivateMembers.isNotEmpty()) { + firstPrivateMembers.map { UserTag(pubKey = it) } + } else { + emptyList() + }, + signer = signer, + dTag = dTag, + createdAt = createdAt, + ) { + if (description != null) addUnique(DescriptionTag.assemble(description)) + } + val newList = signer.sign(newListTemplate) + onReady(newList) + } + + suspend fun copy( + dTag: String, + title: String, + description: String? = null, + firstPublicMembers: List = emptyList(), + firstPrivateMembers: List = emptyList(), + signer: NostrSigner, + createdAt: Long = TimeUtils.now(), + onReady: (PeopleListEvent) -> Unit, + ) { + val cloneTemplate = + build( + name = title, + publicPeople = firstPublicMembers.map { UserTag(pubKey = it) }, + privatePeople = firstPrivateMembers.map { UserTag(pubKey = it) }, + signer = signer, + dTag = dTag, + createdAt = createdAt, + ) { + if (description != null) addUnique(DescriptionTag.assemble(description)) + } + + val listClone = signer.sign(cloneTemplate) + onReady(listClone) } suspend fun createListWithUser(