diff --git a/app/src/main/java/org/kiwix/kiwixmobile/intro/CustomPageIndicator.kt b/app/src/main/java/org/kiwix/kiwixmobile/intro/CustomPageIndicator.kt index cc5b7baf0..51593b568 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/intro/CustomPageIndicator.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/intro/CustomPageIndicator.kt @@ -49,6 +49,7 @@ import kotlin.math.min * We refactor this java file to kotlin file */ +@Suppress("UnsafeCallOnNullableType") class CustomPageIndicator @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, @@ -114,10 +115,10 @@ class CustomPageIndicator @JvmOverloads constructor( fun setViewPager(viewPager: ViewPager) { this.viewPager = viewPager viewPager.addOnPageChangeListener(this) - setPageCount(viewPager.adapter!!.count) - viewPager.adapter!!.registerDataSetObserver(object : DataSetObserver() { + viewPager.adapter?.count?.let(::setPageCount) + viewPager.adapter?.registerDataSetObserver(object : DataSetObserver() { override fun onChanged() { - setPageCount(this@CustomPageIndicator.viewPager!!.adapter!!.count) + this@CustomPageIndicator.viewPager?.adapter?.count?.let(::setPageCount) } }) setCurrentPageImmediate() @@ -560,6 +561,7 @@ class CustomPageIndicator @JvmOverloads constructor( /** * A [ValueAnimator] that starts once a given predicate returns true. */ + @Suppress("UnnecessaryAbstractClass") abstract inner class PendingStartAnimator(private var predicate: StartPredicate) : ValueAnimator() { private var hasStarted = false diff --git a/app/src/main/java/org/kiwix/kiwixmobile/language/viewmodel/LanguageViewModel.kt b/app/src/main/java/org/kiwix/kiwixmobile/language/viewmodel/LanguageViewModel.kt index 40cc8fd96..47fd4caf3 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/language/viewmodel/LanguageViewModel.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/language/viewmodel/LanguageViewModel.kt @@ -46,7 +46,7 @@ class LanguageViewModel @Inject constructor( init { compositeDisposable.addAll( - actions.map { reduce(it, state.value!!) } + actions.map { state.value?.let { value -> reduce(it, value) } } .distinctUntilChanged() .subscribe(state::postValue, Throwable::printStackTrace), languageDao.languages().filter { it.isNotEmpty() } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/SenderDevice.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/SenderDevice.kt index e9458c9d2..085c46d90 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/SenderDevice.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/SenderDevice.kt @@ -59,18 +59,21 @@ internal class SenderDevice( .forEachIndexed { fileIndex, fileItem -> try { Socket().use { socket -> - context.contentResolver.openInputStream(fileItem?.fileUri!!).use { fileInputStream -> - socket.bind(null) - socket.connect( - InetSocketAddress(hostAddress, WifiDirectManager.FILE_TRANSFER_PORT), - TIME_OUT - ) - Log.d(TAG, "Sender socket connected to server - " + socket.isConnected) - publishProgress(fileIndex, FileItem.FileStatus.SENDING) - val socketOutputStream = socket.getOutputStream() - copyToOutputStream(fileInputStream!!, socketOutputStream) - if (BuildConfig.DEBUG) Log.d(TAG, "Sender: Data written") - publishProgress(fileIndex, FileItem.FileStatus.SENT) + fileItem?.fileUri?.let { + context.contentResolver.openInputStream(it).use { fileInputStream -> + socket.bind(null) + socket.connect( + InetSocketAddress(hostAddress, WifiDirectManager.FILE_TRANSFER_PORT), + TIME_OUT + ) + Log.d(TAG, "Sender socket connected to server - " + socket.isConnected) + publishProgress(fileIndex, FileItem.FileStatus.SENDING) + val socketOutputStream = socket.getOutputStream() + @Suppress("UnsafeCallOnNullableType") + copyToOutputStream(fileInputStream!!, socketOutputStream) + if (BuildConfig.DEBUG) Log.d(TAG, "Sender: Data written") + publishProgress(fileIndex, FileItem.FileStatus.SENT) + } } } } catch (e: IOException) { diff --git a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragment.kt index da42d3182..086423547 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragment.kt @@ -278,7 +278,7 @@ class OnlineLibraryFragment : BaseFragment(), FragmentActivityExtensions { } private fun onRefreshStateChange(isRefreshing: Boolean?) { - fragmentDestinationDownloadBinding?.librarySwipeRefresh?.isRefreshing = isRefreshing!! + fragmentDestinationDownloadBinding?.librarySwipeRefresh?.isRefreshing = isRefreshing == true } private fun onNetworkStateChange(networkState: NetworkState?) { @@ -325,8 +325,10 @@ class OnlineLibraryFragment : BaseFragment(), FragmentActivityExtensions { } private fun onLibraryItemsChange(it: List?) { - libraryAdapter.items = it!! - if (it.isEmpty()) { + if (it != null) { + libraryAdapter.items = it + } + if (it?.isEmpty() == true) { fragmentDestinationDownloadBinding?.libraryErrorText?.setText( if (isNotConnected) R.string.no_network_connection else R.string.no_items_msg diff --git a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt index 4e242cc6c..b879a85e2 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt @@ -262,6 +262,7 @@ class KiwixReaderFragment : CoreReaderFragment() { restoreTabs(zimArticles, zimPositions, currentTab) } + @Suppress("UnsafeCallOnNullableType") override fun createWebView(attrs: AttributeSet?): ToolbarScrollingKiwixWebView { return ToolbarScrollingKiwixWebView( requireContext(), this, attrs!!, activityMainRoot as ViewGroup, videoView!!, diff --git a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt index a5791e4de..8eafc7d6c 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt @@ -68,11 +68,11 @@ class KiwixPrefsFragment : CorePrefsFragment() { showPermissionPreference() val externalStorageManager = Environment.isExternalStorageManager() if (externalStorageManager) { - permissionPref!!.setSummary(org.kiwix.kiwixmobile.core.R.string.allowed) + permissionPref?.setSummary(org.kiwix.kiwixmobile.core.R.string.allowed) } else { - permissionPref!!.setSummary(org.kiwix.kiwixmobile.core.R.string.not_allowed) + permissionPref?.setSummary(org.kiwix.kiwixmobile.core.R.string.not_allowed) } - permissionPref.onPreferenceClickListener = + permissionPref?.onPreferenceClickListener = Preference.OnPreferenceClickListener { activity?.let(FragmentActivity::navigateToSettings) true @@ -84,7 +84,7 @@ class KiwixPrefsFragment : CorePrefsFragment() { val preferenceCategory = findPreference( PREF_PERMISSION ) - preferenceCategory!!.isVisible = true + preferenceCategory?.isVisible = true } companion object { diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zimManager/ZimManageViewModel.kt b/app/src/main/java/org/kiwix/kiwixmobile/zimManager/ZimManageViewModel.kt index d41d7eff1..d449f2f25 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zimManager/ZimManageViewModel.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/zimManager/ZimManageViewModel.kt @@ -358,6 +358,7 @@ class ZimManageViewModel @Inject constructor( locale: Locale ) = allLanguages.firstOrNull { it.languageCode == locale.isO3Language }?.active == true + @Suppress("UnsafeCallOnNullableType") private fun combineLibrarySources( booksOnFileSystem: List, activeDownloads: List, diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/CoreApp.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/CoreApp.kt index e106fc0ec..f3d5d2fa2 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/CoreApp.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/CoreApp.kt @@ -32,6 +32,7 @@ import org.kiwix.kiwixmobile.core.downloader.DownloadMonitor import org.kiwix.kiwixmobile.core.utils.files.FileLogger import javax.inject.Inject +@Suppress("UnnecessaryAbstractClass") abstract class CoreApp : Application() { companion object { @JvmStatic diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/base/BasePresenter.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/base/BasePresenter.kt index b3e546921..bb82216ae 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/base/BasePresenter.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/base/BasePresenter.kt @@ -24,6 +24,7 @@ import org.kiwix.kiwixmobile.core.base.BaseContract.View /** * All presenters should inherit from this presenter. */ +@Suppress("UnnecessaryAbstractClass") abstract class BasePresenter?> : Presenter { @JvmField val compositeDisposable = CompositeDisposable() @JvmField var view: T? = null diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/base/adapter/AdapterDelegateManager.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/base/adapter/AdapterDelegateManager.kt index 5fa5a005a..82a657fa4 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/base/adapter/AdapterDelegateManager.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/base/adapter/AdapterDelegateManager.kt @@ -27,6 +27,7 @@ class AdapterDelegateManager { delegates.put(delegates.size(), delegate) } + @Suppress("UnsafeCallOnNullableType") fun createViewHolder( parent: ViewGroup, viewType: Int @@ -36,7 +37,7 @@ class AdapterDelegateManager { libraryListItem: T, holder: RecyclerView.ViewHolder ) { - delegates[holder.itemViewType]!!.bind(holder, libraryListItem) + delegates[holder.itemViewType]?.bind(holder, libraryListItem) } fun getViewTypeFor(item: T) = delegates.keyAt(getDelegateIndexFor(item)) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/dao/NewBookDao.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/dao/NewBookDao.kt index 8e15a303a..b01e22ee3 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/dao/NewBookDao.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/dao/NewBookDao.kt @@ -75,6 +75,7 @@ class NewBookDao @Inject constructor(private val box: Box) { box.remove(databaseId) } + @Suppress("UnsafeCallOnNullableType") fun migrationInsert(books: List) { insert(books.map { BookOnDisk(book = it, file = it.file!!) }) } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/di/modules/DatabaseModule.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/di/modules/DatabaseModule.kt index 8f9b957a1..7de1934d4 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/di/modules/DatabaseModule.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/di/modules/DatabaseModule.kt @@ -39,6 +39,7 @@ open class DatabaseModule { var boxStore: BoxStore? = null } + @Suppress("UnsafeCallOnNullableType") // NOT RECOMMENDED TODO use custom runner to load TestApplication @Provides @Singleton fun providesBoxStore(context: Context): BoxStore { if (boxStore == null) { diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/DownloaderImpl.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/DownloaderImpl.kt index e272ca6d9..52dc10e27 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/DownloaderImpl.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/DownloaderImpl.kt @@ -44,6 +44,7 @@ class DownloaderImpl @Inject constructor( ) } + @Suppress("UnsafeCallOnNullableType") private fun urlProvider(book: Book): Observable = if (book.url?.endsWith("meta4") == true) kiwixService.getMetaLinks(book.url!!) .map { it.relevantUrl.value } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/error/ErrorActivity.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/error/ErrorActivity.kt index bfa88d3ea..ef888d9e9 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/error/ErrorActivity.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/error/ErrorActivity.kt @@ -63,7 +63,7 @@ open class ErrorActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) activityKiwixErrorBinding = ActivityKiwixErrorBinding.inflate(layoutInflater) - setContentView(activityKiwixErrorBinding!!.root) + setContentView(activityKiwixErrorBinding?.root) val extras = intent.extras exception = if (extras != null && safeContains(extras)) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { @@ -134,7 +134,7 @@ open class ErrorActivity : BaseActivity() { private fun exceptionDetails(): String = """ Exception Details: - ${toStackTraceString(exception!!)} + ${exception?.let(::toStackTraceString)} """.trimIndent() private fun zimFiles(): String { diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/help/HelpFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/help/HelpFragment.kt index 6a04a5104..3db5702af 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/help/HelpFragment.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/help/HelpFragment.kt @@ -40,6 +40,7 @@ import org.kiwix.kiwixmobile.core.main.CoreMainActivity import org.kiwix.kiwixmobile.core.utils.CONTACT_EMAIL_ADDRESS import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.getCurrentLocale +@Suppress("UnnecessaryAbstractClass") abstract class HelpFragment : BaseFragment() { private var fragmentHelpBinding: FragmentHelpBinding? = null protected open fun rawTitleDescriptionMap(): List> = emptyList() diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt index 2c6f2427f..409289a75 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt @@ -610,16 +610,18 @@ abstract class CoreReaderFragment : } private fun setupTabsAdapter() { - tabsAdapter = TabsAdapter( - requireActivity() as AppCompatActivity, - webViewList, - painter!! - ).apply { - registerAdapterDataObserver(object : AdapterDataObserver() { - override fun onChanged() { - mainMenu?.updateTabIcon(itemCount) - } - }) + tabsAdapter = painter?.let { + TabsAdapter( + requireActivity() as AppCompatActivity, + webViewList, + it + ).apply { + registerAdapterDataObserver(object : AdapterDataObserver() { + override fun onChanged() { + mainMenu?.updateTabIcon(itemCount) + } + }) + } } } @@ -638,7 +640,7 @@ abstract class CoreReaderFragment : override fun onSectionClick(view: View?, position: Int) { loadUrlWithCurrentWebview( "javascript:document.getElementById('" + - documentSections!![position].id.replace("'", "\\'") + + documentSections?.get(position)?.id?.replace("'", "\\'") + "').scrollIntoView();" ) drawerLayout?.closeDrawers() @@ -670,7 +672,7 @@ abstract class CoreReaderFragment : if (tabsAdapter.selected < webViewList.size && recyclerView.layoutManager != null ) { - recyclerView.layoutManager!!.scrollToPosition(tabsAdapter.selected) + recyclerView.layoutManager?.scrollToPosition(tabsAdapter.selected) } } // Notify the tabs adapter to update the UI when the tab switcher is shown @@ -886,7 +888,8 @@ abstract class CoreReaderFragment : } private fun getValidTitle(zimFileTitle: String?): String = - if (isAdded && isInvalidTitle(zimFileTitle)) getString(R.string.app_name) else zimFileTitle!! + if (isAdded && isInvalidTitle(zimFileTitle)) getString(R.string.app_name) + else zimFileTitle.toString() private fun isInvalidTitle(zimFileTitle: String?): Boolean = zimFileTitle == null || zimFileTitle.trim { it <= ' ' }.isEmpty() @@ -1058,6 +1061,7 @@ abstract class CoreReaderFragment : return null } + @Suppress("UnsafeCallOnNullableType") protected open fun createWebView(attrs: AttributeSet?): ToolbarScrollingKiwixWebView? { return if (activityMainRoot != null) { ToolbarScrollingKiwixWebView( @@ -1739,10 +1743,10 @@ abstract class CoreReaderFragment : } private fun searchForTitle(title: String?, openInNewTab: Boolean) { - val articleUrl: String? = if (title!!.startsWith("A/")) { + val articleUrl: String? = if (title?.startsWith("A/") == true) { title } else { - zimReaderContainer?.getPageUrlFromTitle(title) + title?.let { zimReaderContainer?.getPageUrlFromTitle(it) } } if (openInNewTab) { openArticleInNewTab(articleUrl) @@ -1764,14 +1768,16 @@ abstract class CoreReaderFragment : } protected open fun createMainMenu(menu: Menu?): MainMenu? = - menuFactory?.create( - menu!!, - webViewList, - urlIsValid(), - menuClickListener = this, - disableReadAloud = false, - disableTabs = false - ) + menu?.let { + menuFactory?.create( + it, + webViewList, + urlIsValid(), + menuClickListener = this, + disableReadAloud = false, + disableTabs = false + ) + } protected fun urlIsValid(): Boolean = getCurrentWebView()?.url != null @@ -1851,6 +1857,7 @@ abstract class CoreReaderFragment : requireActivity() ) ) + @Suppress("UnsafeCallOnNullableType") getCurrentWebView()?.let { val history = HistoryItem( it.url!!, diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/page/viewmodel/PageViewModel.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/page/viewmodel/PageViewModel.kt index edda2f164..7dbfbc817 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/page/viewmodel/PageViewModel.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/page/viewmodel/PageViewModel.kt @@ -66,7 +66,7 @@ abstract class PageViewModel>( } private fun viewStateReducer(): Disposable = - actions.map { reduce(it, state.value!!) } + actions.map { state.value?.let { value -> reduce(it, value) } } .subscribe(state::postValue, Throwable::printStackTrace) protected fun addDisposablesToCompositeDisposable() { diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/dialog/RateDialogHandler.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/dialog/RateDialogHandler.kt index c6d907199..16129357c 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/dialog/RateDialogHandler.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/dialog/RateDialogHandler.kt @@ -60,7 +60,7 @@ class RateDialogHandler @Inject constructor( fun checkForRateDialog(@IdRes iconResId: Int) { isFirstRun = sharedPreferenceUtil.prefIsFirstRun visitCounterPref = RateAppCounter(activity) - tempVisitCount = visitCounterPref?.count!! + tempVisitCount = visitCounterPref?.count ?: 0 ++tempVisitCount visitCounterPref?.count = tempVisitCount if (shouldShowRateDialog() && NetworkUtils.isNetworkAvailable(activity)) { diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/files/FileUtils.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/files/FileUtils.kt index 9fcf1f422..8848cde82 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/files/FileUtils.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/files/FileUtils.kt @@ -136,9 +136,9 @@ object FileUtils { null } } else if (uri.scheme != null) { - if ("content".equals(uri.scheme!!, ignoreCase = true)) { + if ("content".equals(uri.scheme, ignoreCase = true)) { return contentQuery(context, uri) - } else if ("file".equals(uri.scheme!!, ignoreCase = true)) { + } else if ("file".equals(uri.scheme, ignoreCase = true)) { return uri.path } } else { diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/download/CustomDownloadFragment.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/download/CustomDownloadFragment.kt index 07562c3a3..c72e240c7 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/download/CustomDownloadFragment.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/download/CustomDownloadFragment.kt @@ -100,25 +100,28 @@ class CustomDownloadFragment : BaseFragment(), FragmentActivityExtensions { activity?.finish() } - private fun render(state: State) { + private fun render(state: State): Unit? { return when (state) { DownloadRequired -> fragmentCustomDownloadBinding?.cdViewAnimator?.setDistinctDisplayedChild(0) + is DownloadInProgress -> { fragmentCustomDownloadBinding?.cdViewAnimator?.setDistinctDisplayedChild(1) - render(state.downloads[0]) + showDownloadingProgress(state.downloads[0]) } + is DownloadFailed -> { fragmentCustomDownloadBinding?.cdViewAnimator?.setDistinctDisplayedChild(2) fragmentCustomDownloadBinding?.customDownloadError?.cdErrorText?.text = context?.let(state.downloadState::toReadableState) } + DownloadComplete -> fragmentCustomDownloadBinding?.cdViewAnimator?.setDistinctDisplayedChild(3) - }!! + } } - private fun render(downloadItem: DownloadItem) { + private fun showDownloadingProgress(downloadItem: DownloadItem) { fragmentCustomDownloadBinding?.customDownloadInProgress?.apply { cdDownloadState.text = downloadItem.readableEta cdEta.text = context?.let(downloadItem.downloadState::toReadableState) diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/download/CustomDownloadViewModel.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/download/CustomDownloadViewModel.kt index 5920ec6bc..3aa363179 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/download/CustomDownloadViewModel.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/download/CustomDownloadViewModel.kt @@ -59,7 +59,9 @@ class CustomDownloadViewModel @Inject constructor( ) } - private fun reducer() = actions.map { reduce(it, state.value!!) } + private fun reducer() = actions.map { + state.value?.let { value -> reduce(it, value) } + } .distinctUntilChanged() .subscribe(state::postValue, Throwable::printStackTrace) diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomReaderFragment.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomReaderFragment.kt index 15c3b33d8..f4bf65507 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomReaderFragment.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomReaderFragment.kt @@ -76,7 +76,7 @@ class CustomReaderFragment : CoreReaderFragment() { toolbarToc?.isEnabled = false } with(activity as AppCompatActivity) { - supportActionBar!!.setDisplayHomeAsUpEnabled(true) + supportActionBar?.setDisplayHomeAsUpEnabled(true) toolbar?.let { setupDrawerToggle(it) } } loadPageFromNavigationArguments() @@ -187,14 +187,16 @@ class CustomReaderFragment : CoreReaderFragment() { } override fun createMainMenu(menu: Menu?): MainMenu? { - return menuFactory?.create( - menu!!, - webViewList, - urlIsValid(), - this, - BuildConfig.DISABLE_READ_ALOUD, - BuildConfig.DISABLE_TABS - ) + return menu?.let { + menuFactory?.create( + it, + webViewList, + urlIsValid(), + this, + BuildConfig.DISABLE_READ_ALOUD, + BuildConfig.DISABLE_TABS + ) + } } override fun showOpenInNewTabDialog(url: String) {