Skip to content

Commit

Permalink
My Validators screen implementation pt2.
Browse files Browse the repository at this point in the history
  • Loading branch information
kukabi committed Feb 26, 2024
1 parent 318a2da commit 443b9e6
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import androidx.compose.ui.layout.positionInParent
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.zIndex
Expand All @@ -57,14 +58,17 @@ import io.helikon.subvt.ui.screen.validator.list.ValidatorSummaryView
import io.helikon.subvt.ui.style.Color
import io.helikon.subvt.ui.style.Font
import io.helikon.subvt.ui.util.ThemePreviews
import kotlinx.coroutines.delay
import kotlin.math.abs

data class MyValidatorsScreenState(
val dataRequestState: DataRequestState<String>,
val networks: List<Network>,
val validators: List<ValidatorSummary>,
val validators: List<ValidatorSummary>?,
)

private const val REFRESH_PERIOD_MS = 15_000L

@Composable
fun MyValidatorsScreen(
modifier: Modifier = Modifier,
Expand All @@ -81,6 +85,13 @@ fun MyValidatorsScreen(
}
}

LaunchedEffect(viewModel.dataRequestState) {
if (viewModel.dataRequestState is DataRequestState.Success) {
delay(REFRESH_PERIOD_MS)
viewModel.getMyValidators()
}
}

MyValidatorsScreenContent(
modifier = modifier,
isDark = isDark,
Expand Down Expand Up @@ -214,7 +225,7 @@ fun MyValidatorsScreenContent(
)
}
items(
state.validators,
state.validators ?: listOf(),
key = {
it.accountId.getBytes()
},
Expand Down Expand Up @@ -246,7 +257,16 @@ fun MyValidatorsScreenContent(
)
}
}
if (state.dataRequestState is DataRequestState.Success) {
if (state.dataRequestState !is DataRequestState.Error && state.validators != null) {
if (state.validators.isEmpty()) {
Text(
modifier = Modifier.align(Alignment.Center).zIndex(5.0f),
textAlign = TextAlign.Center,
text = stringResource(id = R.string.my_validators_no_validators),
style = Font.light(14.sp),
color = Color.text(isDark),
)
}
Column(
modifier =
Modifier
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import io.helikon.subvt.data.model.app.ValidatorSummary
import io.helikon.subvt.data.repository.NetworkRepository
import io.helikon.subvt.data.service.AppService
import io.helikon.subvt.data.service.ReportService
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
Expand All @@ -36,7 +37,7 @@ class MyValidatorsViewModel
)
private lateinit var reportServices: List<Pair<Long, ReportService>>

var validators by mutableStateOf(listOf<ValidatorSummary>().toImmutableList())
var validators by mutableStateOf<ImmutableList<ValidatorSummary>?>(null)
private set
var dataRequestState by mutableStateOf<DataRequestState<String>>(DataRequestState.Idle)
private set
Expand Down Expand Up @@ -78,18 +79,26 @@ class MyValidatorsViewModel
validatorSummaries.add(validatorSummaryReport.validatorSummary)
}
} else {
/*
dataRequestState =
DataRequestState.Error(validatorSummaryResult.exceptionOrNull())
return@launch
*/
}
}
validatorSummaries.sortWith(validatorIdentityComparator)
validators = validatorSummaries.toImmutableList()
dataRequestState = DataRequestState.Success("")
} else {
if (validators?.isEmpty() == true) {
validators = null
}
dataRequestState = DataRequestState.Error(result.exceptionOrNull())
}
} catch (e: Throwable) {
if (validators?.isEmpty() == true) {
validators = null
}
dataRequestState = DataRequestState.Error(e)
}
}
Expand Down
1 change: 1 addition & 0 deletions subvt/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
<string name="my_validators_tab_title">My Validators</string>
<string name="my_validators_title">My Validators</string>
<string name="my_validators_add_validator">Add Validator</string>
<string name="my_validators_no_validators">You haven\'t added\nany validators.</string>
<string name="my_validators_error">Error while fetching your validators.</string>

<string name="notifications_tab_title">Notifications</string>
Expand Down

0 comments on commit 443b9e6

Please sign in to comment.