fixed warning, fixed pullrefresh items
This commit is contained in:
parent
702d8972bd
commit
638b9d6aaf
@ -75,16 +75,16 @@ dependencies {
|
||||
implementation("androidx.compose.ui:ui-graphics:1.6.0-beta02")
|
||||
implementation("androidx.compose.ui:ui-tooling-preview:1.6.0-beta02")
|
||||
implementation("androidx.compose.material3:material3:1.1.2")
|
||||
implementation("androidx.compose.material:material:1.5.4")
|
||||
implementation("androidx.paging:paging-compose:3.2.1")
|
||||
implementation("eu.bambooapps:compose-material3-pullrefresh:1.0.0")
|
||||
|
||||
// Room
|
||||
val room_version = "2.6.1"
|
||||
implementation("androidx.room:room-runtime:$room_version")
|
||||
annotationProcessor("androidx.room:room-compiler:$room_version")
|
||||
ksp("androidx.room:room-compiler:$room_version")
|
||||
implementation("androidx.room:room-ktx:$room_version")
|
||||
implementation("androidx.room:room-paging:$room_version")
|
||||
val roomVersion = "2.6.1"
|
||||
implementation("androidx.room:room-runtime:$roomVersion")
|
||||
annotationProcessor("androidx.room:room-compiler:$roomVersion")
|
||||
ksp("androidx.room:room-compiler:$roomVersion")
|
||||
implementation("androidx.room:room-ktx:$roomVersion")
|
||||
implementation("androidx.room:room-paging:$roomVersion")
|
||||
|
||||
// Tests
|
||||
testImplementation("junit:junit:4.13.2")
|
||||
|
@ -6,7 +6,6 @@ import androidx.room.Delete
|
||||
import androidx.room.Query
|
||||
import com.zyzf.coffeepreorder.database.model.Coffee
|
||||
import com.zyzf.coffeepreorder.database.model.CoffeeWithCart
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
||||
interface CoffeeDao {
|
||||
|
@ -59,6 +59,6 @@ data class Coffee(
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return uid ?: -1
|
||||
return uid
|
||||
}
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
package com.zyzf.coffeepreorder.ui.cart
|
||||
|
||||
import android.content.Context
|
||||
import android.content.res.Configuration
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
@ -13,32 +12,25 @@ import androidx.compose.foundation.layout.heightIn
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Add
|
||||
import androidx.compose.material.icons.filled.Clear
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ButtonDefaults
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.ExtendedFloatingActionButton
|
||||
import androidx.compose.material3.FloatingActionButton
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.material3.rememberModalBottomSheetState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.MutableState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateListOf
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
@ -62,20 +54,17 @@ import androidx.paging.compose.itemKey
|
||||
import coil.compose.AsyncImage
|
||||
import coil.request.ImageRequest
|
||||
import com.zyzf.coffeepreorder.R
|
||||
import com.zyzf.coffeepreorder.database.AppDatabase
|
||||
import com.zyzf.coffeepreorder.database.model.Coffee
|
||||
import com.zyzf.coffeepreorder.ui.AppViewModelProvider
|
||||
import com.zyzf.coffeepreorder.ui.coffee.CoffeeList
|
||||
import com.zyzf.coffeepreorder.ui.coffee.CoffeeListViewModel
|
||||
import com.zyzf.coffeepreorder.ui.navigation.Screen
|
||||
import com.zyzf.coffeepreorder.ui.theme.CoffeePreorderTheme
|
||||
import kotlinx.coroutines.DelicateCoroutinesApi
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import eu.bambooapps.material3.pullrefresh.PullRefreshIndicator
|
||||
import eu.bambooapps.material3.pullrefresh.pullRefresh
|
||||
import eu.bambooapps.material3.pullrefresh.rememberPullRefreshState
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
@OptIn(DelicateCoroutinesApi::class, ExperimentalMaterialApi::class)
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun Cart(
|
||||
navController: NavController?,
|
||||
@ -106,14 +95,13 @@ fun Cart(
|
||||
)
|
||||
}
|
||||
) { innerPadding ->
|
||||
PullRefreshIndicator(
|
||||
refreshing, state,
|
||||
Modifier
|
||||
.zIndex(100f)
|
||||
Box (modifier = Modifier.padding(0.dp).pullRefresh(state)) {
|
||||
PullRefreshIndicator(refreshing = refreshing, state = state,
|
||||
modifier = Modifier.zIndex(100f).align(Alignment.TopCenter)
|
||||
)
|
||||
CartList(
|
||||
modifier = Modifier
|
||||
.padding(innerPadding)
|
||||
.padding(innerPadding).pullRefresh(state)
|
||||
.fillMaxSize(),
|
||||
coffeeList = coffeeListUiState,
|
||||
onDeleteFromCartClick = {currentCoffee: Coffee ->
|
||||
@ -122,6 +110,7 @@ fun Cart(
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
DeleteFromCartAlertDialog(
|
||||
openDialog = openDialog,
|
||||
onConfirmClick = {
|
||||
|
@ -11,6 +11,7 @@ import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.compose.foundation.border
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
@ -20,18 +21,12 @@ import androidx.compose.foundation.layout.heightIn
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.foundation.text.KeyboardOptions
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Add
|
||||
import androidx.compose.material.icons.outlined.Create
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ButtonDefaults
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
@ -48,7 +43,6 @@ import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.rememberModalBottomSheetState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.MutableState
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableDoubleStateOf
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
@ -56,7 +50,6 @@ import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Alignment.Companion.CenterHorizontally
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
@ -80,10 +73,13 @@ import com.zyzf.coffeepreorder.R
|
||||
import com.zyzf.coffeepreorder.database.model.Coffee
|
||||
import com.zyzf.coffeepreorder.ui.AppViewModelProvider
|
||||
import com.zyzf.coffeepreorder.ui.theme.CoffeePreorderTheme
|
||||
import eu.bambooapps.material3.pullrefresh.PullRefreshIndicator
|
||||
import eu.bambooapps.material3.pullrefresh.pullRefresh
|
||||
import eu.bambooapps.material3.pullrefresh.rememberPullRefreshState
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun CoffeeList(
|
||||
viewModel: CoffeeListViewModel = viewModel(factory = AppViewModelProvider.Factory)
|
||||
@ -132,10 +128,9 @@ fun CoffeeList(
|
||||
}
|
||||
}
|
||||
) { innerPadding ->
|
||||
PullRefreshIndicator(
|
||||
refreshing, state,
|
||||
Modifier
|
||||
.zIndex(100f)
|
||||
Box (modifier = Modifier.padding(0.dp).pullRefresh(state)) {
|
||||
PullRefreshIndicator(refreshing = refreshing, state = state,
|
||||
modifier = Modifier.zIndex(100f).align(Alignment.TopCenter)
|
||||
)
|
||||
CoffeeList(
|
||||
modifier = Modifier
|
||||
@ -147,31 +142,32 @@ fun CoffeeList(
|
||||
viewModel.addCoffeeToCart(coffeeUid = coffeeUid)
|
||||
}
|
||||
},
|
||||
onEditClick = { curcoffee: Coffee ->
|
||||
onEditClick = { currentCoffee: Coffee ->
|
||||
coroutineScope.launch {
|
||||
coffee.value = curcoffee
|
||||
coffee.value = currentCoffee
|
||||
openDialog.value = true
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
AddEditModalBottomSheet(
|
||||
coffee = coffee,
|
||||
sheetState = sheetState,
|
||||
openDialog = openDialog,
|
||||
onAddClick = { coffee: Coffee, context: Context ->
|
||||
onAddClick = { currentCoffee: Coffee, context: Context ->
|
||||
coroutineScope.launch {
|
||||
viewModel.createCoffee(coffee, imageUri as Uri, context)
|
||||
viewModel.createCoffee(currentCoffee, imageUri as Uri, context)
|
||||
}
|
||||
},
|
||||
onEditClick = { coffee: Coffee, context: Context ->
|
||||
onEditClick = { currentCoffee: Coffee, context: Context ->
|
||||
coroutineScope.launch {
|
||||
viewModel.editCoffee(coffee, imageUri as Uri, context)
|
||||
viewModel.editCoffee(currentCoffee, imageUri as Uri, context)
|
||||
}
|
||||
},
|
||||
onDeleteClick = { coffee: Coffee ->
|
||||
onDeleteClick = { currentCoffee: Coffee ->
|
||||
coroutineScope.launch {
|
||||
viewModel.deleteCoffee(coffee)
|
||||
viewModel.deleteCoffee(currentCoffee)
|
||||
}
|
||||
},
|
||||
photoPicker = photoPicker,
|
||||
@ -189,8 +185,7 @@ private fun AddEditModalBottomSheet(
|
||||
onEditClick: (coffee: Coffee, context: Context) -> Unit,
|
||||
onDeleteClick: (coffee: Coffee) -> Unit,
|
||||
photoPicker: ManagedActivityResultLauncher<PickVisualMediaRequest, Uri?>,
|
||||
imageUri: Any?,
|
||||
modifier: Modifier = Modifier
|
||||
imageUri: Any?
|
||||
) {
|
||||
var name: String by remember { mutableStateOf("")}
|
||||
var cost: Double by remember { mutableDoubleStateOf(0.0) }
|
||||
@ -350,7 +345,7 @@ private fun CoffeeListItem(
|
||||
.padding(top = 5.dp)) {
|
||||
Button(
|
||||
onClick = {
|
||||
coffee.uid.let { onAddToCartClick(it) }
|
||||
onAddToCartClick(coffee.uid)
|
||||
},
|
||||
shape = CircleShape,
|
||||
modifier = Modifier.fillMaxWidth(fraction = 0.75f)
|
||||
|
@ -55,7 +55,7 @@ class CoffeeListViewModel(
|
||||
copyFileToSftp(f, "/mnt/nextcloud/data/Zyzf/files/Images")
|
||||
}
|
||||
suspend fun editCoffee(coffee: Coffee, imageUri: Uri, context: Context) {
|
||||
val editedCoffee: Int = coffeeRepository.update(coffee.uid!!, coffee.name, coffee.cost, coffee.ingredients, coffee.cartId, coffee.count)!!
|
||||
val editedCoffee: Int = coffeeRepository.update(coffee.uid, coffee.name, coffee.cost, coffee.ingredients, coffee.cartId, coffee.count)!!
|
||||
val inputStream = context.contentResolver.openInputStream(imageUri)
|
||||
val bitmap = BitmapFactory.decodeStream(inputStream)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.zyzf.coffeepreorder.composeui
|
||||
package com.zyzf.coffeepreorder.ui.login
|
||||
|
||||
import android.content.res.Configuration
|
||||
import androidx.compose.foundation.layout.Column
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.zyzf.coffeepreorder.ui.navigation
|
||||
|
||||
import android.content.res.Configuration
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material.icons.Icons
|
||||
@ -12,7 +11,6 @@ import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.NavigationBar
|
||||
import androidx.compose.material3.NavigationBarItem
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
@ -20,7 +18,6 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.navigation.NavDestination
|
||||
import androidx.navigation.NavDestination.Companion.hierarchy
|
||||
import androidx.navigation.NavGraph.Companion.findStartDestination
|
||||
@ -30,13 +27,12 @@ import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.zyzf.coffeepreorder.R
|
||||
import com.zyzf.coffeepreorder.composeui.Login
|
||||
import com.zyzf.coffeepreorder.ui.cart.Cart
|
||||
import com.zyzf.coffeepreorder.ui.coffee.CoffeeList
|
||||
import com.zyzf.coffeepreorder.ui.login.Login
|
||||
import com.zyzf.coffeepreorder.ui.order.Order
|
||||
import com.zyzf.coffeepreorder.ui.profile.Profile
|
||||
import com.zyzf.coffeepreorder.ui.register.Register
|
||||
import com.zyzf.coffeepreorder.ui.theme.CoffeePreorderTheme
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
@ -115,7 +111,6 @@ fun Navhost(
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun MainNavbar() {
|
||||
val navController = rememberNavController()
|
||||
|
@ -43,7 +43,7 @@ enum class Screen(
|
||||
|
||||
fun getItem(route: String): Screen? {
|
||||
val findRoute = route.split("/").first()
|
||||
return values().find { value -> value.route.startsWith(findRoute) }
|
||||
return entries.find { value -> value.route.startsWith(findRoute) }
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<selector>
|
||||
|
||||
</selector>
|
Loading…
x
Reference in New Issue
Block a user