NTP-3917 | QR scanner image upload snackbar visibility fix (#12611)

This commit is contained in:
Shaurya Rehan
2024-09-19 12:47:02 +05:30
committed by GitHub
parent 8f5a0edadb
commit b173a9f94f
6 changed files with 57 additions and 47 deletions

View File

@@ -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)
}

View File

@@ -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
)
}

View File

@@ -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()
)
)

View File

@@ -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)
}

View File

@@ -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,

View File

@@ -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)
)
}
}