From 79b650da380fb7b58adb44003dde695dde530fd7 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Tue, 25 Aug 2020 18:21:30 +0300 Subject: [PATCH] LocalEtebaseCache: make sure we always return the same item. --- .../com/etesync/syncadapter/EtebaseLocalCache.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/etesync/syncadapter/EtebaseLocalCache.kt b/app/src/main/java/com/etesync/syncadapter/EtebaseLocalCache.kt index 6c1477dd..f619fea8 100644 --- a/app/src/main/java/com/etesync/syncadapter/EtebaseLocalCache.kt +++ b/app/src/main/java/com/etesync/syncadapter/EtebaseLocalCache.kt @@ -4,6 +4,7 @@ import android.content.Context import com.etebase.client.* import com.etebase.client.Collection import java.io.File +import java.util.HashMap /* File structure: @@ -83,8 +84,19 @@ class EtebaseLocalCache private constructor(context: Context, username: String) } companion object { + private val localCacheCache: HashMap = HashMap() + fun getInstance(context: Context, username: String): EtebaseLocalCache { - return EtebaseLocalCache(context, username) + synchronized(localCacheCache) { + val cached = localCacheCache.get(username) + if (cached != null) { + return cached + } else { + val ret = EtebaseLocalCache(context, username) + localCacheCache.set(username, ret) + return ret + } + } } fun getEtebase(context: Context, settings: AccountSettings): Account {