From 8f02558a8dc400140a63e097789ca911e54514ac Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 28 Jul 2022 18:22:16 +0200 Subject: [PATCH] Add caching Signed-off-by: Andy Scherzinger --- .../talk/ui/theme/ServerThemeProviderImpl.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/ui/theme/ServerThemeProviderImpl.kt b/app/src/main/java/com/nextcloud/talk/ui/theme/ServerThemeProviderImpl.kt index 7becbda62..389785cd4 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/theme/ServerThemeProviderImpl.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/theme/ServerThemeProviderImpl.kt @@ -2,7 +2,9 @@ * Nextcloud Talk application * * @author Álvaro Brey + * @author Andy Scherzinger * Copyright (C) 2022 Álvaro Brey + * Copyright (C) 2022 Andy Scherzinger * Copyright (C) 2022 Nextcloud GmbH * * This program is free software: you can redistribute it and/or modify @@ -26,15 +28,16 @@ import android.content.Context import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.models.json.capabilities.Capabilities import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew +import java.util.concurrent.ConcurrentHashMap import javax.inject.Inject -// TODO cache theme, keyed by server url -// TODO reload UI when account changes internal class ServerThemeProviderImpl @Inject constructor( private val context: Context, private val userProvider: CurrentUserProviderNew -) : - ServerThemeProvider { +) : ServerThemeProvider { + + val themeCache: ConcurrentHashMap = ConcurrentHashMap() + // TODO move this logic to currentUserProvider or something private var _currentUser: User? = null private val currentUser: User @@ -55,7 +58,10 @@ internal class ServerThemeProviderImpl @Inject constructor( } override fun getServerThemeForUser(user: User): ServerTheme { - return getServerThemeForCapabilities(user.capabilities) + if (user.baseUrl != null && !themeCache.containsKey(user.baseUrl)) { + themeCache[user.baseUrl!!] = getServerThemeForCapabilities(user.capabilities) + } + return themeCache[user.baseUrl]!! } override fun getServerThemeForCurrentUser(): ServerTheme {