parent
5bc68bb48e
commit
5c8f152686
@ -1,81 +0,0 @@ |
|||||||
package com.android.base.app.aac |
|
||||||
|
|
||||||
import androidx.lifecycle.LifecycleOwner |
|
||||||
import androidx.lifecycle.LiveData |
|
||||||
import androidx.lifecycle.Observer |
|
||||||
import com.android.base.app.Sword |
|
||||||
import com.android.base.app.ui.LoadingView |
|
||||||
import com.android.base.data.State |
|
||||||
import timber.log.Timber |
|
||||||
|
|
||||||
|
|
||||||
interface LiveStateHandler { |
|
||||||
|
|
||||||
/**处理异常*/ |
|
||||||
fun handleError(throwable: Throwable) |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
fun <H, T> H.handleLiveState( |
|
||||||
liveData: LiveData<State<T>>, |
|
||||||
forceLoading: Boolean = true, |
|
||||||
onSuccess: (T?) -> Unit |
|
||||||
) where H : LiveStateHandler, H : LoadingView, H : LifecycleOwner { |
|
||||||
|
|
||||||
liveData.observe(this, Observer { |
|
||||||
when { |
|
||||||
it.isError -> { |
|
||||||
Timber.d("handleLiveState -> isError") |
|
||||||
dismissLoadingDialog() |
|
||||||
handleError(it.error()) |
|
||||||
} |
|
||||||
it.isLoading -> { |
|
||||||
Timber.d("handleLiveState -> isLoading") |
|
||||||
showLoadingDialog(!forceLoading) |
|
||||||
} |
|
||||||
it.isSuccess -> { |
|
||||||
Timber.d("handleLiveState -> isSuccess") |
|
||||||
val minimumShowingDialogMills = Sword.get().minimumShowingDialogMills() |
|
||||||
|
|
||||||
dismissLoadingDialog(minimumShowingDialogMills) { |
|
||||||
onSuccess(it.get()) |
|
||||||
} |
|
||||||
}//success end |
|
||||||
} |
|
||||||
}) |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
fun <H, T> H.handleLiveStateWithData( |
|
||||||
liveData: LiveData<State<T>>, |
|
||||||
forceLoading: Boolean = true, |
|
||||||
onEmpty: (() -> Unit)? = null, |
|
||||||
onSuccess: (T) -> Unit |
|
||||||
) where H : LiveStateHandler, H : LoadingView, H : LifecycleOwner { |
|
||||||
|
|
||||||
liveData.observe(this, Observer { |
|
||||||
when { |
|
||||||
it.isError -> { |
|
||||||
Timber.d("handleLiveStateWithData -> isError") |
|
||||||
dismissLoadingDialog() |
|
||||||
handleError(it.error()) |
|
||||||
} |
|
||||||
it.isLoading -> { |
|
||||||
Timber.d("handleLiveStateWithData -> isLoading") |
|
||||||
showLoadingDialog(!forceLoading) |
|
||||||
} |
|
||||||
it.isSuccess -> { |
|
||||||
Timber.d("handleLiveStateWithData -> isSuccess") |
|
||||||
val minimumShowingDialogMills = Sword.get().minimumShowingDialogMills() |
|
||||||
dismissLoadingDialog(minimumShowingDialogMills) { |
|
||||||
if (it.hasData()) { |
|
||||||
onSuccess(it.data()) |
|
||||||
} else { |
|
||||||
onEmpty?.invoke() |
|
||||||
} |
|
||||||
} |
|
||||||
}//success end |
|
||||||
} |
|
||||||
}) |
|
||||||
|
|
||||||
} |
|
@ -0,0 +1,11 @@ |
|||||||
|
package com.android.base.app.ui |
||||||
|
|
||||||
|
import androidx.lifecycle.LifecycleOwner |
||||||
|
import androidx.lifecycle.LiveData |
||||||
|
import androidx.lifecycle.Observer |
||||||
|
import com.android.base.app.Sword |
||||||
|
import com.android.base.data.State |
||||||
|
import timber.log.Timber |
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in new issue