diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 8b3f102..8fabff5 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index b2c751a..1896758 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,7 @@ + - + diff --git a/app/src/main/java/com/approagency/pharmacy/DrugApp.kt b/app/src/main/java/com/approagency/pharmacy/DrugApp.kt index d305b49..1172fcc 100644 --- a/app/src/main/java/com/approagency/pharmacy/DrugApp.kt +++ b/app/src/main/java/com/approagency/pharmacy/DrugApp.kt @@ -3,12 +3,18 @@ package com.approagency.pharmacy import android.app.Application import com.approagency.pharmacy.data.local.database.LabDatabase import com.approagency.pharmacy.di.appModule -import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.launch import org.koin.android.ext.koin.androidContext import org.koin.core.context.startKoin -class DrugApp : Application(){ +class DrugApp : Application() { + + // اسکوپ سطح‌اپ برای کارهای پس‌زمینه‌ی طول‌عمرِ برنامه (به‌جای GlobalScope). + private val applicationScope = CoroutineScope(SupervisorJob() + Dispatchers.IO) + override fun onCreate() { super.onCreate() startKoin { @@ -17,9 +23,9 @@ class DrugApp : Application(){ printLogger() } - // Preload database (optional, for faster access) - GlobalScope.launch { + // پیش‌بارگذاری دیتابیس برای دسترسی سریع‌تر + applicationScope.launch { LabDatabase.getInstance(this@DrugApp) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/approagency/pharmacy/MainActivity.kt b/app/src/main/java/com/approagency/pharmacy/MainActivity.kt index 57b6986..a0fe469 100644 --- a/app/src/main/java/com/approagency/pharmacy/MainActivity.kt +++ b/app/src/main/java/com/approagency/pharmacy/MainActivity.kt @@ -20,6 +20,7 @@ import com.approagency.pharmacy.data.local.SessionManager import com.approagency.pharmacy.domain.repository.AuthRepository import com.approagency.pharmacy.navigation.AppNavGraph import com.approagency.pharmacy.presentation.account.OtpAutoFillBus +import com.approagency.pharmacy.presentation.account.OtpAutofillController import com.approagency.pharmacy.ui.theme.DrugTheme import com.google.android.gms.auth.api.phone.SmsRetriever import com.google.android.gms.common.api.CommonStatusCodes @@ -27,7 +28,7 @@ import com.google.android.gms.common.api.Status import kotlinx.coroutines.launch import org.koin.android.ext.android.inject -class MainActivity : ComponentActivity() { +class MainActivity : ComponentActivity(), OtpAutofillController { private val session: SessionManager by inject() private val authRepository: AuthRepository by inject() @@ -71,7 +72,7 @@ class MainActivity : ComponentActivity() { // ---------- خودکارپُرکُنِ کد پیامک (SMS User Consent API) ---------- /** آغاز گوش‌دادن به پیامکِ کد؛ کدِ یافت‌شده از طریق [OtpAutoFillBus] تحویل می‌شود. */ - fun startOtpAutofill() { + override fun startOtpAutofill() { SmsRetriever.getClient(this).startSmsUserConsent(null) if (otpSmsReceiver != null) return val receiver = object : BroadcastReceiver() { @@ -103,7 +104,7 @@ class MainActivity : ComponentActivity() { ) } - fun stopOtpAutofill() { + override fun stopOtpAutofill() { otpSmsReceiver?.let { runCatching { unregisterReceiver(it) } } otpSmsReceiver = null } diff --git a/app/src/main/java/com/approagency/pharmacy/data/local/SessionManager.kt b/app/src/main/java/com/approagency/pharmacy/data/local/SessionManager.kt index 86d1c32..a3b2b81 100644 --- a/app/src/main/java/com/approagency/pharmacy/data/local/SessionManager.kt +++ b/app/src/main/java/com/approagency/pharmacy/data/local/SessionManager.kt @@ -2,7 +2,7 @@ package com.approagency.pharmacy.data.local import android.content.Context import android.content.SharedPreferences -import com.approagency.pharmacy.ui.theme.ThemeMode +import com.approagency.pharmacy.domain.model.ThemeMode import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow diff --git a/app/src/main/java/com/approagency/pharmacy/data/repository/DrugRepositoryImpl.kt b/app/src/main/java/com/approagency/pharmacy/data/repository/DrugRepositoryImpl.kt index 01e4bf6..cbadbe1 100644 --- a/app/src/main/java/com/approagency/pharmacy/data/repository/DrugRepositoryImpl.kt +++ b/app/src/main/java/com/approagency/pharmacy/data/repository/DrugRepositoryImpl.kt @@ -37,10 +37,8 @@ class DrugRepositoryImpl( override suspend fun drugDetail(cod: Int): Result { return try { val response= apiService.getDrugDetail(cod = cod) - println(response.message) return Result.success(response) }catch (e: Exception){ - println(e.message) Result.failure(e) } } @@ -48,7 +46,6 @@ class DrugRepositoryImpl( override suspend fun getGorohDaroei(): Result { return try { val response = apiService.getGorohDaroei() - println(response) return Result.success(response) }catch (e: Exception){ Result.failure(e) @@ -63,8 +60,6 @@ class DrugRepositoryImpl( pageNumber = params.pageNumber ) - println("HTML Response length: ${htmlResponse.length}") - val searchResult = parser.parseSearchResultsWithPagination(htmlResponse) Result.success(searchResult) diff --git a/app/src/main/java/com/approagency/pharmacy/ui/theme/ThemeMode.kt b/app/src/main/java/com/approagency/pharmacy/domain/model/ThemeMode.kt similarity index 76% rename from app/src/main/java/com/approagency/pharmacy/ui/theme/ThemeMode.kt rename to app/src/main/java/com/approagency/pharmacy/domain/model/ThemeMode.kt index 4b183a2..ba7c3d3 100644 --- a/app/src/main/java/com/approagency/pharmacy/ui/theme/ThemeMode.kt +++ b/app/src/main/java/com/approagency/pharmacy/domain/model/ThemeMode.kt @@ -1,4 +1,4 @@ -package com.approagency.pharmacy.ui.theme +package com.approagency.pharmacy.domain.model /** حالت نمایش انتخابی کاربر؛ پیش‌فرض پیروی از سیستم است. */ enum class ThemeMode { SYSTEM, LIGHT, DARK } diff --git a/app/src/main/java/com/approagency/pharmacy/navigation/AccountAppBar.kt b/app/src/main/java/com/approagency/pharmacy/navigation/AccountAppBar.kt new file mode 100644 index 0000000..3d29804 --- /dev/null +++ b/app/src/main/java/com/approagency/pharmacy/navigation/AccountAppBar.kt @@ -0,0 +1,69 @@ +package com.approagency.pharmacy.navigation + +import androidx.compose.foundation.layout.Column +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Menu +import androidx.compose.material3.ElevatedButton +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.ui.text.style.TextAlign +import com.approagency.pharmacy.data.local.AccountState + +/** + * نوار بالای اپ: دکمه‌ی منو، اطلاعات حساب (موبایل + وضعیت اشتراک) و کنشِ + * ورود/خرید اشتراک. + */ +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun AccountAppBar( + account: AccountState, + onMenuClick: () -> Unit, + onAccountClick: () -> Unit +) { + TopAppBar( + navigationIcon = { + IconButton(onClick = onMenuClick) { + Icon( + imageVector = Icons.Filled.Menu, + contentDescription = "منو" + ) + } + }, + title = { + if (account.isLoggedIn) { + Column { + Text( + text = account.mobile ?: account.displayName.orEmpty(), + style = MaterialTheme.typography.bodyMedium + ) + Text( + text = account.subscriptionTitle ?: "بدون اشتراک", + style = MaterialTheme.typography.labelSmall, + color = if (account.isSubscribed) + MaterialTheme.colorScheme.primary + else + MaterialTheme.colorScheme.onSurfaceVariant + ) + } + } else { + Text(text = "دارویاب", style = MaterialTheme.typography.titleMedium) + } + }, + actions = { + if (!account.isLoggedIn) { + ElevatedButton(onClick = onAccountClick) { + Text("ورود", textAlign = TextAlign.Center) + } + } else if (!account.isSubscribed) { + ElevatedButton(onClick = onAccountClick) { + Text("خرید اشتراک", textAlign = TextAlign.Center) + } + } + } + ) +} diff --git a/app/src/main/java/com/approagency/pharmacy/navigation/MainContainer.kt b/app/src/main/java/com/approagency/pharmacy/navigation/MainContainer.kt index 59a6a7d..f69aa7a 100644 --- a/app/src/main/java/com/approagency/pharmacy/navigation/MainContainer.kt +++ b/app/src/main/java/com/approagency/pharmacy/navigation/MainContainer.kt @@ -1,22 +1,11 @@ package com.approagency.pharmacy.navigation import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AccountCircle -import androidx.compose.material.icons.filled.Menu import androidx.compose.material3.DrawerValue -import androidx.compose.material3.ElevatedButton import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalNavigationDrawer import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text -import androidx.compose.material3.TextButton -import androidx.compose.material3.TopAppBar import androidx.compose.material3.rememberDrawerState import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState @@ -27,9 +16,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.text.style.TextAlign import androidx.navigation.NavHostController -import com.approagency.pharmacy.data.local.AccountState import com.approagency.pharmacy.data.local.SessionManager import com.approagency.pharmacy.domain.repository.AuthRepository import com.approagency.pharmacy.presentation.account.AccountDrawer @@ -112,53 +99,3 @@ fun MainContainer( ) } } - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -private fun AccountAppBar( - account: AccountState, - onMenuClick: () -> Unit, - onAccountClick: () -> Unit -) { - TopAppBar( - navigationIcon = { - IconButton(onClick = onMenuClick) { - Icon( - imageVector = Icons.Filled.Menu, - contentDescription = "منو" - ) - } - }, - title = { - if (account.isLoggedIn) { - Column { - Text( - text = account.mobile ?: account.displayName.orEmpty(), - style = MaterialTheme.typography.bodyMedium - ) - Text( - text = account.subscriptionTitle ?: "بدون اشتراک", - style = MaterialTheme.typography.labelSmall, - color = if (account.isSubscribed) - MaterialTheme.colorScheme.primary - else - MaterialTheme.colorScheme.onSurfaceVariant - ) - } - } else { - Text(text = "دارویاب", style = MaterialTheme.typography.titleMedium) - } - }, - actions = { - if (!account.isLoggedIn) { - ElevatedButton(onClick = onAccountClick) { - Text("ورود", textAlign = TextAlign.Center) - } - }else if (!account.isSubscribed){ - ElevatedButton(onClick = onAccountClick) { - Text("خرید اشتراک", textAlign = TextAlign.Center) - } - } - } - ) -} diff --git a/app/src/main/java/com/approagency/pharmacy/presentation/account/AccountDrawer.kt b/app/src/main/java/com/approagency/pharmacy/presentation/account/AccountDrawer.kt index fc3efe3..ec15097 100644 --- a/app/src/main/java/com/approagency/pharmacy/presentation/account/AccountDrawer.kt +++ b/app/src/main/java/com/approagency/pharmacy/presentation/account/AccountDrawer.kt @@ -43,7 +43,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp import com.approagency.pharmacy.data.local.AccountState -import com.approagency.pharmacy.ui.theme.ThemeMode +import com.approagency.pharmacy.domain.model.ThemeMode import com.vada.caller.ui.theme.dime /** diff --git a/app/src/main/java/com/approagency/pharmacy/presentation/account/AccountSheet.kt b/app/src/main/java/com/approagency/pharmacy/presentation/account/AccountSheet.kt index c51adeb..4e9becb 100644 --- a/app/src/main/java/com/approagency/pharmacy/presentation/account/AccountSheet.kt +++ b/app/src/main/java/com/approagency/pharmacy/presentation/account/AccountSheet.kt @@ -12,9 +12,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material3.Card import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField @@ -26,7 +24,6 @@ import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalLayoutDirection @@ -35,12 +32,9 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp -import com.approagency.pharmacy.MainActivity -import com.approagency.pharmacy.domain.model.SubscriptionProduct import com.approagency.pharmacy.presentation.common.CustomModalBottomSheet import com.approagency.pharmacy.presentation.common.OtpTextField import com.approagency.pharmacy.presentation.common.PrimaryButton -import com.approagency.pharmacy.presentation.common.shimmer import com.approagency.pharmacy.presentation.viewModel.AccountPhase import com.approagency.pharmacy.presentation.viewModel.AccountViewModel import com.vada.caller.ui.theme.dime @@ -71,9 +65,9 @@ fun AccountSheet( // در مرحله‌ی کد، گوش‌دادن به پیامک را آغاز کن و با خروج متوقفش کن. val isOtpStep = ui.phase == AccountPhase.EnterOtp DisposableEffect(isOtpStep) { - val mainActivity = activity as? MainActivity - if (isOtpStep) mainActivity?.startOtpAutofill() - onDispose { mainActivity?.stopOtpAutofill() } + val autofill = activity as? OtpAutofillController + if (isOtpStep) autofill?.startOtpAutofill() + onDispose { autofill?.stopOtpAutofill() } } // کدِ خوانده‌شده از پیامک را در فیلد بگذار و به‌صورت خودکار تأیید کن. @@ -151,13 +145,13 @@ fun AccountSheet( ui.productsLoading -> Column( verticalArrangement = Arrangement.spacedBy(MaterialTheme.dime.md) ) { - repeat(2) { ProductCardSkeleton() } + repeat(2) { SubscriptionProductCardSkeleton() } } else -> Column( verticalArrangement = Arrangement.spacedBy(MaterialTheme.dime.md) ) { ui.products.forEach { product -> - ProductCard( + SubscriptionProductCard( product = product, isPurchasing = ui.purchasingProductId == product.id, onBuy = { activity?.let { viewModel.purchase(it, product) } } @@ -205,74 +199,3 @@ private fun SheetTitle(text: String) { Text(text = text, style = MaterialTheme.typography.titleLarge, fontWeight = FontWeight.Bold) Spacer(Modifier.height(MaterialTheme.dime.xs)) } - -@Composable -private fun ProductCard( - product: SubscriptionProduct, - isPurchasing: Boolean, - onBuy: () -> Unit -) { - Card(modifier = Modifier.fillMaxWidth()) { - Column(modifier = Modifier.padding(MaterialTheme.dime.lg)) { - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically - ) { - Text(product.title, style = MaterialTheme.typography.titleMedium) - Text( - "${formatPrice(product.price)} تومان", - style = MaterialTheme.typography.titleSmall, - color = MaterialTheme.colorScheme.primary - ) - } - if (!product.description.isNullOrBlank()) { - Spacer(Modifier.height(MaterialTheme.dime.xs)) - Text( - product.description, - style = MaterialTheme.typography.bodySmall, - color = MaterialTheme.colorScheme.onSurfaceVariant - ) - } - Spacer(Modifier.height(MaterialTheme.dime.md)) - PrimaryButton(text = "خرید", height = 44, isLoading = isPurchasing, onClick = onBuy) - } - } -} - -/** جای‌گیرنده‌ی shimmer برای کارت محصول هنگام بارگذاری. */ -@Composable -private fun ProductCardSkeleton() { - Card(modifier = Modifier.fillMaxWidth()) { - Column(modifier = Modifier.padding(MaterialTheme.dime.lg)) { - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween - ) { - Box( - Modifier - .width(120.dp) - .height(18.dp) - .shimmer() - ) - Box( - Modifier - .width(72.dp) - .height(18.dp) - .shimmer() - ) - } - Spacer(Modifier.height(MaterialTheme.dime.md)) - Box( - Modifier - .fillMaxWidth() - .height(44.dp) - .shimmer(shape = MaterialTheme.shapes.medium) - ) - } - } -} - -/** قالب‌بندی قیمت با جداکننده‌ی هزارگان. */ -private fun formatPrice(price: Long): String = - price.toString().reversed().chunked(3).joinToString(",").reversed() diff --git a/app/src/main/java/com/approagency/pharmacy/presentation/account/OtpAutofillController.kt b/app/src/main/java/com/approagency/pharmacy/presentation/account/OtpAutofillController.kt new file mode 100644 index 0000000..5be59d1 --- /dev/null +++ b/app/src/main/java/com/approagency/pharmacy/presentation/account/OtpAutofillController.kt @@ -0,0 +1,12 @@ +package com.approagency.pharmacy.presentation.account + +/** + * قراردادِ شروع/توقفِ خودکارپُرکُنِ کدِ پیامک. + * + * اکتیویتی میزبان آن را پیاده‌سازی می‌کند؛ شیتِ ورود فقط به این اینترفیس وابسته + * است و از نوعِ مشخصِ اکتیویتی بی‌خبر می‌ماند. + */ +interface OtpAutofillController { + fun startOtpAutofill() + fun stopOtpAutofill() +} diff --git a/app/src/main/java/com/approagency/pharmacy/presentation/account/SubscriptionProductCard.kt b/app/src/main/java/com/approagency/pharmacy/presentation/account/SubscriptionProductCard.kt new file mode 100644 index 0000000..d3d269c --- /dev/null +++ b/app/src/main/java/com/approagency/pharmacy/presentation/account/SubscriptionProductCard.kt @@ -0,0 +1,94 @@ +package com.approagency.pharmacy.presentation.account + +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 +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material3.Card +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.approagency.pharmacy.domain.model.SubscriptionProduct +import com.approagency.pharmacy.presentation.common.PrimaryButton +import com.approagency.pharmacy.presentation.common.shimmer +import com.vada.caller.ui.theme.dime + +/** کارت یک محصول اشتراک به‌همراه دکمه‌ی خرید. */ +@Composable +fun SubscriptionProductCard( + product: SubscriptionProduct, + isPurchasing: Boolean, + onBuy: () -> Unit +) { + Card(modifier = Modifier.fillMaxWidth()) { + Column(modifier = Modifier.padding(MaterialTheme.dime.lg)) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text(product.title, style = MaterialTheme.typography.titleMedium) + Text( + "${formatPrice(product.price)} تومان", + style = MaterialTheme.typography.titleSmall, + color = MaterialTheme.colorScheme.primary + ) + } + if (!product.description.isNullOrBlank()) { + Spacer(Modifier.height(MaterialTheme.dime.xs)) + Text( + product.description, + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + Spacer(Modifier.height(MaterialTheme.dime.md)) + PrimaryButton(text = "خرید", height = 44, isLoading = isPurchasing, onClick = onBuy) + } + } +} + +/** جای‌گیرنده‌ی shimmer برای کارت محصول هنگام بارگذاری. */ +@Composable +fun SubscriptionProductCardSkeleton() { + Card(modifier = Modifier.fillMaxWidth()) { + Column(modifier = Modifier.padding(MaterialTheme.dime.lg)) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Box( + Modifier + .width(120.dp) + .height(18.dp) + .shimmer() + ) + Box( + Modifier + .width(72.dp) + .height(18.dp) + .shimmer() + ) + } + Spacer(Modifier.height(MaterialTheme.dime.md)) + Box( + Modifier + .fillMaxWidth() + .height(44.dp) + .shimmer(shape = MaterialTheme.shapes.medium) + ) + } + } +} + +/** قالب‌بندی قیمت با جداکننده‌ی هزارگان. */ +private fun formatPrice(price: Long): String = + price.toString().reversed().chunked(3).joinToString(",").reversed() diff --git a/app/src/main/java/com/approagency/pharmacy/presentation/common/CustomBottonSheet.kt b/app/src/main/java/com/approagency/pharmacy/presentation/common/CustomBottomSheet.kt similarity index 100% rename from app/src/main/java/com/approagency/pharmacy/presentation/common/CustomBottonSheet.kt rename to app/src/main/java/com/approagency/pharmacy/presentation/common/CustomBottomSheet.kt diff --git a/app/src/main/java/com/approagency/pharmacy/presentation/common/loading.kt b/app/src/main/java/com/approagency/pharmacy/presentation/common/Loading.kt similarity index 100% rename from app/src/main/java/com/approagency/pharmacy/presentation/common/loading.kt rename to app/src/main/java/com/approagency/pharmacy/presentation/common/Loading.kt diff --git a/app/src/main/java/com/approagency/pharmacy/presentation/common/primaryButton.kt b/app/src/main/java/com/approagency/pharmacy/presentation/common/PrimaryButton.kt similarity index 100% rename from app/src/main/java/com/approagency/pharmacy/presentation/common/primaryButton.kt rename to app/src/main/java/com/approagency/pharmacy/presentation/common/PrimaryButton.kt diff --git a/app/src/main/java/com/approagency/pharmacy/presentation/viewModel/HomeViewModel.kt b/app/src/main/java/com/approagency/pharmacy/presentation/viewModel/HomeViewModel.kt index ad0dd3d..7e23536 100644 --- a/app/src/main/java/com/approagency/pharmacy/presentation/viewModel/HomeViewModel.kt +++ b/app/src/main/java/com/approagency/pharmacy/presentation/viewModel/HomeViewModel.kt @@ -65,7 +65,6 @@ class HomeViewModel ( viewModelScope.launch { try { val result = getDrugSearchUseCase.invoke(drugSearchParams) - println(result) _uiState.update { it.copy( drugSearchState = it.drugSearchState.copy( isLoading = false, @@ -74,10 +73,8 @@ class HomeViewModel ( ) } } catch (e: Exception) { - println(e.message) handleError(e.toUserMessage()) }catch (e: Exception) { - println(e.message) handleError(e.toUserMessage()) } } @@ -103,7 +100,6 @@ class HomeViewModel ( ) ) } - println(result) } catch (e: Exception) { handleError(e.toUserMessage()) }catch (e: Exception) { diff --git a/app/src/main/java/com/approagency/pharmacy/ui/theme/Dimention.kt b/app/src/main/java/com/approagency/pharmacy/ui/theme/Dimension.kt similarity index 100% rename from app/src/main/java/com/approagency/pharmacy/ui/theme/Dimention.kt rename to app/src/main/java/com/approagency/pharmacy/ui/theme/Dimension.kt diff --git a/app/src/main/java/com/approagency/pharmacy/ui/theme/Theme.kt b/app/src/main/java/com/approagency/pharmacy/ui/theme/Theme.kt index f2a3b51..7eea201 100644 --- a/app/src/main/java/com/approagency/pharmacy/ui/theme/Theme.kt +++ b/app/src/main/java/com/approagency/pharmacy/ui/theme/Theme.kt @@ -11,6 +11,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext +import com.approagency.pharmacy.domain.model.ThemeMode import com.fabirt.podcastapp.ui.theme.Shapes import com.vada.caller.ui.theme.Dime import com.vada.caller.ui.theme.LocalDime