diff --git a/app/src/main/java/com/weatherxm/ui/claimdevice/selectstation/SelectStationTypeActivity.kt b/app/src/main/java/com/weatherxm/ui/claimdevice/selectstation/SelectStationTypeActivity.kt index d91eb0b2f..f976c6101 100644 --- a/app/src/main/java/com/weatherxm/ui/claimdevice/selectstation/SelectStationTypeActivity.kt +++ b/app/src/main/java/com/weatherxm/ui/claimdevice/selectstation/SelectStationTypeActivity.kt @@ -4,6 +4,7 @@ import android.app.Activity import android.os.Bundle import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement.spacedBy import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -104,7 +105,7 @@ class SelectStationTypeActivity : BaseActivity() { Column( modifier = Modifier.padding(dimensionResource(R.dimen.padding_normal)), horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = spacedBy(dimensionResource(R.dimen.margin_small)) + verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_small)) ) { Image(painter = painterResource(imageResId), contentDescription = null) MediumText(text = name, fontWeight = FontWeight.Bold, colorRes = R.color.darkestBlue) diff --git a/app/src/main/java/com/weatherxm/ui/components/RetryCardView.kt b/app/src/main/java/com/weatherxm/ui/components/RetryCardView.kt new file mode 100644 index 000000000..ac44d9c41 --- /dev/null +++ b/app/src/main/java/com/weatherxm/ui/components/RetryCardView.kt @@ -0,0 +1,33 @@ +package com.weatherxm.ui.components + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import com.weatherxm.databinding.ViewRetryCardBinding + +class RetryCardView : ConstraintLayout { + + private lateinit var binding: ViewRetryCardBinding + + constructor(context: Context) : super(context) { + onCreate(context) + } + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { + onCreate(context) + } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + onCreate(context) + } + + private fun onCreate(context: Context) { + binding = ViewRetryCardBinding.inflate(LayoutInflater.from(context), this) + } + + + fun listener(listener: () -> Unit) = binding.retryCard.setOnClickListener { listener.invoke() } +} diff --git a/app/src/main/java/com/weatherxm/ui/components/compose/Texts.kt b/app/src/main/java/com/weatherxm/ui/components/compose/Texts.kt index 5fd11cd1a..49f196528 100644 --- a/app/src/main/java/com/weatherxm/ui/components/compose/Texts.kt +++ b/app/src/main/java/com/weatherxm/ui/components/compose/Texts.kt @@ -21,18 +21,3 @@ fun MediumText( style = MaterialTheme.typography.bodyMedium ) } - -@Suppress("FunctionNaming") -@Composable -fun LargeText( - text: String, - fontWeight: FontWeight = FontWeight.Normal, - colorRes: Int = R.color.colorOnSurface -) { - Text( - text = text, - fontWeight = fontWeight, - color = colorResource(colorRes), - style = MaterialTheme.typography.bodyLarge - ) -} diff --git a/app/src/main/java/com/weatherxm/ui/devicesrewards/DeviceRewardsAdapter.kt b/app/src/main/java/com/weatherxm/ui/devicesrewards/DeviceRewardsAdapter.kt index 6c4dc2660..479989771 100644 --- a/app/src/main/java/com/weatherxm/ui/devicesrewards/DeviceRewardsAdapter.kt +++ b/app/src/main/java/com/weatherxm/ui/devicesrewards/DeviceRewardsAdapter.kt @@ -182,14 +182,12 @@ class DeviceRewardsAdapter( binding.detailsStatus.visible(false) binding.detailsContainer.invisible() binding.earnedBy.invisible() - binding.retryCard.setContent { - RetryCard { - onFetchNewData.invoke( - deviceId, - absoluteAdapterPosition, - binding.chartRangeSelector.checkedChipId() - ) - } + binding.retryCard.listener { + onFetchNewData.invoke( + deviceId, + absoluteAdapterPosition, + binding.chartRangeSelector.checkedChipId() + ) } binding.chartRangeSelector.enable() binding.retryCard.visible(true) diff --git a/app/src/main/java/com/weatherxm/ui/devicesrewards/DevicesRewardsActivity.kt b/app/src/main/java/com/weatherxm/ui/devicesrewards/DevicesRewardsActivity.kt index 8d8f7749f..0988f3a9e 100644 --- a/app/src/main/java/com/weatherxm/ui/devicesrewards/DevicesRewardsActivity.kt +++ b/app/src/main/java/com/weatherxm/ui/devicesrewards/DevicesRewardsActivity.kt @@ -1,22 +1,6 @@ package com.weatherxm.ui.devicesrewards import android.os.Bundle -import androidx.compose.foundation.layout.Arrangement.spacedBy -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Card -import androidx.compose.material3.CardDefaults -import androidx.compose.material3.Icon -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.colorResource -import androidx.compose.ui.res.dimensionResource -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.dp import com.weatherxm.R import com.weatherxm.analytics.AnalyticsService import com.weatherxm.databinding.ActivityDevicesRewardsBinding @@ -28,7 +12,6 @@ import com.weatherxm.ui.common.invisible import com.weatherxm.ui.common.parcelable import com.weatherxm.ui.common.visible import com.weatherxm.ui.components.BaseActivity -import com.weatherxm.ui.components.compose.LargeText import com.weatherxm.util.NumberUtils.formatTokens import com.weatherxm.util.initTotalEarnedChart import org.koin.androidx.viewmodel.ext.android.viewModel @@ -136,49 +119,11 @@ class DevicesRewardsActivity : BaseActivity() { binding.totalEarnedChart.invisible() binding.totalEarned.invisible() binding.totalEarnedStatus.visible(false) - binding.retryCard.setContent { - RetryCard { - model.getDevicesRewardsByRangeTotals( - binding.totalEarnedRangeSelector.checkedChipId() - ) - } - } - binding.retryCard.visible(true) - } -} - -@Suppress("FunctionNaming") -@Composable -fun RetryCard(onClickListener: () -> Unit) { - Card( - colors = CardDefaults.cardColors( - containerColor = colorResource(R.color.colorSurface) - ), - onClick = { onClickListener() }, - elevation = CardDefaults.cardElevation(0.dp) - ) { - Column( - Modifier - .padding(0.dp, dimensionResource(R.dimen.padding_normal_to_large)) - .fillMaxWidth(), - verticalArrangement = spacedBy(dimensionResource(R.dimen.padding_small)), - horizontalAlignment = Alignment.CenterHorizontally - ) { - Icon( - modifier = Modifier.padding( - 0.dp, - 0.dp, - 0.dp, - dimensionResource(R.dimen.padding_small_to_normal) - ), - painter = painterResource(R.drawable.ic_retry), - contentDescription = null + binding.retryCard.listener { + model.getDevicesRewardsByRangeTotals( + binding.totalEarnedRangeSelector.checkedChipId() ) - LargeText( - text = stringResource(R.string.error_generic_message), - fontWeight = FontWeight.Bold - ) - LargeText(text = stringResource(R.string.tap_to_retry)) } + binding.retryCard.visible(true) } } diff --git a/app/src/main/res/layout/activity_devices_rewards.xml b/app/src/main/res/layout/activity_devices_rewards.xml index cb142b2ad..3268ae1b5 100644 --- a/app/src/main/res/layout/activity_devices_rewards.xml +++ b/app/src/main/res/layout/activity_devices_rewards.xml @@ -160,7 +160,7 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/totalEarnedRangeSelector" /> - + - + + + + + + + + + + + + + + + + +