Applying Memory trimming service to all logged in accounts.

This commit is contained in:
Vitor Pamplona
2025-09-12 10:09:25 -04:00
parent cb3bc605bc
commit 3628091511
3 changed files with 9 additions and 8 deletions

View File

@@ -178,9 +178,6 @@ class AppModules(
// Caches all events in Memory
val cache: LocalCache = LocalCache
// Organizes cache clearing
val trimmingService = MemoryTrimmingService(cache)
// Provides a relay pool
val client: INostrClient = NostrClient(websocketBuilder, applicationDefaultScope)
@@ -215,6 +212,9 @@ class AppModules(
client = client,
)
// Organizes cache clearing
val trimmingService = MemoryTrimmingService(cache)
// as new accounts are loaded, updates the state of the TorRelaySettings, which produces new TorRelayEvaluator
// and reconnects relays if the configuration has been changed.
val accountsTorStateConnector = AccountsTorStateConnector(accountsCache, torEvaluatorFlow, applicationDefaultScope)
@@ -283,7 +283,8 @@ class AppModules(
fun trim() {
applicationDefaultScope.launch {
trimmingService.run(null, LocalPreferences.allSavedAccounts())
val loggedIn = accountsCache.accounts.value.values
trimmingService.run(loggedIn, LocalPreferences.allSavedAccounts())
}
}
}

View File

@@ -43,7 +43,7 @@ abstract class Channel : NotesGatherer {
fun changesFlow(): MutableSharedFlow<ListChange<Note>> {
val current = changesFlow.get()
if (current != null) return current
val new = MutableSharedFlow<ListChange<Note>>(0, 100, BufferOverflow.DROP_OLDEST)
val new = MutableSharedFlow<ListChange<Note>>(0, 10, BufferOverflow.DROP_OLDEST)
changesFlow = WeakReference(new)
return new
}

View File

@@ -33,13 +33,13 @@ class MemoryTrimmingService(
var isTrimmingMemoryMutex = AtomicBoolean(false)
private suspend fun doTrim(
account: Account? = null,
account: Collection<Account>,
otherAccounts: List<AccountInfo>,
) {
cache.cleanMemory()
cache.cleanObservers()
account?.let {
account.forEach {
cache.pruneHiddenEvents(it)
cache.pruneHiddenMessages(it)
}
@@ -53,7 +53,7 @@ class MemoryTrimmingService(
}
suspend fun run(
account: Account?,
account: Collection<Account>,
otherAccounts: List<AccountInfo>,
) {
if (isTrimmingMemoryMutex.compareAndSet(false, true)) {