From dd9937f473a659fc7897e00a83d978f34dc59e4f Mon Sep 17 00:00:00 2001 From: Vusal Aliev <93622997+vusketta@users.noreply.github.com> Date: Tue, 17 Oct 2023 22:53:48 +0300 Subject: [PATCH] Dashboard main info works! --- .../SubscriptionDashBoardActivity.kt | 101 ++++++------------ 1 file changed, 31 insertions(+), 70 deletions(-) diff --git a/app/src/main/java/com/threehundredbugs/subscriptio/presentation/SubscriptionDashBoardActivity.kt b/app/src/main/java/com/threehundredbugs/subscriptio/presentation/SubscriptionDashBoardActivity.kt index 26c3d1a..70cb1d5 100644 --- a/app/src/main/java/com/threehundredbugs/subscriptio/presentation/SubscriptionDashBoardActivity.kt +++ b/app/src/main/java/com/threehundredbugs/subscriptio/presentation/SubscriptionDashBoardActivity.kt @@ -3,10 +3,8 @@ package com.threehundredbugs.subscriptio.presentation import android.content.Context import android.content.Intent import android.os.Bundle -import android.util.Log +import android.view.SurfaceControl.Transaction import android.widget.Toast -import androidx.compose.runtime.getValue -import androidx.compose.runtime.setValue import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.background @@ -34,9 +32,11 @@ import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -51,28 +51,20 @@ import androidx.compose.ui.unit.sp import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.LifecycleOwner -import androidx.lifecycle.lifecycleScope import com.threehundredbugs.subscriptio.R import com.threehundredbugs.subscriptio.data.local.MainDatabase import com.threehundredbugs.subscriptio.data.local.repository.SubscriptionRepository import com.threehundredbugs.subscriptio.domain.enity.SubscriptionEntity import com.threehundredbugs.subscriptio.presentation.ui.theme.SubScriptioTheme -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking class SubscriptionDashBoardActivity : ComponentActivity() { - private val subscriptionRepository by lazy { SubscriptionRepository(MainDatabase.getInstance(application).subscriptionDao()) } - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContent { - var subscription by remember { try { mutableStateOf(subscriptionRepository.getAllSubscriptions()) @@ -82,12 +74,8 @@ class SubscriptionDashBoardActivity : ComponentActivity() { mutableStateOf(listOf()) } } - - - HomeScreen(subscription = subscription) { subscription = subscriptionRepository.getAllSubscriptions() - } } } @@ -122,11 +110,9 @@ fun HomeScreen( SubScriptioTheme { Scaffold( floatingActionButtonPosition = FabPosition.End, - floatingActionButton = { - FloatingButton() - }, content = { it -> - it.apply { - } + floatingActionButton = { FloatingButton() }, + content = { it -> + it.apply {} Surface( modifier = Modifier .background(MaterialTheme.colorScheme.background) @@ -137,16 +123,17 @@ fun HomeScreen( bottom = 12.dp ) ) { - Column { - DashBoard() + val activeSubscription = subscription.filter { it.active } + DashBoard(activeSubscription) SubscriptionList( - activeSubscription = subscription.filter { it.active }, + activeSubscription = activeSubscription, notActiveSubscription = subscription.filter { !it.active }, ) } } - }) + } + ) } } @@ -158,12 +145,10 @@ fun FloatingButton() { contentColor = MaterialTheme.colorScheme.onPrimary, onClick = { context.startActivity(AddSubscriptionActivity.newInstance(context)) - }, + } ) { Icon(Icons.Filled.Add, "Floating action button.") } - - } fun testSubscriptionData(): Pair<List<SubscriptionEntity>, List<SubscriptionEntity>> { @@ -203,9 +188,8 @@ fun testSubscriptionData(): Pair<List<SubscriptionEntity>, List<SubscriptionEnti return Pair(activeSubscription, notActiveSubscription) } - @Composable -fun DashBoard() { +fun DashBoard(activeSubscription: List<SubscriptionEntity>) { Text( text = stringResource(id = R.string.my_subscription), fontSize = 26.sp, @@ -223,8 +207,7 @@ fun DashBoard() { .fillMaxWidth() .padding(start = 20.dp, end = 20.dp, top = 8.dp, bottom = 8.dp), horizontalArrangement = Arrangement.SpaceBetween, - - ) { + ) { Column( horizontalAlignment = Alignment.CenterHorizontally, ) { @@ -235,7 +218,7 @@ fun DashBoard() { fontSize = 18.sp ) Text( - text = "20 подпиÑок", + text = getActiveSubscriptionsNumber(activeSubscription.size), color = MaterialTheme.colorScheme.secondary, fontSize = 14.sp, fontWeight = FontWeight.Medium, @@ -253,7 +236,7 @@ fun DashBoard() { fontSize = 18.sp ) Text( - text = "100 Ñ€", + text = getMonthAmount(activeSubscription.map { it.sum }), color = MaterialTheme.colorScheme.secondary, fontSize = 14.sp, fontWeight = FontWeight.Medium, @@ -261,9 +244,7 @@ fun DashBoard() { ) } Spacer(modifier = Modifier.padding(end = 14.dp)) - Column( - horizontalAlignment = Alignment.CenterHorizontally, - ) { + Column(horizontalAlignment = Alignment.CenterHorizontally) { Text( modifier = Modifier.padding(bottom = 2.dp), text = stringResource(id = R.string.transaction), @@ -271,7 +252,7 @@ fun DashBoard() { fontSize = 18.sp ) Text( - text = "20 ÑнварÑ", + text = getNextTransaction(activeSubscription.map { it.lastOrNextTransactionDate }), color = MaterialTheme.colorScheme.secondary, fontSize = 14.sp, fontWeight = FontWeight.Medium, @@ -280,9 +261,19 @@ fun DashBoard() { } } } +} +fun getActiveSubscriptionsNumber(number: Int): String = "$number " + + when { + number == 1 -> "подпиÑка" + number % 10 in 2..4 -> "подпиÑки" + else -> "подпиÑок" + } -} +fun getMonthAmount(sums: List<String>): String = "${sums.sumOf { it.toDouble() }} руб." + +fun getNextTransaction(transactions: List<String>): String = + if (transactions.isEmpty()) "-" else transactions.min() @Composable fun SubscriptionList( @@ -302,7 +293,6 @@ fun SubscriptionList( ) Spacer(modifier = Modifier.padding(bottom = 12.dp)) } - if (activeSubscription.isEmpty()) { item { Text( @@ -310,7 +300,6 @@ fun SubscriptionList( ) Spacer(modifier = Modifier.padding(bottom = 6.dp)) - } } else { items(activeSubscription) { @@ -354,7 +343,6 @@ fun SubscriptionCard(subscriptionEntity: SubscriptionEntity) { ) ) } - ) { Column( modifier = Modifier.padding(start = 14.dp, end = 14.dp, top = 6.dp, bottom = 6.dp) @@ -391,7 +379,6 @@ fun SubscriptionCard(subscriptionEntity: SubscriptionEntity) { textAlign = TextAlign.Center ) } - } Row( modifier = Modifier.fillMaxWidth(), @@ -399,9 +386,8 @@ fun SubscriptionCard(subscriptionEntity: SubscriptionEntity) { ) { Text( text = stringResource( - id = if (subscriptionEntity.active) { - R.string.next_transaction - } else R.string.last_transaction + id = if (subscriptionEntity.active) R.string.next_transaction + else R.string.last_transaction ), color = MaterialTheme.colorScheme.outline, fontWeight = FontWeight.SemiBold, @@ -417,28 +403,3 @@ fun SubscriptionCard(subscriptionEntity: SubscriptionEntity) { } Spacer(modifier = Modifier.padding(bottom = 8.dp)) } - - -//@Preview(showBackground = true) -//@Composable -//fun GreetingPreview3() { -// val (activeSubscription, notActiveSubscription) = testSubscriptionData() -// -// SubScriptioTheme { -// Surface { -// Column( -// modifier = Modifier -// .background(MaterialTheme.colorScheme.background) -// .padding(start = 16.dp, end = 16.dp, top = 12.dp, bottom = 12.dp) -// -// ) { -// DashBoard() -// SubscriptionList( -// activeSubscription = activeSubscription, -// notActiveSubscription = notActiveSubscription -// ) -// } -// } -// -// } -//} \ No newline at end of file -- GitLab