From 3d190a738834db21217591bcb840981f27a48595 Mon Sep 17 00:00:00 2001 From: William Casarin Date: Thu, 1 Feb 2024 11:05:16 -0800 Subject: [PATCH] purple: fix crash in account cache otherwise there is contention and tends to crash Fixes: f06b88213985 ("purple: consolidate UserBadgeInfo with Account") Changelog-Fixed: Fix crash when accessing cached purple accounts Signed-off-by: William Casarin --- damus/Models/Purple/DamusPurple.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/damus/Models/Purple/DamusPurple.swift b/damus/Models/Purple/DamusPurple.swift index 26c82611..09008a0a 100644 --- a/damus/Models/Purple/DamusPurple.swift +++ b/damus/Models/Purple/DamusPurple.swift @@ -10,6 +10,8 @@ import Foundation class DamusPurple: StoreObserverDelegate { let settings: UserSettingsStore let keypair: Keypair + + @MainActor var account_cache: [Pubkey: Account] init(settings: UserSettingsStore, keypair: Keypair) { @@ -49,6 +51,7 @@ class DamusPurple: StoreObserverDelegate { return false } + @MainActor func get_maybe_cached_account(pubkey: Pubkey) async throws -> Account? { if let account = self.account_cache[pubkey] { return account @@ -56,6 +59,7 @@ class DamusPurple: StoreObserverDelegate { return try await fetch_account(pubkey: pubkey) } + @MainActor func fetch_account(pubkey: Pubkey) async throws -> Account? { guard let data = try await self.get_account_data(pubkey: pubkey) , let account = Account.from(json_data: data) else {