NTP-58776 | Unified Error Experience | Default value fix (#16157)
This commit is contained in:
committed by
GitHub
parent
b19fa913d6
commit
feac0b54b5
@@ -10,7 +10,12 @@ import {
|
||||
ErrorMetaData,
|
||||
GenericActionPayload,
|
||||
} from "../../../../../common/actions/GenericAction";
|
||||
import { RETRY } from "../../../../../common/constants";
|
||||
import {
|
||||
RETRY,
|
||||
STATUS_CODE_NO_INTERNET,
|
||||
AXIOS_CODE_NETWORK,
|
||||
AXIOS_CODE_CANCELED,
|
||||
} from "../../../../../common/constants";
|
||||
import {
|
||||
CtaData,
|
||||
StaticHeaderProperties,
|
||||
@@ -36,7 +41,16 @@ const QuoteOfferErrorScreen = ({
|
||||
handleActions && handleActions(errorMetaData);
|
||||
};
|
||||
|
||||
const isNetworkError =
|
||||
(errorMetaData?.errorStatusCode &&
|
||||
[20, 21, 23, 24].includes(errorMetaData.errorStatusCode)) ||
|
||||
errorMetaData?.errorAxiosCode === AXIOS_CODE_NETWORK ||
|
||||
errorMetaData?.errorAxiosCode === AXIOS_CODE_CANCELED;
|
||||
|
||||
useEffect(() => {
|
||||
if (!isNetworkError) {
|
||||
return;
|
||||
}
|
||||
if (
|
||||
lastConnectionStatus.current === false &&
|
||||
netInfo.isConnected === true
|
||||
@@ -44,7 +58,7 @@ const QuoteOfferErrorScreen = ({
|
||||
onPress();
|
||||
}
|
||||
lastConnectionStatus.current = netInfo.isConnected;
|
||||
}, [netInfo.isConnected]);
|
||||
}, [netInfo.isConnected, isNetworkError]);
|
||||
|
||||
const errorResponse = getErrorResponseFromStatusCode(
|
||||
errorMetaData?.errorStatusCode,
|
||||
|
||||
@@ -21,6 +21,7 @@ import androidx.lifecycle.repeatOnLifecycle
|
||||
import com.navi.base.utils.ConnectivityObserver
|
||||
import com.navi.base.utils.orFalse
|
||||
import com.navi.common.R as CommonR
|
||||
import com.navi.common.network.ApiConstants
|
||||
import com.navi.common.network.models.ErrorMessage
|
||||
import com.navi.common.network.models.GenericErrorResponse
|
||||
import com.navi.common.network.models.toNaviErrorPageWidget
|
||||
@@ -46,8 +47,7 @@ abstract class GiBaseFragment : BaseFragment(), ActionHandler.ActionOwner {
|
||||
protected val requestCallbackVM by viewModels<RequestCallbackVM>()
|
||||
@Inject lateinit var connectivityObserver: ConnectivityObserver
|
||||
protected val connectivityStateFlow by lazy { connectivityObserver.observe() }
|
||||
private var previousState: ConnectivityObserver.Status? =
|
||||
ConnectivityObserver.Status.Unavailable
|
||||
private var previousState: ConnectivityObserver.Status? = ConnectivityObserver.Status.Available
|
||||
|
||||
abstract fun getViewModel(): GiBaseVM?
|
||||
|
||||
@@ -126,26 +126,36 @@ abstract class GiBaseFragment : BaseFragment(), ActionHandler.ActionOwner {
|
||||
showCloseButton: Boolean = true,
|
||||
onCloseButtonClick: () -> Unit,
|
||||
) {
|
||||
viewLifecycleOwner.lifecycleScope.launch {
|
||||
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
connectivityStateFlow.collect { state ->
|
||||
val wasDisconnected =
|
||||
previousState in
|
||||
listOf(
|
||||
ConnectivityObserver.Status.Lost,
|
||||
ConnectivityObserver.Status.Unavailable,
|
||||
ConnectivityObserver.Status.Losing,
|
||||
)
|
||||
val isNetworkError =
|
||||
errorMessage?.statusCode in
|
||||
listOf(
|
||||
ApiConstants.NO_INTERNET,
|
||||
ApiConstants.API_CODE_CONNECT_EXCEPTION,
|
||||
ApiConstants.API_CODE_UNKNOWN_HOST,
|
||||
)
|
||||
|
||||
if (
|
||||
wasDisconnected &&
|
||||
state == ConnectivityObserver.Status.Available &&
|
||||
connectivityObserver.isInternetConnected()
|
||||
) {
|
||||
onRetryClick(view.tag)
|
||||
if (isNetworkError) {
|
||||
viewLifecycleOwner.lifecycleScope.launch {
|
||||
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
connectivityStateFlow.collect { state ->
|
||||
val wasDisconnected =
|
||||
previousState in
|
||||
listOf(
|
||||
ConnectivityObserver.Status.Lost,
|
||||
ConnectivityObserver.Status.Unavailable,
|
||||
ConnectivityObserver.Status.Losing,
|
||||
)
|
||||
|
||||
if (
|
||||
wasDisconnected &&
|
||||
state == ConnectivityObserver.Status.Available &&
|
||||
connectivityObserver.isInternetConnected()
|
||||
) {
|
||||
onRetryClick(view.tag)
|
||||
}
|
||||
|
||||
previousState = state
|
||||
}
|
||||
|
||||
previousState = state
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.viewinterop.AndroidView
|
||||
import com.navi.base.utils.ConnectivityObserver
|
||||
import com.navi.common.network.ApiConstants
|
||||
import com.navi.common.network.models.ErrorMessage
|
||||
import com.navi.common.network.models.toNaviErrorPageWidget
|
||||
import com.navi.naviwidgets.views.NaviErrorPageView
|
||||
@@ -34,22 +35,30 @@ fun InitErrorView(
|
||||
onCloseButtonClick: () -> Unit,
|
||||
connectivityObserver: Flow<ConnectivityObserver.Status>? = null,
|
||||
) {
|
||||
connectivityObserver?.let {
|
||||
val isNetworkError =
|
||||
errorMessage?.statusCode in
|
||||
listOf(
|
||||
ApiConstants.NO_INTERNET,
|
||||
ApiConstants.API_CODE_CONNECT_EXCEPTION,
|
||||
ApiConstants.API_CODE_UNKNOWN_HOST,
|
||||
)
|
||||
|
||||
if (isNetworkError && connectivityObserver != null) {
|
||||
val connectivityState by
|
||||
connectivityObserver.collectAsState(initial = ConnectivityObserver.Status.Unavailable)
|
||||
var previousState by remember { mutableStateOf<ConnectivityObserver.Status?>(null) }
|
||||
|
||||
LaunchedEffect(connectivityState) {
|
||||
val wasDisconnected =
|
||||
previousState in
|
||||
setOf(
|
||||
ConnectivityObserver.Status.Lost,
|
||||
ConnectivityObserver.Status.Unavailable,
|
||||
ConnectivityObserver.Status.Losing,
|
||||
)
|
||||
|
||||
if (wasDisconnected && connectivityState == ConnectivityObserver.Status.Available) {
|
||||
|
||||
if (
|
||||
previousState != null &&
|
||||
previousState in
|
||||
setOf(
|
||||
ConnectivityObserver.Status.Lost,
|
||||
ConnectivityObserver.Status.Unavailable,
|
||||
ConnectivityObserver.Status.Losing,
|
||||
) &&
|
||||
connectivityState == ConnectivityObserver.Status.Available
|
||||
) {
|
||||
onRetryClick(view?.tag)
|
||||
}
|
||||
|
||||
@@ -75,6 +84,7 @@ fun InitErrorView(
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
view?.let { HandleError(it) }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user