diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Channel.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Channel.kt index 9c4d69bd16..fd604bfbe1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Channel.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Channel.kt @@ -23,7 +23,6 @@ package com.vitorpamplona.amethyst.model import androidx.compose.runtime.Stable import com.vitorpamplona.amethyst.ui.dal.DefaultFeedOrder import com.vitorpamplona.amethyst.ui.note.toShortenHex -import com.vitorpamplona.ammolite.relays.BundledUpdate import com.vitorpamplona.ammolite.relays.RelayBriefInfoCache import com.vitorpamplona.quartz.experimental.ephemChat.chat.RoomId import com.vitorpamplona.quartz.nip01Core.core.HexKey @@ -42,7 +41,6 @@ import com.vitorpamplona.quartz.nip28PublicChat.base.ChannelData import com.vitorpamplona.quartz.nip53LiveActivities.streaming.LiveActivitiesEvent import com.vitorpamplona.quartz.utils.Hex import com.vitorpamplona.quartz.utils.LargeCache -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow @Stable @@ -291,7 +289,6 @@ abstract class Channel( } } else { if (flowSet != null && flowSet?.isInUse() == false) { - flowSet?.destroy() flowSet = null } } @@ -322,28 +319,15 @@ class ChannelFlowSet( fun isInUse(): Boolean = metadata.hasObservers() || notes.hasObservers() - - fun destroy() { - metadata.destroy() - notes.destroy() - } } class ChannelFlow( val channel: Channel, ) { - // Refreshes observers in batches. - private val bundler = BundledUpdate(300, Dispatchers.IO) val stateFlow = MutableStateFlow(ChannelState(channel)) fun invalidateData() { - bundler.invalidate { - stateFlow.emit(ChannelState(channel)) - } - } - - fun destroy() { - bundler.cancel() + stateFlow.tryEmit(ChannelState(channel)) } fun hasObservers() = stateFlow.subscriptionCount.value > 0 diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt index e5eafb808d..c827973ff5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -2355,12 +2355,6 @@ object LocalCache : ILocalCache { removeFromCache(childrenToBeRemoved) - toBeRemoved.forEach { - it.replyTo?.forEach { masterNote -> - masterNote.clearEOSE() // allows reloading of these events - } - } - if (toBeRemoved.size > 1) { println("PRUNE: ${toBeRemoved.size} thread replies removed.") } @@ -2373,7 +2367,6 @@ object LocalCache : ILocalCache { masterNote.removeReaction(note) masterNote.removeZap(note) masterNote.removeReport(note) - masterNote.clearEOSE() // allows reloading of these events if needed } val noteEvent = note.event diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Note.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Note.kt index 2b120730ee..a77ca38791 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Note.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Note.kt @@ -25,11 +25,9 @@ import androidx.compose.runtime.Stable import com.vitorpamplona.amethyst.launchAndWaitAll import com.vitorpamplona.amethyst.service.checkNotInMainThread import com.vitorpamplona.amethyst.service.firstFullCharOrEmoji -import com.vitorpamplona.amethyst.service.relays.EOSERelayList import com.vitorpamplona.amethyst.service.replace import com.vitorpamplona.amethyst.tryAndWait import com.vitorpamplona.amethyst.ui.note.toShortenHex -import com.vitorpamplona.ammolite.relays.BundledUpdate import com.vitorpamplona.ammolite.relays.RelayBriefInfoCache import com.vitorpamplona.quartz.experimental.bounties.addedRewardValue import com.vitorpamplona.quartz.experimental.bounties.hasAdditionalReward @@ -76,7 +74,6 @@ import com.vitorpamplona.quartz.utils.Hex import com.vitorpamplona.quartz.utils.TimeUtils import com.vitorpamplona.quartz.utils.containsAny import kotlinx.coroutines.CancellationException -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.flatMapLatest @@ -162,8 +159,6 @@ open class Note( var relays = listOf() private set - var lastReactionsDownloadTime: EOSERelayList = EOSERelayList() - fun id() = Hex.decode(idHex) open fun idNote() = toNEvent() @@ -298,7 +293,6 @@ open class Note( zapPayments = mapOf() zapsAmount = BigDecimal.ZERO relays = listOf() - lastReactionsDownloadTime.clear() if (repliesChanged) flowSet?.replies?.invalidateData() if (reactionsChanged) flowSet?.reactions?.invalidateData() @@ -386,11 +380,10 @@ open class Note( zapRequest: Note, zap: Note?, ) { - checkNotInMainThread() - if (zaps[zapRequest] == null) { val inserted = innerAddZap(zapRequest, zap) - if (inserted) { + println("AABBCC addZap $inserted") + if (inserted && zap != null) { updateZapTotal() flowSet?.zaps?.invalidateData() } @@ -830,10 +823,6 @@ open class Note( zapsAmount = BigDecimal.ZERO } - fun clearEOSE() { - lastReactionsDownloadTime.clear() - } - fun isHiddenFor(accountChoices: Account.LiveHiddenUsers): Boolean { val thisEvent = event ?: return false val hash = thisEvent.pubKey.hashCode() @@ -886,7 +875,6 @@ open class Note( } } else { if (flowSet != null && flowSet?.isInUse() == false) { - flowSet?.destroy() flowSet = null } } @@ -986,18 +974,6 @@ class NoteFlowSet( zaps.hasObservers() || ots.hasObservers() || edits.hasObservers() - - fun destroy() { - metadata.destroy() - reports.destroy() - relays.destroy() - reactions.destroy() - boosts.destroy() - replies.destroy() - zaps.destroy() - ots.destroy() - edits.destroy() - } } @Stable @@ -1005,18 +981,10 @@ class NoteBundledRefresherFlow( val note: Note, ) { // Refreshes observers in batches. - // TODO: Replace the bundler for .sample - private val bundler = BundledUpdate(500, Dispatchers.IO) val stateFlow = MutableStateFlow(NoteState(note)) - fun destroy() { - bundler.cancel() - } - fun invalidateData() { - bundler.invalidate { - stateFlow.emit(NoteState(note)) - } + stateFlow.tryEmit(NoteState(note)) } fun hasObservers() = stateFlow.subscriptionCount.value > 0 diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/User.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/User.kt index caaa5a95c9..8d2165304f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/User.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/User.kt @@ -24,7 +24,6 @@ import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable import com.vitorpamplona.amethyst.service.checkNotInMainThread import com.vitorpamplona.amethyst.ui.note.toShortenHex -import com.vitorpamplona.ammolite.relays.BundledUpdate import com.vitorpamplona.ammolite.relays.RelayBriefInfoCache.RelayBriefInfo import com.vitorpamplona.quartz.lightning.Lud06 import com.vitorpamplona.quartz.nip01Core.core.HexKey @@ -48,7 +47,6 @@ import com.vitorpamplona.quartz.utils.DualCase import com.vitorpamplona.quartz.utils.Hex import com.vitorpamplona.quartz.utils.containsAny import kotlinx.collections.immutable.persistentSetOf -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import java.math.BigDecimal @@ -397,7 +395,6 @@ class User( } } else { if (flowSet != null && flowSet?.isInUse() == false) { - flowSet?.destroy() flowSet = null } } @@ -444,19 +441,6 @@ class UserFlowSet( zaps.hasObservers() || bookmarks.hasObservers() || statuses.hasObservers() - - fun destroy() { - metadata.destroy() - relays.destroy() - follows.destroy() - followers.destroy() - reports.destroy() - messages.destroy() - relayInfo.destroy() - zaps.destroy() - bookmarks.destroy() - statuses.destroy() - } } @Immutable @@ -470,22 +454,10 @@ data class RelayInfo( class UserBundledRefresherFlow( val user: User, ) { - // Refreshes observers in batches. - private val bundler = BundledUpdate(500, Dispatchers.IO) val stateFlow = MutableStateFlow(UserState(user)) - fun destroy() { - bundler.cancel() - } - fun invalidateData() { - checkNotInMainThread() - - bundler.invalidate { - checkNotInMainThread() - - stateFlow.emit(UserState(user)) - } + stateFlow.tryEmit(UserState(user)) } fun hasObservers() = stateFlow.subscriptionCount.value > 0