From 80a24e3774b6d9a5d12a54e06fe0c247324a98dc Mon Sep 17 00:00:00 2001 From: Bnyro Date: Mon, 15 Aug 2022 10:16:53 +0200 Subject: [PATCH] limit search history size --- .../com/github/libretube/api/ResettableLazy.kt | 2 +- .../com/github/libretube/db/DatabaseHelper.kt | 15 +++++++++++++++ .../github/libretube/fragments/PlayerFragment.kt | 2 +- .../libretube/fragments/SearchResultFragment.kt | 13 +++++-------- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/github/libretube/api/ResettableLazy.kt b/app/src/main/java/com/github/libretube/api/ResettableLazy.kt index 432dff009..129e27de6 100644 --- a/app/src/main/java/com/github/libretube/api/ResettableLazy.kt +++ b/app/src/main/java/com/github/libretube/api/ResettableLazy.kt @@ -1,7 +1,7 @@ package com.github.libretube.util -import kotlin.reflect.KProperty import java.util.* +import kotlin.reflect.KProperty class ResettableLazyManager { // we synchronize to make sure the timing of a reset() call and new inits do not collide diff --git a/app/src/main/java/com/github/libretube/db/DatabaseHelper.kt b/app/src/main/java/com/github/libretube/db/DatabaseHelper.kt index d56c6e94f..0c162dc3a 100644 --- a/app/src/main/java/com/github/libretube/db/DatabaseHelper.kt +++ b/app/src/main/java/com/github/libretube/db/DatabaseHelper.kt @@ -1,5 +1,6 @@ package com.github.libretube.db +import com.github.libretube.db.obj.SearchHistoryItem import com.github.libretube.db.obj.WatchHistoryItem import com.github.libretube.db.obj.WatchPosition import com.github.libretube.obj.Streams @@ -59,4 +60,18 @@ object DatabaseHelper { ) }.start() } + + fun addToSearchHistory(searchHistoryItem: SearchHistoryItem) { + Thread { + DatabaseHolder.db.searchHistoryDao().insertAll(searchHistoryItem) + val maxHistorySize = 20 + + // delete the first watch history entry if the limit is reached + val searchHistory = DatabaseHolder.db.searchHistoryDao().getAll() + if (searchHistory.size > maxHistorySize) { + DatabaseHolder.db.searchHistoryDao() + .delete(searchHistory.first()) + } + }.start() + } } diff --git a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt index bd3dc3f4f..95fdbb90b 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -95,7 +95,6 @@ import com.google.android.exoplayer2.upstream.DefaultHttpDataSource import com.google.android.exoplayer2.util.RepeatModeUtil import com.google.android.exoplayer2.video.VideoSize import com.google.android.material.dialog.MaterialAlertDialogBuilder -import kotlin.math.abs import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -103,6 +102,7 @@ import org.chromium.net.CronetEngine import retrofit2.HttpException import java.io.IOException import java.util.concurrent.Executors +import kotlin.math.abs class PlayerFragment : BaseFragment() { diff --git a/app/src/main/java/com/github/libretube/fragments/SearchResultFragment.kt b/app/src/main/java/com/github/libretube/fragments/SearchResultFragment.kt index 8019812e9..c088720ea 100644 --- a/app/src/main/java/com/github/libretube/fragments/SearchResultFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/SearchResultFragment.kt @@ -11,11 +11,10 @@ import com.github.libretube.R import com.github.libretube.adapters.SearchAdapter import com.github.libretube.api.RetrofitInstance import com.github.libretube.databinding.FragmentSearchResultBinding -import com.github.libretube.db.DatabaseHolder +import com.github.libretube.db.DatabaseHelper import com.github.libretube.db.obj.SearchHistoryItem import com.github.libretube.extensions.BaseFragment import com.github.libretube.extensions.TAG -import com.github.libretube.extensions.await import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.preferences.PreferenceKeys import com.github.libretube.util.hideKeyboard @@ -135,13 +134,11 @@ class SearchResultFragment : BaseFragment() { val searchHistoryEnabled = PreferenceHelper.getBoolean(PreferenceKeys.SEARCH_HISTORY_TOGGLE, true) if (searchHistoryEnabled && query != "") { - Thread { - DatabaseHolder.db.searchHistoryDao().insertAll( - SearchHistoryItem( - query = query - ) + DatabaseHelper.addToSearchHistory( + SearchHistoryItem( + query = query ) - }.await() + ) } } }