feature: lab5 done
This commit is contained in:
parent
5c3621d7ec
commit
6a39009c3b
64
.idea/workspace.xml
generated
64
.idea/workspace.xml
generated
@ -9,15 +9,19 @@
|
|||||||
<option name="autoReloadType" value="NONE" />
|
<option name="autoReloadType" value="NONE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="7c94e195-a540-483e-9a1c-11797aeb1741" name="Changes" comment="feature: lab5 almost done, save commit">
|
<list default="true" id="7c94e195-a540-483e-9a1c-11797aeb1741" name="Changes" comment="feature: lab5 main things works">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/api/ServerService.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/api/ServerService.kt" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/api/repository/RestServiceRepository.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/api/repository/RestServiceRepository.kt" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/api/repository/RestOrderRepository.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/api/repository/RestOrderRepository.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/businessLogic/repository/OrderRepository.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/businessLogic/repository/OrderRepository.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/businessLogic/viewmodel/BasketViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/businessLogic/viewmodel/BasketViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/businessLogic/viewmodel/OrderViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/businessLogic/viewmodel/OrderViewModel.kt" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/businessLogic/viewmodel/OrderViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/businessLogic/viewmodel/OrderViewModel.kt" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/businessLogic/viewmodel/ServiceViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/businessLogic/viewmodel/ServiceViewModel.kt" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/composeui/Basket/Basket.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/composeui/Basket/Basket.kt" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/composeui/Basket/Basket.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/composeui/Basket/Basket.kt" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/composeui/List_of_Services/ListOfServices.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/composeui/List_of_Services/ListOfServices.kt" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/composeui/List_of_Services/Service.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/composeui/List_of_Services/Service.kt" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/composeui/Orders/Orders.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/composeui/Orders/Orders.kt" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/composeui/Profile/Login.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/composeui/Profile/Login.kt" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/database/AppDatabase.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/database/AppDatabase.kt" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/database/AppDatabase.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/database/AppDatabase.kt" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/database/dao/ServiceDao.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/database/dao/ServiceDao.kt" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/database/repository/ServiceRepositoryImpl.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/myapplication/database/repository/ServiceRepositoryImpl.kt" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@ -64,34 +68,36 @@
|
|||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
<component name="PropertiesComponent">{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
"ApkExportedModule": "My_Application.app",
|
"ApkExportedModule": "My_Application.app",
|
||||||
"ExportApk.ApkPathForMy_Application.app": "C:\\Users\\Danil\\Desktop\\MDP\\labs\\app",
|
"ExportApk.ApkPathForMy_Application.app": "C:\\Users\\Danil\\Desktop\\MDP\\labs\\app",
|
||||||
"PROJECT_TRUSTED_KEY": "true",
|
"PROJECT_TRUSTED_KEY": "true",
|
||||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"RunOnceActivity.cidr.known.project.marker": "true",
|
"RunOnceActivity.cidr.known.project.marker": "true",
|
||||||
"ToolWindowLogcat.ShowToolbar": "false",
|
"ToolWindowLogcat.ShowToolbar": "false",
|
||||||
"cidr.known.project.marker": "true",
|
"cidr.known.project.marker": "true",
|
||||||
"last_opened_file_path": "C:/Users/Danil/Downloads/test",
|
"com.android.tools.idea.devicemanager.tab": "Physical",
|
||||||
"project.structure.last.edited": "Modules",
|
"last_opened_file_path": "C:/Users/Danil/Desktop/Новая папка",
|
||||||
"project.structure.proportion": "0.17",
|
"project.structure.last.edited": "Modules",
|
||||||
"project.structure.side.proportion": "0.2",
|
"project.structure.proportion": "0.17",
|
||||||
"settings.editor.selected.configurable": "emulator"
|
"project.structure.side.proportion": "0.2",
|
||||||
|
"settings.editor.selected.configurable": "emulator"
|
||||||
},
|
},
|
||||||
"keyToStringList": {
|
"keyToStringList": {
|
||||||
"ExportApk.BuildVariants": [
|
"ExportApk.BuildVariants": [
|
||||||
"release"
|
"release"
|
||||||
],
|
],
|
||||||
"com.android.tools.idea.sqlite.queryhistory": [
|
"com.android.tools.idea.sqlite.queryhistory": [
|
||||||
"insert into tbl_user values (1, \"Danil\", \"Markov\", \"danil@mail.ru\", \"123\", \"ADMIN\", null)",
|
"delete from tbl_service",
|
||||||
"delete from tbl_user where userId = 6",
|
"insert into tbl_user values (1, \"Danil\", \"Markov\", \"danil@mail.ru\", \"123\", \"ADMIN\", null)",
|
||||||
"delete from tbl_user where userId = 4",
|
"delete from tbl_user where userId = 6",
|
||||||
"delete from tbl_user where userId = 2"
|
"delete from tbl_user where userId = 4",
|
||||||
|
"delete from tbl_user where userId = 2"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}]]></component>
|
}</component>
|
||||||
<component name="PsdUISettings">
|
<component name="PsdUISettings">
|
||||||
<option name="MODULE_TAB" value="Signing Configs" />
|
<option name="MODULE_TAB" value="Signing Configs" />
|
||||||
<option name="LAST_EDITED_SIGNING_CONFIG" value="debug" />
|
<option name="LAST_EDITED_SIGNING_CONFIG" value="debug" />
|
||||||
|
@ -55,6 +55,9 @@ class RestServiceRepository(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun delete(service: Service) {
|
override suspend fun delete(service: Service) {
|
||||||
service.serviceId?.let { this.service.deleteService(it) }
|
try {
|
||||||
|
service.serviceId?.let { this.service.deleteService(it) }
|
||||||
|
dbServiceRepository.invalidateService(service.serviceId!!)
|
||||||
|
}catch (ex: Exception){}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,6 +11,8 @@ import com.example.myapplication.businessLogic.repository.OrderRepository
|
|||||||
import com.example.myapplication.model.Order
|
import com.example.myapplication.model.Order
|
||||||
import com.example.myapplication.model.Service
|
import com.example.myapplication.model.Service
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
@ -19,23 +21,32 @@ class OrderViewModel(private val orderRepository: OrderRepository, private val b
|
|||||||
val selectedItems get() = _selectedItems
|
val selectedItems get() = _selectedItems
|
||||||
private val _total = mutableDoubleStateOf(0.00)
|
private val _total = mutableDoubleStateOf(0.00)
|
||||||
val total: State<Double> get() = _total
|
val total: State<Double> get() = _total
|
||||||
|
private var _orders = MutableStateFlow<List<Order>>(emptyList())
|
||||||
fun createOrder() = viewModelScope.launch {
|
val orders: StateFlow<List<Order>> get() = _orders
|
||||||
val userId = GlobalUser.getInstance().getUser()?.userId!!
|
fun createOrder(): Boolean {
|
||||||
val order = Order(
|
viewModelScope.launch {
|
||||||
date = Date().time,
|
val userId = GlobalUser.getInstance().getUser()?.userId!!
|
||||||
total = getTotal(userId),
|
val order = Order(
|
||||||
creatorUserId = userId
|
date = Date().time,
|
||||||
)
|
total = getTotal(userId),
|
||||||
orderRepository.insert(order)
|
creatorUserId = userId
|
||||||
|
)
|
||||||
|
orderRepository.insert(order)
|
||||||
|
}
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun getOrderWithServices(id: Int) : Flow<List<Service>> {
|
suspend fun getOrderWithServices(id: Int) : Flow<List<Service>> {
|
||||||
return orderRepository.getServiceFromOrder(id)
|
return orderRepository.getServiceFromOrder(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun getUserOrders(id: Int): Flow<List<Order>> {
|
suspend fun getUserOrders(id: Int) {
|
||||||
return orderRepository.getUserOrders(id)
|
viewModelScope.launch {
|
||||||
|
orderRepository.getUserOrders(id)
|
||||||
|
.collect{items ->
|
||||||
|
_orders.value = items
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateSelectedItems(items: List<Service>) {
|
fun updateSelectedItems(items: List<Service>) {
|
||||||
|
@ -34,12 +34,7 @@ class ServiceViewModel(private val serviceRepository: ServiceRepository): ViewMo
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun updateService() = viewModelScope.launch {
|
fun updateService() = viewModelScope.launch {
|
||||||
val service = Service(
|
serviceRepository.update(service.value)
|
||||||
name = name.value,
|
|
||||||
price = price.doubleValue,
|
|
||||||
photo = R.drawable.image_service
|
|
||||||
)
|
|
||||||
serviceRepository.update(service)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getServiceList(){
|
fun getServiceList(){
|
||||||
|
@ -91,7 +91,7 @@ fun Basket(navController : NavHostController,
|
|||||||
Button(
|
Button(
|
||||||
onClick = {
|
onClick = {
|
||||||
orderViewModel.createOrder()
|
orderViewModel.createOrder()
|
||||||
navController.navigate(NavItem.Orders.route)
|
navController.navigate(NavItem.ListOfServices.route)
|
||||||
},
|
},
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.height(60.dp)
|
.height(60.dp)
|
||||||
|
@ -2,13 +2,19 @@ package com.example.myapplication.composeui.List_of_Services
|
|||||||
|
|
||||||
import SearchBar
|
import SearchBar
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.Row
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.unit.TextUnit
|
||||||
|
import androidx.compose.ui.unit.TextUnitType
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
import androidx.navigation.NavHostController
|
import androidx.navigation.NavHostController
|
||||||
@ -24,29 +30,41 @@ fun ListOfServices(navController: NavHostController, serviceViewModel: ServiceVi
|
|||||||
LaunchedEffect(serviceViewModel){
|
LaunchedEffect(serviceViewModel){
|
||||||
serviceViewModel.getServiceList()
|
serviceViewModel.getServiceList()
|
||||||
}
|
}
|
||||||
Column(
|
val services = serviceViewModel.serviceList.collectAsLazyPagingItems()
|
||||||
|
|
||||||
|
Row(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.padding(bottom = 30.dp),
|
||||||
|
horizontalArrangement = Arrangement.Center
|
||||||
|
){
|
||||||
|
Text(
|
||||||
|
text = "PetMed",
|
||||||
|
style = MaterialTheme.typography.bodyMedium
|
||||||
|
.copy(Color.White, fontSize = TextUnit(16.0f, TextUnitType.Em))
|
||||||
|
)
|
||||||
|
}
|
||||||
|
LazyColumn(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxSize()
|
|
||||||
.background(BlueMain)
|
.background(BlueMain)
|
||||||
.padding(bottom = 60.dp)
|
.padding(bottom = 60.dp)
|
||||||
){
|
){
|
||||||
SearchBar(
|
item{
|
||||||
modifier = Modifier)
|
SearchBar(
|
||||||
{
|
modifier = Modifier)
|
||||||
searchText ->
|
{
|
||||||
//TODO search logic
|
searchText ->
|
||||||
|
//TODO search logic
|
||||||
|
}
|
||||||
}
|
}
|
||||||
val services = serviceViewModel.serviceList.collectAsLazyPagingItems()
|
items(
|
||||||
LazyColumn(modifier = Modifier.padding(15.dp, 0.dp)){
|
count = services.itemCount,
|
||||||
items(
|
key = services.itemKey { service -> service.serviceId!! }
|
||||||
count = services.itemCount,
|
){
|
||||||
key = services.itemKey { service -> service.serviceId!! }
|
|
||||||
){
|
|
||||||
index: Int ->
|
index: Int ->
|
||||||
val service: Service? = services[index]
|
val service: Service? = services[index]
|
||||||
if (service != null){
|
if (service != null){
|
||||||
Service(navController, item = service)
|
Service(navController, item = service)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ fun Service(navController: NavHostController, item: Service, basketViewModel: Ba
|
|||||||
}
|
}
|
||||||
Box(
|
Box(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(0.dp, 0.dp, 0.dp, 10.dp)
|
.padding(10.dp, 0.dp, 10.dp, 10.dp)
|
||||||
.height(150.dp)
|
.height(150.dp)
|
||||||
.shadow(
|
.shadow(
|
||||||
elevation = 4.dp,
|
elevation = 4.dp,
|
||||||
|
@ -7,8 +7,8 @@ import androidx.compose.foundation.lazy.LazyColumn
|
|||||||
import androidx.compose.foundation.lazy.itemsIndexed
|
import androidx.compose.foundation.lazy.itemsIndexed
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.mutableStateListOf
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
@ -17,21 +17,17 @@ import androidx.navigation.NavController
|
|||||||
import com.example.myapplication.GlobalUser
|
import com.example.myapplication.GlobalUser
|
||||||
import com.example.myapplication.businessLogic.viewmodel.AppViewModelProvider
|
import com.example.myapplication.businessLogic.viewmodel.AppViewModelProvider
|
||||||
import com.example.myapplication.businessLogic.viewmodel.OrderViewModel
|
import com.example.myapplication.businessLogic.viewmodel.OrderViewModel
|
||||||
import com.example.myapplication.model.Order
|
|
||||||
import com.example.myapplication.ui.theme.BlueMain
|
import com.example.myapplication.ui.theme.BlueMain
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun Orders (navController: NavController, orderViewModel: OrderViewModel = viewModel(factory = AppViewModelProvider.Factory)){
|
fun Orders (navController: NavController, orderViewModel: OrderViewModel = viewModel(factory = AppViewModelProvider.Factory)){
|
||||||
val ordersList = remember { mutableStateListOf<Order>() }
|
|
||||||
val user = GlobalUser.getInstance().getUser()
|
val user = GlobalUser.getInstance().getUser()
|
||||||
|
val ordersList by orderViewModel.orders.collectAsState()
|
||||||
LaunchedEffect(Unit) {
|
LaunchedEffect(Unit) {
|
||||||
withContext(Dispatchers.IO) {
|
withContext(Dispatchers.IO) {
|
||||||
orderViewModel.getUserOrders(user?.userId!!).collect { data ->
|
orderViewModel.getUserOrders(user?.userId!!)
|
||||||
ordersList.clear()
|
|
||||||
ordersList.addAll(data)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LazyColumn(
|
LazyColumn(
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.example.myapplication.composeui.Profile
|
package com.example.myapplication.composeui.Profile
|
||||||
|
|
||||||
|
import android.view.Gravity
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
@ -24,6 +26,7 @@ import androidx.compose.ui.Alignment
|
|||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.draw.clip
|
import androidx.compose.ui.draw.clip
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.unit.TextUnit
|
import androidx.compose.ui.unit.TextUnit
|
||||||
import androidx.compose.ui.unit.TextUnitType
|
import androidx.compose.ui.unit.TextUnitType
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
@ -43,6 +46,7 @@ import kotlinx.coroutines.launch
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun Login (navController: NavController, userViewModel: UserViewModel = viewModel(factory = AppViewModelProvider.Factory), basketViewModel: BasketViewModel = viewModel(factory = AppViewModelProvider.Factory)){
|
fun Login (navController: NavController, userViewModel: UserViewModel = viewModel(factory = AppViewModelProvider.Factory), basketViewModel: BasketViewModel = viewModel(factory = AppViewModelProvider.Factory)){
|
||||||
|
val context = LocalContext.current
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
@ -106,6 +110,9 @@ fun Login (navController: NavController, userViewModel: UserViewModel = viewMode
|
|||||||
userViewModel.authUser()
|
userViewModel.authUser()
|
||||||
navController.navigate(NavItem.Profile.route)
|
navController.navigate(NavItem.Profile.route)
|
||||||
}
|
}
|
||||||
|
val toast = Toast.makeText(context, "message", Toast.LENGTH_SHORT)
|
||||||
|
toast.setGravity(Gravity.TOP, 0, 100)
|
||||||
|
toast.show()
|
||||||
},
|
},
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.height(60.dp)
|
.height(60.dp)
|
||||||
|
@ -21,7 +21,7 @@ import kotlinx.coroutines.CoroutineScope
|
|||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@Database(entities = [User::class, Service::class, Order::class, OrderService::class, Basket::class, BasketService::class, RemoteKeys::class], version = 9)
|
@Database(entities = [User::class, Service::class, Order::class, OrderService::class, Basket::class, BasketService::class, RemoteKeys::class], version = 10)
|
||||||
abstract class AppDatabase : RoomDatabase(){
|
abstract class AppDatabase : RoomDatabase(){
|
||||||
abstract fun serviceDao(): ServiceDao
|
abstract fun serviceDao(): ServiceDao
|
||||||
abstract fun userDao(): UserDao
|
abstract fun userDao(): UserDao
|
||||||
|
@ -24,4 +24,6 @@ interface ServiceDao {
|
|||||||
suspend fun getServiceById(id: Int): Service
|
suspend fun getServiceById(id: Int): Service
|
||||||
@Query("DELETE FROM tbl_service")
|
@Query("DELETE FROM tbl_service")
|
||||||
suspend fun deleteAll()
|
suspend fun deleteAll()
|
||||||
|
@Query("DELETE FROM tbl_service WHERE serviceId = :id")
|
||||||
|
suspend fun invalidateService(id: Int)
|
||||||
}
|
}
|
@ -27,4 +27,5 @@ class ServiceRepositoryImpl(private val serviceDao: ServiceDao): ServiceReposito
|
|||||||
suspend fun insertServices(services: List<Service>) =
|
suspend fun insertServices(services: List<Service>) =
|
||||||
serviceDao.insert(*services.toTypedArray())
|
serviceDao.insert(*services.toTypedArray())
|
||||||
fun getAllServicesPagingSource(): PagingSource<Int, Service> = serviceDao.getAll()
|
fun getAllServicesPagingSource(): PagingSource<Int, Service> = serviceDao.getAll()
|
||||||
|
suspend fun invalidateService(id: Int) = serviceDao.invalidateService(id)
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user