Make a method specially for cloning/copying. Refactor createListWithDescription().

This commit is contained in:
KotlinGeekDev
2025-10-09 19:55:40 +01:00
parent a8d01e3667
commit 3c622f544c
2 changed files with 50 additions and 49 deletions
@@ -191,11 +191,10 @@ class FollowSetFeedViewModel(
println("You are in read-only mode. Please login to make modifications.") println("You are in read-only mode. Please login to make modifications.")
} else { } else {
viewModelScope.launch(Dispatchers.IO) { viewModelScope.launch(Dispatchers.IO) {
PeopleListEvent.createListWithDescription( PeopleListEvent.copy(
dTag = UUID.randomUUID().toString(), dTag = UUID.randomUUID().toString(),
title = customCloneName ?: currentFollowSet.title, title = customCloneName ?: currentFollowSet.title,
description = customCloneDescription ?: currentFollowSet.description, description = customCloneDescription ?: currentFollowSet.description,
isPrivate = false,
firstPublicMembers = currentFollowSet.publicProfiles.toList(), firstPublicMembers = currentFollowSet.publicProfiles.toList(),
firstPrivateMembers = currentFollowSet.privateProfiles.toList(), firstPrivateMembers = currentFollowSet.privateProfiles.toList(),
signer = account.signer, signer = account.signer,
@@ -229,53 +229,55 @@ class PeopleListEvent(
createdAt: Long = TimeUtils.now(), createdAt: Long = TimeUtils.now(),
onReady: (PeopleListEvent) -> Unit, onReady: (PeopleListEvent) -> Unit,
) { ) {
if (description == null) { val newListTemplate =
val newListTemplate = build(
build( name = title,
name = title, publicPeople =
publicPeople = if (!isPrivate && firstPublicMembers.isNotEmpty()) {
if (!isPrivate && firstPublicMembers.isNotEmpty()) { firstPublicMembers.map { UserTag(pubKey = it) }
firstPublicMembers.map { UserTag(pubKey = it) } } else {
} else { emptyList()
emptyList() },
}, privatePeople =
privatePeople = if (isPrivate && firstPrivateMembers.isNotEmpty()) {
if (isPrivate && firstPrivateMembers.isNotEmpty()) { firstPrivateMembers.map { UserTag(pubKey = it) }
firstPrivateMembers.map { UserTag(pubKey = it) } } else {
} else { emptyList()
emptyList() },
}, signer = signer,
signer = signer, dTag = dTag,
dTag = dTag, createdAt = createdAt,
createdAt = createdAt, ) {
) if (description != null) addUnique(DescriptionTag.assemble(description))
val newList = signer.sign(newListTemplate) }
onReady(newList) val newList = signer.sign(newListTemplate)
} else { onReady(newList)
val event = }
build(
name = title, suspend fun copy(
publicPeople = dTag: String,
if (!isPrivate && firstPublicMembers.isNotEmpty()) { title: String,
firstPublicMembers.map { UserTag(pubKey = it) } description: String? = null,
} else { firstPublicMembers: List<String> = emptyList(),
emptyList() firstPrivateMembers: List<String> = emptyList(),
}, signer: NostrSigner,
privatePeople = createdAt: Long = TimeUtils.now(),
if (isPrivate && firstPrivateMembers.isNotEmpty()) { onReady: (PeopleListEvent) -> Unit,
firstPrivateMembers.map { UserTag(pubKey = it) } ) {
} else { val cloneTemplate =
emptyList() build(
}, name = title,
signer = signer, publicPeople = firstPublicMembers.map { UserTag(pubKey = it) },
dTag = dTag, privatePeople = firstPrivateMembers.map { UserTag(pubKey = it) },
createdAt = createdAt, signer = signer,
) { dTag = dTag,
addUnique(DescriptionTag.assemble(description)) createdAt = createdAt,
} ) {
val list = signer.sign(event) if (description != null) addUnique(DescriptionTag.assemble(description))
onReady(list) }
}
val listClone = signer.sign(cloneTemplate)
onReady(listClone)
} }
suspend fun createListWithUser( suspend fun createListWithUser(