mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Bump dependencies + compile SDK to 33 + linting
This commit is contained in:
		@@ -47,6 +47,7 @@ class AppUpdateChecker {
 | 
			
		||||
            when (result) {
 | 
			
		||||
                is AppUpdateResult.NewUpdate -> AppUpdateNotifier(context).promptUpdate(result.release)
 | 
			
		||||
                is AppUpdateResult.NewUpdateFdroidInstallation -> AppUpdateNotifier(context).promptFdroidUpdate()
 | 
			
		||||
                else -> {}
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            result
 | 
			
		||||
 
 | 
			
		||||
@@ -52,6 +52,7 @@ internal class ExtensionInstallReceiver(private val listener: Listener) :
 | 
			
		||||
                    when (val result = getExtensionFromIntent(context, intent)) {
 | 
			
		||||
                        is LoadResult.Success -> listener.onExtensionInstalled(result.extension)
 | 
			
		||||
                        is LoadResult.Untrusted -> listener.onExtensionUntrusted(result.extension)
 | 
			
		||||
                        else -> {}
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
@@ -60,8 +61,8 @@ internal class ExtensionInstallReceiver(private val listener: Listener) :
 | 
			
		||||
                    when (val result = getExtensionFromIntent(context, intent)) {
 | 
			
		||||
                        is LoadResult.Success -> listener.onExtensionUpdated(result.extension)
 | 
			
		||||
                        // Not needed as a package can't be upgraded if the signature is different
 | 
			
		||||
                        is LoadResult.Untrusted -> {
 | 
			
		||||
                        }
 | 
			
		||||
                        is LoadResult.Untrusted -> {}
 | 
			
		||||
                        else -> {}
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -59,16 +59,17 @@ abstract class SearchableNucleusController<VB : ViewBinding, P : BasePresenter<*
 | 
			
		||||
        val searchAutoComplete: SearchView.SearchAutoComplete = searchView.findViewById(
 | 
			
		||||
            R.id.search_src_text,
 | 
			
		||||
        )
 | 
			
		||||
        searchAutoComplete.addTextChangedListener(object : TextWatcher {
 | 
			
		||||
            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
 | 
			
		||||
        searchAutoComplete.addTextChangedListener(
 | 
			
		||||
            object : TextWatcher {
 | 
			
		||||
                override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
 | 
			
		||||
 | 
			
		||||
            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
 | 
			
		||||
                override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
 | 
			
		||||
 | 
			
		||||
            override fun afterTextChanged(editable: Editable) {
 | 
			
		||||
                editable.getSpans(0, editable.length, CharacterStyle::class.java)
 | 
			
		||||
                    .forEach { editable.removeSpan(it) }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
                override fun afterTextChanged(editable: Editable) {
 | 
			
		||||
                    editable.getSpans(0, editable.length, CharacterStyle::class.java)
 | 
			
		||||
                        .forEach { editable.removeSpan(it) }
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        searchView.queryTextEvents()
 | 
			
		||||
@@ -134,12 +135,12 @@ abstract class SearchableNucleusController<VB : ViewBinding, P : BasePresenter<*
 | 
			
		||||
 | 
			
		||||
        searchItem.setOnActionExpandListener(
 | 
			
		||||
            object : MenuItem.OnActionExpandListener {
 | 
			
		||||
                override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
 | 
			
		||||
                override fun onMenuItemActionExpand(item: MenuItem): Boolean {
 | 
			
		||||
                    onSearchMenuItemActionExpand(item)
 | 
			
		||||
                    return true
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
 | 
			
		||||
                override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
 | 
			
		||||
                    val localSearchView = searchItem.actionView as SearchView
 | 
			
		||||
 | 
			
		||||
                    // if it is blank the flow event won't trigger so we would stay in a COLLAPSING state
 | 
			
		||||
 
 | 
			
		||||
@@ -354,6 +354,7 @@ open class BrowseSourceController(bundle: Bundle) :
 | 
			
		||||
                        when (filter) {
 | 
			
		||||
                            is Filter.TriState -> filter.state = 1
 | 
			
		||||
                            is Filter.CheckBox -> filter.state = true
 | 
			
		||||
                            else -> {}
 | 
			
		||||
                        }
 | 
			
		||||
                        filterList = presenter.sourceFilters
 | 
			
		||||
                        break@filter
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ class DownloadHeaderHolder(view: View, adapter: FlexibleAdapter<*>) : Expandable
 | 
			
		||||
    override fun onItemReleased(position: Int) {
 | 
			
		||||
        super.onItemReleased(position)
 | 
			
		||||
        binding.container.isDragged = false
 | 
			
		||||
        mAdapter as DownloadAdapter
 | 
			
		||||
        mAdapter.expandAll()
 | 
			
		||||
        mAdapter.downloadItemListener.onItemReleased(position)
 | 
			
		||||
        (mAdapter as DownloadAdapter).downloadItemListener.onItemReleased(position)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -388,7 +388,7 @@ class LibraryController(
 | 
			
		||||
    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
 | 
			
		||||
        createOptionsMenu(menu, inflater, R.menu.library, R.id.action_search)
 | 
			
		||||
        // Mutate the filter icon because it needs to be tinted and the resource is shared.
 | 
			
		||||
        menu.findItem(R.id.action_filter).icon.mutate()
 | 
			
		||||
        menu.findItem(R.id.action_filter).icon?.mutate()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun search(query: String) {
 | 
			
		||||
@@ -414,7 +414,7 @@ class LibraryController(
 | 
			
		||||
        // Tint icon if there's a filter active
 | 
			
		||||
        if (settingsSheet.filters.hasActiveFilters()) {
 | 
			
		||||
            val filterColor = activity!!.getResourceColor(R.attr.colorFilterActive)
 | 
			
		||||
            filterItem.icon.setTint(filterColor)
 | 
			
		||||
            filterItem.icon?.setTint(filterColor)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -394,6 +394,7 @@ class LibrarySettingsSheet(
 | 
			
		||||
                    unreadBadge -> preferences.unreadBadge().set((item.checked))
 | 
			
		||||
                    localBadge -> preferences.localBadge().set((item.checked))
 | 
			
		||||
                    languageBadge -> preferences.languageBadge().set((item.checked))
 | 
			
		||||
                    else -> {}
 | 
			
		||||
                }
 | 
			
		||||
                adapter.notifyItemChanged(item)
 | 
			
		||||
            }
 | 
			
		||||
@@ -418,6 +419,7 @@ class LibrarySettingsSheet(
 | 
			
		||||
                when (item) {
 | 
			
		||||
                    showTabs -> preferences.categoryTabs().set(item.checked)
 | 
			
		||||
                    showNumberOfItems -> preferences.categoryNumberOfItems().set(item.checked)
 | 
			
		||||
                    else -> {}
 | 
			
		||||
                }
 | 
			
		||||
                adapter.notifyItemChanged(item)
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -466,7 +466,7 @@ class MainActivity : BaseActivity() {
 | 
			
		||||
 | 
			
		||||
        // Binding sometimes isn't actually instantiated yet somehow
 | 
			
		||||
        nav?.setOnItemSelectedListener(null)
 | 
			
		||||
        binding?.toolbar.setNavigationOnClickListener(null)
 | 
			
		||||
        binding?.toolbar?.setNavigationOnClickListener(null)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onBackPressed() {
 | 
			
		||||
 
 | 
			
		||||
@@ -113,6 +113,7 @@ class ChaptersSettingsSheet(
 | 
			
		||||
                    downloaded -> presenter.setDownloadedFilter(newState)
 | 
			
		||||
                    unread -> presenter.setUnreadFilter(newState)
 | 
			
		||||
                    bookmarked -> presenter.setBookmarkedFilter(newState)
 | 
			
		||||
                    else -> {}
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                initModels()
 | 
			
		||||
 
 | 
			
		||||
@@ -360,15 +360,16 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Init listeners on bottom menu
 | 
			
		||||
        binding.pageSlider.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
 | 
			
		||||
            override fun onStartTrackingTouch(slider: Slider) {
 | 
			
		||||
                isScrollingThroughPages = true
 | 
			
		||||
            }
 | 
			
		||||
        binding.pageSlider.addOnSliderTouchListener(
 | 
			
		||||
            object : Slider.OnSliderTouchListener {
 | 
			
		||||
                override fun onStartTrackingTouch(slider: Slider) {
 | 
			
		||||
                    isScrollingThroughPages = true
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            override fun onStopTrackingTouch(slider: Slider) {
 | 
			
		||||
                isScrollingThroughPages = false
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
                override fun onStopTrackingTouch(slider: Slider) {
 | 
			
		||||
                    isScrollingThroughPages = false
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
        )
 | 
			
		||||
        binding.pageSlider.addOnChangeListener { slider, value, fromUser ->
 | 
			
		||||
            if (viewer != null && fromUser) {
 | 
			
		||||
 
 | 
			
		||||
@@ -10,9 +10,9 @@ data class ReaderChapter(val chapter: Chapter) {
 | 
			
		||||
    var state: State =
 | 
			
		||||
        State.Wait
 | 
			
		||||
        set(value) {
 | 
			
		||||
                field = value
 | 
			
		||||
                stateRelay.call(value)
 | 
			
		||||
            }
 | 
			
		||||
            field = value
 | 
			
		||||
            stateRelay.call(value)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    private val stateRelay by lazy { BehaviorRelay.create(state) }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -34,27 +34,28 @@ class ReaderSettingsSheet(
 | 
			
		||||
        behavior.halfExpandedRatio = 0.25f
 | 
			
		||||
 | 
			
		||||
        val filterTabIndex = getTabViews().indexOf(colorFilterSettings)
 | 
			
		||||
        binding.tabs.addOnTabSelectedListener(object : SimpleTabSelectedListener() {
 | 
			
		||||
            override fun onTabSelected(tab: TabLayout.Tab?) {
 | 
			
		||||
                val isFilterTab = tab?.position == filterTabIndex
 | 
			
		||||
        binding.tabs.addOnTabSelectedListener(
 | 
			
		||||
            object : SimpleTabSelectedListener() {
 | 
			
		||||
                override fun onTabSelected(tab: TabLayout.Tab?) {
 | 
			
		||||
                    val isFilterTab = tab?.position == filterTabIndex
 | 
			
		||||
 | 
			
		||||
                // Remove dimmed backdrop so color filter changes can be previewed
 | 
			
		||||
                backgroundDimAnimator.run {
 | 
			
		||||
                    if (isFilterTab) {
 | 
			
		||||
                        if (animatedFraction < 1f) {
 | 
			
		||||
                            start()
 | 
			
		||||
                    // Remove dimmed backdrop so color filter changes can be previewed
 | 
			
		||||
                    backgroundDimAnimator.run {
 | 
			
		||||
                        if (isFilterTab) {
 | 
			
		||||
                            if (animatedFraction < 1f) {
 | 
			
		||||
                                start()
 | 
			
		||||
                            }
 | 
			
		||||
                        } else if (animatedFraction > 0f) {
 | 
			
		||||
                            reverse()
 | 
			
		||||
                        }
 | 
			
		||||
                    } else if (animatedFraction > 0f) {
 | 
			
		||||
                        reverse()
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // Hide toolbars
 | 
			
		||||
                    if (activity.menuVisible != !isFilterTab) {
 | 
			
		||||
                        activity.setMenuVisibility(!isFilterTab)
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Hide toolbars
 | 
			
		||||
                if (activity.menuVisible != !isFilterTab) {
 | 
			
		||||
                    activity.setMenuVisibility(!isFilterTab)
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
            },
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        if (showColorFilterSettings) {
 | 
			
		||||
 
 | 
			
		||||
@@ -249,6 +249,7 @@ open class ReaderPageImageView @JvmOverloads constructor(
 | 
			
		||||
            ZoomStartPosition.LEFT -> setScaleAndCenter(scale, PointF(0F, 0F))
 | 
			
		||||
            ZoomStartPosition.RIGHT -> setScaleAndCenter(scale, PointF(sWidth.toFloat(), 0F))
 | 
			
		||||
            ZoomStartPosition.CENTER -> setScaleAndCenter(scale, center.also { it?.y = 0F })
 | 
			
		||||
            else -> {}
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -310,7 +311,7 @@ open class ReaderPageImageView @JvmOverloads constructor(
 | 
			
		||||
                            return true
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        override fun onSingleTapConfirmed(e: MotionEvent?): Boolean {
 | 
			
		||||
                        override fun onSingleTapConfirmed(e: MotionEvent): Boolean {
 | 
			
		||||
                            this@ReaderPageImageView.onViewClicked()
 | 
			
		||||
                            return super.onSingleTapConfirmed(e)
 | 
			
		||||
                        }
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,7 @@ class WebtoonFrame(context: Context) : FrameLayout(context) {
 | 
			
		||||
     * Scale listener used to delegate events to the recycler view.
 | 
			
		||||
     */
 | 
			
		||||
    inner class ScaleListener : ScaleGestureDetector.SimpleOnScaleGestureListener() {
 | 
			
		||||
        override fun onScaleBegin(detector: ScaleGestureDetector?): Boolean {
 | 
			
		||||
        override fun onScaleBegin(detector: ScaleGestureDetector): Boolean {
 | 
			
		||||
            recycler?.onScaleBegin()
 | 
			
		||||
            return true
 | 
			
		||||
        }
 | 
			
		||||
@@ -63,13 +63,13 @@ class WebtoonFrame(context: Context) : FrameLayout(context) {
 | 
			
		||||
     * Fling listener used to delegate events to the recycler view.
 | 
			
		||||
     */
 | 
			
		||||
    inner class FlingListener : GestureDetector.SimpleOnGestureListener() {
 | 
			
		||||
        override fun onDown(e: MotionEvent?): Boolean {
 | 
			
		||||
        override fun onDown(e: MotionEvent): Boolean {
 | 
			
		||||
            return true
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        override fun onFling(
 | 
			
		||||
            e1: MotionEvent?,
 | 
			
		||||
            e2: MotionEvent?,
 | 
			
		||||
            e1: MotionEvent,
 | 
			
		||||
            e2: MotionEvent,
 | 
			
		||||
            velocityX: Float,
 | 
			
		||||
            velocityY: Float,
 | 
			
		||||
        ): Boolean {
 | 
			
		||||
 
 | 
			
		||||
@@ -102,13 +102,13 @@ class SettingsMainController : SettingsController() {
 | 
			
		||||
 | 
			
		||||
        searchItem.setOnActionExpandListener(
 | 
			
		||||
            object : MenuItem.OnActionExpandListener {
 | 
			
		||||
                override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
 | 
			
		||||
                override fun onMenuItemActionExpand(item: MenuItem): Boolean {
 | 
			
		||||
                    preferences.lastSearchQuerySearchSettings().set("") // reset saved search query
 | 
			
		||||
                    router.pushController(SettingsSearchController().withFadeTransaction())
 | 
			
		||||
                    return true
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
 | 
			
		||||
                override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
 | 
			
		||||
                    return true
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
 
 | 
			
		||||
@@ -74,11 +74,11 @@ class SettingsSearchController :
 | 
			
		||||
 | 
			
		||||
        searchItem.setOnActionExpandListener(
 | 
			
		||||
            object : MenuItem.OnActionExpandListener {
 | 
			
		||||
                override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
 | 
			
		||||
                override fun onMenuItemActionExpand(item: MenuItem): Boolean {
 | 
			
		||||
                    return true
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
 | 
			
		||||
                override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
 | 
			
		||||
                    router.popCurrentController()
 | 
			
		||||
                    return false
 | 
			
		||||
                }
 | 
			
		||||
 
 | 
			
		||||
@@ -166,12 +166,12 @@ class WebViewActivity : BaseActivity() {
 | 
			
		||||
 | 
			
		||||
        menu.findItem(R.id.action_web_back).apply {
 | 
			
		||||
            isEnabled = binding.webview.canGoBack()
 | 
			
		||||
            icon.setTint(if (binding.webview.canGoBack()) iconTintColor else translucentIconTintColor)
 | 
			
		||||
            icon?.setTint(if (binding.webview.canGoBack()) iconTintColor else translucentIconTintColor)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        menu.findItem(R.id.action_web_forward).apply {
 | 
			
		||||
            isEnabled = binding.webview.canGoForward()
 | 
			
		||||
            icon.setTint(if (binding.webview.canGoForward()) iconTintColor else translucentIconTintColor)
 | 
			
		||||
            icon?.setTint(if (binding.webview.canGoForward()) iconTintColor else translucentIconTintColor)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return super.onPrepareOptionsMenu(menu)
 | 
			
		||||
 
 | 
			
		||||
@@ -115,12 +115,13 @@ class TachiyomiBottomNavigationView @JvmOverloads constructor(
 | 
			
		||||
            .setInterpolator(interpolator)
 | 
			
		||||
            .setDuration(duration)
 | 
			
		||||
            .applySystemAnimatorScale(context)
 | 
			
		||||
            .setListener(object : AnimatorListenerAdapter() {
 | 
			
		||||
                override fun onAnimationEnd(animation: Animator?) {
 | 
			
		||||
                    currentAnimator = null
 | 
			
		||||
                    postInvalidate()
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            .setListener(
 | 
			
		||||
                object : AnimatorListenerAdapter() {
 | 
			
		||||
                    override fun onAnimationEnd(animation: Animator) {
 | 
			
		||||
                        currentAnimator = null
 | 
			
		||||
                        postInvalidate()
 | 
			
		||||
                    }
 | 
			
		||||
                },
 | 
			
		||||
            )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -37,12 +37,13 @@ class ThemesPreference @JvmOverloads constructor(context: Context, attrs: Attrib
 | 
			
		||||
        recycler?.adapter = adapter
 | 
			
		||||
 | 
			
		||||
        // Retain scroll position on activity recreate after changing theme
 | 
			
		||||
        recycler?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
 | 
			
		||||
            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
 | 
			
		||||
                super.onScrolled(recyclerView, dx, dy)
 | 
			
		||||
                lastScrollPosition = recyclerView.computeHorizontalScrollOffset()
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        recycler?.addOnScrollListener(
 | 
			
		||||
            object : RecyclerView.OnScrollListener() {
 | 
			
		||||
                override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
 | 
			
		||||
                    super.onScrolled(recyclerView, dx, dy)
 | 
			
		||||
                    lastScrollPosition = recyclerView.computeHorizontalScrollOffset()
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
        )
 | 
			
		||||
        lastScrollPosition?.let { scrollToOffset(it) }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -45,11 +45,12 @@ class BottomSheetViewPager @JvmOverloads constructor(
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    init {
 | 
			
		||||
        addOnPageChangeListener(object : SimpleOnPageChangeListener() {
 | 
			
		||||
            override fun onPageSelected(position: Int) {
 | 
			
		||||
                requestLayout()
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        addOnPageChangeListener(
 | 
			
		||||
            object : SimpleOnPageChangeListener() {
 | 
			
		||||
                override fun onPageSelected(position: Int) {
 | 
			
		||||
                    requestLayout()
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user