Skip to content

Commit

Permalink
Fix search provider fallback mechanism
Browse files Browse the repository at this point in the history
  • Loading branch information
suphon-t committed Oct 12, 2019
1 parent 8e12c5a commit d291aa9
Showing 1 changed file with 20 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package ch.deletescape.lawnchair.globalsearch

import android.content.Context
import android.support.v7.view.ContextThemeWrapper
import ch.deletescape.lawnchair.LawnchairConfig
import ch.deletescape.lawnchair.colors.ColorEngine
import ch.deletescape.lawnchair.ensureOnMainThread
import ch.deletescape.lawnchair.globalsearch.providers.*
Expand Down Expand Up @@ -52,22 +53,31 @@ class SearchProviderController(private val context: Context) : ColorEngine.OnCol
get() {
val curr = prefs.searchProvider
if (cache == null || cached != curr) {
cache = null
try {
val constructor = Class.forName(prefs.searchProvider).getConstructor(Context::class.java)
val themedContext = ContextThemeWrapper(context, themeRes)
val prov = constructor.newInstance(themedContext) as SearchProvider
if (prov.isAvailable) {
cache = prov
}
} catch (ignored: Exception) { }
if (cache == null) cache = GoogleSearchProvider(context)
cache = createProvider(prefs.searchProvider) {
val lcConfig = LawnchairConfig.getInstance(context)
createProvider(lcConfig.defaultSearchProvider) { AppSearchSearchProvider(context) }
}
cached = cache!!::class.java.name
if (prefs.searchProvider != cached) {
prefs.searchProvider = cached
}
notifyProviderChanged()
}
return cache!!
}

private fun createProvider(providerName: String, fallback: () -> SearchProvider): SearchProvider {
try {
val constructor = Class.forName(providerName).getConstructor(Context::class.java)
val themedContext = ContextThemeWrapper(context, themeRes)
val prov = constructor.newInstance(themedContext) as SearchProvider
if (prov.isAvailable) {
return prov
}
} catch (ignored: Exception) { }
return fallback()
}

override fun onColorChange(resolveInfo: ColorEngine.ResolveInfo) {
if (resolveInfo.key == ColorEngine.Resolvers.ACCENT) {
cache = null
Expand Down

0 comments on commit d291aa9

Please sign in to comment.