NTP-3917 | QR scanner image upload snackbar visibility fix (#12611)
This commit is contained in:
@@ -14,12 +14,12 @@ import com.navi.design.snackbar.SnackBarConfig
|
||||
class BbpsSnackBarPredefinedConfig {
|
||||
fun successConfig(title: String, description: String? = null) =
|
||||
SnackBarConfig(
|
||||
iconResId = R.drawable.ic_success_green,
|
||||
leadingIconResId = R.drawable.ic_success_green,
|
||||
title = title,
|
||||
description = description,
|
||||
actionIconResId = CommonR.drawable.ic_close_black
|
||||
trailingIconResId = CommonR.drawable.ic_close_black
|
||||
)
|
||||
|
||||
fun errorConfig(title: String) =
|
||||
SnackBarConfig(iconResId = CommonR.drawable.ic_error_red_gradient, title = title)
|
||||
SnackBarConfig(leadingIconResId = CommonR.drawable.ic_error_red_gradient, title = title)
|
||||
}
|
||||
|
||||
@@ -44,10 +44,10 @@ import com.navi.design.theme.getFontWeight
|
||||
import com.navi.design.theme.ttComposeFontFamily
|
||||
|
||||
data class SnackBarConfig(
|
||||
@DrawableRes val iconResId: Int? = null,
|
||||
@DrawableRes val leadingIconResId: Int? = null,
|
||||
val title: String,
|
||||
val description: String? = null,
|
||||
@DrawableRes val actionIconResId: Int? = null,
|
||||
@DrawableRes val trailingIconResId: Int? = null
|
||||
)
|
||||
|
||||
@Composable
|
||||
@@ -59,10 +59,10 @@ fun NaviSnackBar(
|
||||
titleColor: Color,
|
||||
titleSize: TextUnit = 12.sp,
|
||||
descriptionColor: Color,
|
||||
onActionClick: (() -> Unit)? = null,
|
||||
onTrailingIconClicked: (() -> Unit)? = null,
|
||||
snackbarDuration: SnackbarDuration = SnackbarDuration.Long,
|
||||
onDismissed: (() -> Unit)? = null,
|
||||
onIconClick: (() -> Unit)? = null
|
||||
onLeadingIconClicked: (() -> Unit)? = null
|
||||
) {
|
||||
val snackState = remember { SnackbarHostState() }
|
||||
|
||||
@@ -77,13 +77,13 @@ fun NaviSnackBar(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
snackBarConfig.iconResId?.let {
|
||||
snackBarConfig.leadingIconResId?.let {
|
||||
Image(
|
||||
painter = painterResource(id = snackBarConfig.iconResId),
|
||||
painter = painterResource(id = snackBarConfig.leadingIconResId),
|
||||
contentDescription = null,
|
||||
modifier =
|
||||
Modifier.align(alignment = Alignment.CenterVertically).clickable {
|
||||
onIconClick?.invoke()
|
||||
onLeadingIconClicked?.invoke()
|
||||
}
|
||||
)
|
||||
Spacer(modifier = Modifier.width(16.dp))
|
||||
@@ -107,6 +107,17 @@ fun NaviSnackBar(
|
||||
)
|
||||
}
|
||||
}
|
||||
snackBarConfig.trailingIconResId?.let {
|
||||
Spacer(modifier = Modifier.width(16.dp))
|
||||
Image(
|
||||
painter = painterResource(id = snackBarConfig.trailingIconResId),
|
||||
contentDescription = null,
|
||||
modifier =
|
||||
Modifier.align(alignment = Alignment.CenterVertically).clickable {
|
||||
onTrailingIconClicked?.invoke()
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -146,8 +157,7 @@ fun ErrorSnackBar(
|
||||
show: Boolean,
|
||||
snackBarConfig: SnackBarConfig,
|
||||
onDismissed: (() -> Unit)? = null,
|
||||
onActionClick: (() -> Unit)? = null,
|
||||
onIconClick: (() -> Unit)? = null,
|
||||
onLeadingIconClicked: (() -> Unit)? = null,
|
||||
snackbarDuration: SnackbarDuration = SnackbarDuration.Short
|
||||
) {
|
||||
NaviSnackBar(
|
||||
@@ -159,6 +169,6 @@ fun ErrorSnackBar(
|
||||
descriptionColor = FF4D4D4D,
|
||||
snackbarDuration = snackbarDuration,
|
||||
onDismissed = onDismissed,
|
||||
onIconClick = onIconClick
|
||||
onLeadingIconClicked = onLeadingIconClicked
|
||||
)
|
||||
}
|
||||
|
||||
@@ -644,10 +644,10 @@ class DocumentUploadByCategoryFragment :
|
||||
ErrorSnackBar(
|
||||
snackbarDuration = SnackbarDuration.Indefinite,
|
||||
show = true,
|
||||
onIconClick = { documentUploadVM.updateSnackbarVisibleState(false) },
|
||||
onLeadingIconClicked = { documentUploadVM.updateSnackbarVisibleState(false) },
|
||||
snackBarConfig =
|
||||
SnackBarConfig(
|
||||
iconResId = CommonR.drawable.cross_black,
|
||||
leadingIconResId = CommonR.drawable.cross_black,
|
||||
title = snackbarActionDataState.value?.message.orEmpty()
|
||||
)
|
||||
)
|
||||
|
||||
@@ -18,12 +18,12 @@ object SnackBarPredefinedConfig {
|
||||
iconResId: Int = R.drawable.ic_checked_circle_green
|
||||
) =
|
||||
SnackBarConfig(
|
||||
iconResId = iconResId,
|
||||
leadingIconResId = iconResId,
|
||||
title = title,
|
||||
description = description,
|
||||
actionIconResId = CommonR.drawable.ic_close_black
|
||||
trailingIconResId = CommonR.drawable.ic_close_black
|
||||
)
|
||||
|
||||
fun errorConfig(title: String) =
|
||||
SnackBarConfig(iconResId = CommonR.drawable.ic_exclamation_red_border, title = title)
|
||||
SnackBarConfig(leadingIconResId = CommonR.drawable.ic_exclamation_red_border, title = title)
|
||||
}
|
||||
|
||||
@@ -391,7 +391,7 @@ fun RenderBankDetailInputScreen(
|
||||
show = true,
|
||||
snackBarConfig =
|
||||
SnackBarConfig(
|
||||
iconResId = CommonR.drawable.ic_exclamation_red_border,
|
||||
leadingIconResId = CommonR.drawable.ic_exclamation_red_border,
|
||||
title = warningErrorInfoStateMessage ?: ""
|
||||
),
|
||||
backgroundColor = NaviPayColor.bgInfoOrange,
|
||||
|
||||
@@ -97,6 +97,7 @@ import com.navi.design.snackbar.NaviSnackBar
|
||||
import com.navi.design.snackbar.SnackBarConfig
|
||||
import com.navi.design.theme.getFontWeight
|
||||
import com.navi.design.theme.ttComposeFontFamily
|
||||
import com.navi.naviwidgets.R as WidgetsR
|
||||
import com.navi.naviwidgets.extensions.NaviText
|
||||
import com.navi.pay.R
|
||||
import com.navi.pay.analytics.NaviPayAnalytics
|
||||
@@ -530,16 +531,17 @@ fun QrScannerScreen(
|
||||
contentDescription = "gallery",
|
||||
)
|
||||
}
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
QrScannerErrorView(
|
||||
qrImageErrorViewEnable = qrImageErrorViewEnable,
|
||||
onActionClick = {
|
||||
qrScannerViewModel.isQrCodeProcessing.set(false)
|
||||
qrScannerViewModel.setImageErrorView(
|
||||
qrImageErrorViewEnable = false
|
||||
)
|
||||
}
|
||||
)
|
||||
if (qrImageErrorViewEnable) {
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
QrScannerErrorView(
|
||||
onTrailingIconClicked = {
|
||||
qrScannerViewModel.isQrCodeProcessing.set(false)
|
||||
qrScannerViewModel.setImageErrorView(
|
||||
qrImageErrorViewEnable = false
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ScannerPermissionView(
|
||||
@@ -977,25 +979,23 @@ private fun TorchButton(isTorchEnabled: Boolean, onTorchToggle: () -> Unit) {
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun QrScannerErrorView(qrImageErrorViewEnable: Boolean, onActionClick: () -> Unit) {
|
||||
private fun QrScannerErrorView(onTrailingIconClicked: () -> Unit) {
|
||||
Box(contentAlignment = Alignment.Center) {
|
||||
if (qrImageErrorViewEnable) {
|
||||
NaviSnackBar(
|
||||
show = true,
|
||||
snackBarConfig =
|
||||
SnackBarConfig(
|
||||
actionIconResId = com.navi.naviwidgets.R.drawable.ic_cross,
|
||||
title = stringResource(id = R.string.navi_pay_no_qr_found)
|
||||
),
|
||||
onActionClick = onActionClick,
|
||||
titleSize = 14.sp,
|
||||
backgroundColor = NaviPayColor.bgError,
|
||||
titleColor = NaviPayColor.onSurfaceCritical,
|
||||
descriptionColor = NaviPayColor.onSurfaceCritical,
|
||||
snackbarDuration = SnackbarDuration.Indefinite,
|
||||
modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp)
|
||||
)
|
||||
}
|
||||
NaviSnackBar(
|
||||
show = true,
|
||||
snackBarConfig =
|
||||
SnackBarConfig(
|
||||
trailingIconResId = WidgetsR.drawable.ic_cross,
|
||||
title = stringResource(id = R.string.navi_pay_no_qr_found)
|
||||
),
|
||||
onTrailingIconClicked = onTrailingIconClicked,
|
||||
titleSize = 14.sp,
|
||||
backgroundColor = NaviPayColor.bgError,
|
||||
titleColor = NaviPayColor.onSurfaceCritical,
|
||||
descriptionColor = NaviPayColor.onSurfaceCritical,
|
||||
snackbarDuration = SnackbarDuration.Indefinite,
|
||||
modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user