package core.ui.fragment

import androidx.viewbinding.ViewBinding

/**
 * 懒加载
 *
 * @author ReiChin_
 */
abstract class RcLazyFragment<VB : ViewBinding> : RcBaseFragment<VB>() {

    override fun onResume() {
        super.onResume()
        lazyLoad()
    }

    private fun lazyLoad() {
        if (!loadDateCompleted()) {
            onLoadData()
        }
    }

    /**
     * 加载数据
     */
    protected abstract fun onLoadData()

    /**
     * 数据是否加载完毕，子类可覆写此方法，根据需要返回。
     * 1) false，每次画面可见时，都会回调[.onLoadData]。
     * 2) true，每次画面可见时，不会回调[.onLoadData]。
     *
     * @return 数据是否加载完成。
     */
    protected open fun loadDateCompleted() = false

}