From bf6f3fd2e48decccdc865b1712d5cc59d6776233 Mon Sep 17 00:00:00 2001 From: ElEgEv <112943269+ElEgEv@users.noreply.github.com> Date: Mon, 27 Nov 2023 20:54:27 +0400 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D0=B2=20=D0=90=D0=BD?= =?UTF-8?q?=D0=B3=D0=B0=D1=80=D0=B5=20=D0=B8=20=D0=B7=D0=B0=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=81=20=D0=BA=20=D0=91=D0=94.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../8.0/executionHistory/executionHistory.bin | Bin 2596750 -> 2596750 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes compose/.gradle/8.0/fileHashes/fileHashes.bin | Bin 310469 -> 312269 bytes .../.gradle/8.0/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.0/fileHashes/resourceHashesCache.bin | Bin 131891 -> 161371 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .../tank/composeui/list/TankListViewModel.kt | 20 +++- .../java/ru/ulstu/is/pmu/tank/dao/TankDao.kt | 11 +++ .../tank/repository/OfflineTankRepository.kt | 3 + .../is/pmu/tank/repository/TankRepository.kt | 2 + .../ru/ulstu/is/pmu/tanks/composeui/Hangar.kt | 88 ++++++++---------- 11 files changed, 74 insertions(+), 50 deletions(-) diff --git a/compose/.gradle/8.0/executionHistory/executionHistory.bin b/compose/.gradle/8.0/executionHistory/executionHistory.bin index 623e98154e5a62a652da64f562cf0fde74b53d23..4ea19bbb9c262afae8b2fccbb84c3ebb38b4af28 100644 GIT binary patch delta 25454 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 {hg>>5& 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 Le3`71Waa+>&IurI delta 23600 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 KEOjeo;Qs^b08UZ> diff --git a/compose/.gradle/8.0/executionHistory/executionHistory.lock b/compose/.gradle/8.0/executionHistory/executionHistory.lock index 818fb2bda9e8294c06437af704765e5b1592f285..e8ea7924142f77628eb3a0c06a820b2762618eb7 100644 GIT binary patch literal 17 VcmZQpRelW~_0xgNXZF?I_CA71rH_ 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 Xc2r2H3*!IKtsPTIhJTlqVj%iYX|!Xw delta 1234 zcmYLIe^As#6u-B3V^R!vf;0Ceh~LM+d31-Mb8r(lhR5+k0!|UsfRrg9zz~EJ$ihHT znGslE!<@-zCN8F#pmo|Dm0wyy*bl(skV_q)A|MCE8WI~@_{y|@?Cg7=_u2Q}=k1Qq zInWd9J3NyDO;KGy z)G0uL@K&{ekEus-{-!aSu9-$ST{|j#RP~G7MEWUr$?7uaJbAjZ-y*pl{?9~#V6bK`iQ$VW#_x2A4T3SOysGyP@-ov5AJs?E9=zp!^-{i-u2*|tF zT0{C5oC*uAkMls%(YD|$)!P0B>>ijcZ51xqL0IkRpG}7(M5!Kq! zD$!2teTt9ao3*}>*6F>Z?9}xr9ZDqc83EgqUAiKK$9$yVALp}LCBC5R1|&ytXO zNFo>OK}%d3AeiiL0D;uMYnu fXdMV`S#=;?8F~ie^Y)RVz<)Zug>{UVK9~I;;Qikf diff --git a/compose/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/compose/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 05085576cd593a6baaaa43889b6d528549ca25f6..f6a73f847549cc19f98ec7758534cb0f58073cc5 100644 GIT binary patch literal 17 VcmZQhF*rNr{gMY+3}DbR5db`K1@iy^ literal 17 VcmZQhF*rNr{gMY+3}Dc`1OPmO1_b~B diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/list/TankListViewModel.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/list/TankListViewModel.kt index de58ffa..af37fd7 100644 --- a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/list/TankListViewModel.kt +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/list/TankListViewModel.kt @@ -8,10 +8,12 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import ru.ulstu.`is`.pmu.tank.database.AppDataContainer import ru.ulstu.`is`.pmu.tank.model.Tank +import ru.ulstu.`is`.pmu.tank.model.TankWithNationAndLevel import ru.ulstu.`is`.pmu.tank.repository.TankRepository class TankListViewModel( - private val tankRepository: TankRepository + private val tankRepository: TankRepository, + private var userId: Long = 100L ) : ViewModel() { val tankListUiState: StateFlow = tankRepository.getAll().map { TankListUiState(it) @@ -21,9 +23,23 @@ class TankListViewModel( initialValue = TankListUiState() ) + val usersTanksUiState: StateFlow = tankRepository.getUserTanks(userId).map { + UserTankListUiState(it) + }.stateIn( + scope = viewModelScope, + started = SharingStarted.WhileSubscribed(stopTimeoutMillis = AppDataContainer.TIMEOUT), + initialValue = UserTankListUiState() + ) + suspend fun deleteTank(tank: Tank) { tankRepository.deleteTank(tank) } + + fun setUserId(uid: Long){ + userId = uid + } } -data class TankListUiState(val tankList: List = listOf()) \ No newline at end of file +data class TankListUiState(val tankList: List = listOf()) + +data class UserTankListUiState(val userTankList: List = listOf()) \ No newline at end of file diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/dao/TankDao.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/dao/TankDao.kt index f2b36f4..98ea165 100644 --- a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/dao/TankDao.kt +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/dao/TankDao.kt @@ -10,6 +10,7 @@ import kotlinx.coroutines.flow.Flow import ru.ulstu.`is`.pmu.tank.model.LevelWithTanks import ru.ulstu.`is`.pmu.tank.model.Nation import ru.ulstu.`is`.pmu.tank.model.Tank +import ru.ulstu.`is`.pmu.tank.model.TankWithNationAndLevel @Dao interface TankDao { @@ -20,6 +21,16 @@ interface TankDao { @Query("select * from tanks where tanks.tankId = :uid") fun getTankUid(uid: Long): Flow + //получаем все танки пользователя по его Id + @Query( + "SELECT t.tankId, t.name, t.price, t.image, l.level, n.nationName FROM UserTankCrossRef AS ut " + + "LEFT JOIN tanks as t on ut.tankId = t.tankId " + + "LEFT JOIN levels as l on t.levelId = l.uid " + + "LEFT JOIN nations as n on t.nationId = n.uid " + + "WHERE ut.userId = :uid" + ) + fun getUserTanks(uid: Long): Flow> + @Insert suspend fun insert(tank: Tank) diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/repository/OfflineTankRepository.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/repository/OfflineTankRepository.kt index 0f94908..e5f33e6 100644 --- a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/repository/OfflineTankRepository.kt +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/repository/OfflineTankRepository.kt @@ -3,12 +3,15 @@ package ru.ulstu.`is`.pmu.tank.repository import kotlinx.coroutines.flow.Flow import ru.ulstu.`is`.pmu.tank.dao.TankDao import ru.ulstu.`is`.pmu.tank.model.Tank +import ru.ulstu.`is`.pmu.tank.model.TankWithNationAndLevel class OfflineTankRepository(private val tankDao: TankDao) : TankRepository { override fun getAll(): Flow> = tankDao.getAll() override fun getTank(uid: Long): Flow = tankDao.getTankUid(uid) + override fun getUserTanks(uid: Long): Flow> = tankDao.getUserTanks(uid) + override suspend fun insertTank(tank: Tank) = tankDao.insert(tank) override suspend fun updateTank(tank: Tank) = tankDao.update(tank) diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/repository/TankRepository.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/repository/TankRepository.kt index d2cf67b..bc9b953 100644 --- a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/repository/TankRepository.kt +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/repository/TankRepository.kt @@ -2,10 +2,12 @@ package ru.ulstu.`is`.pmu.tank.repository import kotlinx.coroutines.flow.Flow import ru.ulstu.`is`.pmu.tank.model.Tank +import ru.ulstu.`is`.pmu.tank.model.TankWithNationAndLevel interface TankRepository { fun getAll(): Flow> fun getTank(uid: Long): Flow + fun getUserTanks(uid: Long): Flow> suspend fun insertTank(tank: Tank) suspend fun updateTank(tank: Tank) suspend fun deleteTank(tank: Tank) diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tanks/composeui/Hangar.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tanks/composeui/Hangar.kt index eb37dc2..1d0e471 100644 --- a/compose/app/src/main/java/ru/ulstu/is/pmu/tanks/composeui/Hangar.kt +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tanks/composeui/Hangar.kt @@ -20,6 +20,7 @@ import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.key import androidx.compose.runtime.mutableStateListOf @@ -36,6 +37,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavController import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController @@ -46,64 +48,53 @@ import kotlinx.coroutines.flow.flow import kotlinx.coroutines.withContext import ru.ulstu.`is`.pmu.R import ru.ulstu.`is`.pmu.composeui.navigation.Screen +import ru.ulstu.`is`.pmu.tank.composeui.list.TankListViewModel import ru.ulstu.`is`.pmu.tank.database.AppDatabase import ru.ulstu.`is`.pmu.tank.model.Level import ru.ulstu.`is`.pmu.tank.model.Nation import ru.ulstu.`is`.pmu.tank.model.Tank +import ru.ulstu.`is`.pmu.tank.model.TankWithNationAndLevel import ru.ulstu.`is`.pmu.tank.model.UserWithTanks +import ru.ulstu.`is`.pmu.ui.AppViewModelProvider import ru.ulstu.`is`.pmu.ui.theme.CustomDark import ru.ulstu.`is`.pmu.ui.theme.CustomYellow import ru.ulstu.`is`.pmu.ui.theme.PmudemoTheme +@Composable +fun Hangar( + navController: NavController?, + viewModel: TankListViewModel = viewModel(factory = AppViewModelProvider.Factory) +){ + viewModel.setUserId(100L) + val userTankListUiState by viewModel.usersTanksUiState.collectAsState() + + //новый вызов основного списка + Hangar(tankList = userTankListUiState.userTankList ) +} + @OptIn(ExperimentalMaterial3Api::class) @Composable -fun Hangar(navController: NavController) { - val navBackStackEntry by navController.currentBackStackEntryAsState() - val currentDestination = navBackStackEntry?.destination - val currentScreen = currentDestination?.route?.let { Screen.getItem(it) } - - val context = LocalContext.current - val (users, setUsers) = remember { mutableStateOf(null) } - val nations = remember { mutableStateListOf() } - val levels = remember { mutableStateListOf() } - - fun getData(): Flow { - return flow { - AppDatabase.getInstance(context).userDao().getUserUid(100L).collect() { data -> - emit(data.firstNotNullOf { - UserWithTanks( - user = it.key, - tanks = it.value - ) - }) - } - } - } - - LaunchedEffect(Unit) { - withContext(Dispatchers.IO) { - getData().collect() { - setUsers(it) - } - } - } - +private fun Hangar( + tankList: List +) { Column( verticalArrangement = Arrangement.spacedBy(15.dp) ) { val startIndex = 0 - if(users != null){ - val countRows = users.tanks.size / 2 - - //проверяем на то, что не всё поместилось в ряды по 2 элемента - val oneLastElem = users.tanks.size % 2 + if(tankList.isNotEmpty()){ + val countRows = tankList.size / 2 var index = 0 var supportCountRow = countRows - for (n in 1..(supportCountRow ?: 1)) { + //проверяем на то, что не всё поместилось в ряды по 2 элемента + if(tankList.size % 2 == 1){ + supportCountRow++ + } + + for (n in 1..supportCountRow) { Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.SpaceAround, @@ -111,8 +102,14 @@ fun Hangar(navController: NavController) { .fillMaxWidth() .padding(10.dp, 0.dp, 10.dp, 0.dp) ) { + var supportSizeRow = 1 + + if(n == supportCountRow && supportSizeRow % 2 != 0){ + supportSizeRow = 0 + } + //цикл для заполнения строки карточек - for (m in 0..1) { + for (m in 0..supportSizeRow) { Column( modifier = Modifier.background(CustomYellow) ) { @@ -132,14 +129,14 @@ fun Hangar(navController: NavController) { ) { Image( painter = painterResource( - id = users.tanks[index].image + id = tankList[index].image ), contentDescription = stringResource(id = R.string.tanks_main_title), modifier = Modifier .height(130.dp) ) Text( - text = users.tanks[index].name, + text = tankList[index].name, fontSize = 20.sp, fontWeight = FontWeight.Bold, color = Color.Black, @@ -147,7 +144,7 @@ fun Hangar(navController: NavController) { modifier = Modifier.fillMaxWidth() ) Text( - text = "Нация: " + users.tanks[index].nationName, + text = "Нация: " + tankList[index].nationName, fontSize = 17.sp, fontWeight = FontWeight.Bold, color = Color.Black, @@ -155,7 +152,7 @@ fun Hangar(navController: NavController) { modifier = Modifier.fillMaxWidth() ) Text( - text = "Уровень: " + users.tanks[index].level.toString(), + text = "Уровень: " + tankList[index].level.toString(), fontSize = 17.sp, fontWeight = FontWeight.Bold, color = Color.Black, @@ -163,7 +160,7 @@ fun Hangar(navController: NavController) { modifier = Modifier.fillMaxWidth() ) Text( - text = "Стоимость: " + users.tanks[index].price.toString(), + text = "Стоимость: " + tankList[index].price.toString(), fontSize = 17.sp, fontWeight = FontWeight.Bold, color = Color.Black, @@ -175,11 +172,6 @@ fun Hangar(navController: NavController) { } index++ - - //если надо будет допечатать ещё один элемент - if (n == supportCountRow && oneLastElem != 0) { - supportCountRow = oneLastElem - } } } Spacer(Modifier.height(20.dp))