diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 715caa47b..d22a681a6 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -14,7 +14,7 @@ object Versions { const val document_file_version: String = "1.0.1" - const val org_jetbrains_kotlinx_kotlinx_coroutines: String = "1.4.1" + const val org_jetbrains_kotlinx_kotlinx_coroutines: String = "1.7.3" const val androidx_test_espresso: String = "3.5.1" diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/reader/ZimFileReader.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/reader/ZimFileReader.kt index 71f3e5d3b..591a4211b 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/reader/ZimFileReader.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/reader/ZimFileReader.kt @@ -212,6 +212,7 @@ class ZimFileReader constructor( fun getRandomArticleUrl(): String? = jniKiwixReader.randomEntry.path + @Suppress("UnreachableCode") fun load(uri: String): InputStream? { val extension = uri.substringAfterLast(".") if (assetExtensions.any { it == extension }) { diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/search/viewmodel/SearchViewModel.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/search/viewmodel/SearchViewModel.kt index f5dd76ec7..575633be0 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/search/viewmodel/SearchViewModel.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/search/viewmodel/SearchViewModel.kt @@ -22,11 +22,10 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.channels.Channel -import kotlinx.coroutines.channels.ConflatedBroadcastChannel import kotlinx.coroutines.channels.consumeEach import kotlinx.coroutines.channels.trySendBlocking import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.receiveAsFlow @@ -86,8 +85,8 @@ class SearchViewModel @Inject constructor( private val _effects = Channel>() val effects = _effects.receiveAsFlow() val actions = Channel(Channel.UNLIMITED) - private val filter = ConflatedBroadcastChannel("") - private val searchOrigin = ConflatedBroadcastChannel(FromWebView) + private val filter = MutableStateFlow("") + private val searchOrigin = MutableStateFlow(FromWebView) init { viewModelScope.launch { reducer() } @@ -97,10 +96,10 @@ class SearchViewModel @Inject constructor( @Suppress("DEPRECATION") private suspend fun reducer() { combine( - filter.asFlow(), + filter.asStateFlow(), searchResults(), recentSearchRoomDao.recentSearches(zimReaderContainer.id), - searchOrigin.asFlow() + searchOrigin.asStateFlow() ) { searchTerm, searchResultsWithTerm, recentResults, searchOrigin -> SearchState( searchTerm, searchResultsWithTerm, @@ -111,7 +110,7 @@ class SearchViewModel @Inject constructor( } @Suppress("DEPRECATION") - private fun searchResults() = filter.asFlow() + private fun searchResults() = filter.asStateFlow() .mapLatest { SearchResultsWithTerm( it, @@ -126,7 +125,7 @@ class SearchViewModel @Inject constructor( is OnItemClick -> saveSearchAndOpenItem(it.searchListItem, false) is OnOpenInNewTabClick -> saveSearchAndOpenItem(it.searchListItem, true) is OnItemLongClick -> showDeleteDialog(it) - is Filter -> filter.trySendBlocking(it.term) + is Filter -> filter.tryEmit(it.term) ClickedSearchInText -> searchPreviousScreenWhenStateIsValid() is ConfirmedDelete -> deleteItemAndShowToast(it) is CreatedWithArguments -> _effects.trySend( @@ -148,7 +147,7 @@ class SearchViewModel @Inject constructor( ) ).isSuccess - is ScreenWasStartedFrom -> searchOrigin.trySendBlocking(it.searchOrigin) + is ScreenWasStartedFrom -> searchOrigin.tryEmit(it.searchOrigin) } } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/ServerUtils.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/ServerUtils.kt index 7273b02b1..16d22a6d3 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/ServerUtils.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/ServerUtils.kt @@ -58,8 +58,7 @@ object ServerUtils { val ipRegex = "(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" .toRegex() - val ipMatch = ipRegex.find(ip, 0) ?: throw IllegalArgumentException() - return ipMatch.value + return ipRegex.find(ip, 0)?.value ?: throw IllegalArgumentException() } @JvmStatic fun getSocketAddress(): String =