feat: change package name

This commit is contained in:
2026-06-05 18:02:48 +03:30
parent 92b7ab49c4
commit cbe77fbb9e
97 changed files with 3228 additions and 3395 deletions
+3 -3
View File
@@ -6,13 +6,13 @@ plugins {
} }
android { android {
namespace = "com.approagency.drug" namespace = "com.approagency.pharmacy"
compileSdk { compileSdk {
version = release(36) version = release(36)
} }
defaultConfig { defaultConfig {
applicationId = "com.approagency.drug" applicationId = "com.approagency.pharmacy"
minSdk = 24 minSdk = 24
targetSdk = 36 targetSdk = 36
versionCode = 1 versionCode = 1
@@ -23,7 +23,7 @@ android {
buildTypes { buildTypes {
release { release {
isMinifyEnabled = false isMinifyEnabled = true
proguardFiles( proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"), getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro" "proguard-rules.pro"
+1 -1
View File
@@ -4,7 +4,7 @@
"type": "APK", "type": "APK",
"kind": "Directory" "kind": "Directory"
}, },
"applicationId": "com.approagency.drug", "applicationId": "com.approagency.pharmacy",
"variantName": "release", "variantName": "release",
"elements": [ "elements": [
{ {
@@ -1,4 +1,4 @@
package com.approagency.drug package com.approagency.pharmacy
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
Binary file not shown.
@@ -1,54 +0,0 @@
package com.approagency.drug
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.LayoutDirection
import androidx.navigation.compose.rememberNavController
import com.approagency.drug.navigation.AppNavGraph
import com.approagency.drug.presentation.screens.HomeScreen
import com.approagency.drug.ui.theme.DrugTheme
import com.vada.caller.ui.theme.dime
class MainActivity : ComponentActivity() {
@OptIn(ExperimentalMaterial3Api::class)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
DrugTheme {
AppNavGraph(
// navController = navController,
// modifier = Modifier.padding(innerPadding)
)
// Scaffold(modifier = Modifier.fillMaxSize(),
// ) { innerPadding ->
// AppNavGraph(
//// navController = navController,
//// modifier = Modifier.padding(innerPadding)
// )
// }
}
}
}
}
@@ -1,24 +0,0 @@
package com.approagency.drug.domain.repository
import com.approagency.drug.data.dto.DarmanModel
import com.approagency.drug.data.dto.DrugListResponse
import com.approagency.drug.data.dto.DrugModels
import com.approagency.drug.domain.model.DaroYabParams
import com.approagency.drug.domain.model.DaroYabSearchResult
import com.approagency.drug.domain.model.DrugDetail
import com.approagency.drug.domain.model.DrugSearchParams
import com.approagency.drug.domain.model.DrugSearchResult
import com.approagency.drug.domain.model.PharmacyDetail
import com.approagency.drug.domain.model.PharmacyItem
interface DrugRepository {
suspend fun searchDrug(params: DrugSearchParams): Result<DrugListResponse>
suspend fun drugDetail(cod:Int): Result<DrugModels>
suspend fun getGorohDaroei(): Result<DarmanModel>
suspend fun searchDrugs(params:DaroYabParams):Result<DaroYabSearchResult>
suspend fun getDrugDetailFromYab(detailUrl: String):Result<DrugDetail>
suspend fun searchPharmacies(genericDrugId: String,provId: String): List<PharmacyItem>
suspend fun getPharmacyDetail(pharmacyUrl: String): PharmacyDetail
}
@@ -1,14 +0,0 @@
package com.approagency.drug.domain.usecase
import com.approagency.drug.domain.model.DaroYabParams
import com.approagency.drug.domain.model.DaroYabSearchResult
import com.approagency.drug.domain.model.DrugDetail
import com.approagency.drug.domain.repository.DrugRepository
class DrugDetailYabUseCase (
private val repository: DrugRepository
) {
suspend operator fun invoke(detailUrl: String):Result<DrugDetail> {
return repository.getDrugDetailFromYab(detailUrl)
}
}
@@ -1,13 +0,0 @@
package com.approagency.drug.domain.usecase
import com.approagency.drug.data.dto.DrugListResponse
import com.approagency.drug.domain.model.DrugSearchParams
import com.approagency.drug.domain.repository.DrugRepository
class GetDrugSearchUseCase (
private val repository: DrugRepository
){
suspend operator fun invoke(params: DrugSearchParams): Result<DrugListResponse> {
return repository.searchDrug(params)
}
}
@@ -1,17 +0,0 @@
package com.approagency.drug.domain.usecase
import com.approagency.drug.data.repository.DrugRepositoryImpl
import com.approagency.drug.domain.model.DaroYabParams
import com.approagency.drug.domain.model.DaroYabSearchResult
import com.approagency.drug.domain.model.DrugSearchParams
import com.approagency.drug.domain.model.DrugSearchResult
import com.approagency.drug.domain.repository.DrugRepository
class SearchDrugsYabUseCase (
private val repository: DrugRepository
) {
suspend operator fun invoke(query: String, pageNumber: Int = 1): Result<DaroYabSearchResult> {
val params = DaroYabParams(query = query, pageNumber = pageNumber)
return repository.searchDrugs(params)
}
}
@@ -1,8 +1,8 @@
package com.approagency.drug package com.approagency.pharmacy
import android.app.Application import android.app.Application
import com.approagency.drug.data.local.database.LabDatabase import com.approagency.pharmacy.data.local.database.LabDatabase
import com.approagency.drug.di.appModule import com.approagency.pharmacy.di.appModule
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidContext
@@ -0,0 +1,33 @@
package com.approagency.pharmacy
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.material3.ExperimentalMaterial3Api
import com.approagency.pharmacy.navigation.AppNavGraph
import com.approagency.pharmacy.ui.theme.DrugTheme
class MainActivity : ComponentActivity() {
@OptIn(ExperimentalMaterial3Api::class)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
DrugTheme {
AppNavGraph(
// navController = navController,
// modifier = Modifier.padding(innerPadding)
)
// Scaffold(modifier = Modifier.fillMaxSize(),
// ) { innerPadding ->
// AppNavGraph(
//// navController = navController,
//// modifier = Modifier.padding(innerPadding)
// )
// }
}
}
}
}
@@ -1,4 +1,4 @@
package com.approagency.drug.data.dto package com.approagency.pharmacy.data.dto
data class DarmanModel( data class DarmanModel(
val success : String, val success : String,
@@ -1,4 +1,4 @@
package com.approagency.drug.data.dto package com.approagency.pharmacy.data.dto
data class DrugModels( data class DrugModels(
val success: Boolean, val success: Boolean,
@@ -1,10 +1,10 @@
package com.approagency.drug.data.local.dao package com.approagency.pharmacy.data.local.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Insert import androidx.room.Insert
import androidx.room.OnConflictStrategy import androidx.room.OnConflictStrategy
import androidx.room.Query import androidx.room.Query
import com.approagency.drug.data.local.entities.TestGroupEntity import com.approagency.pharmacy.data.local.entities.TestGroupEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@Dao @Dao
@@ -1,10 +1,10 @@
package com.approagency.drug.data.local.dao package com.approagency.pharmacy.data.local.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Insert import androidx.room.Insert
import androidx.room.OnConflictStrategy import androidx.room.OnConflictStrategy
import androidx.room.Query import androidx.room.Query
import com.approagency.drug.data.local.entities.TestItemEntity import com.approagency.pharmacy.data.local.entities.TestItemEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@Dao @Dao
@@ -1,13 +1,13 @@
package com.approagency.drug.data.local.database package com.approagency.pharmacy.data.local.database
import android.content.Context import android.content.Context
import androidx.room.Database import androidx.room.Database
import androidx.room.Room import androidx.room.Room
import androidx.room.RoomDatabase import androidx.room.RoomDatabase
import com.approagency.drug.data.local.dao.TestGroupDao import com.approagency.pharmacy.data.local.dao.TestGroupDao
import com.approagency.drug.data.local.dao.TestItemDao import com.approagency.pharmacy.data.local.dao.TestItemDao
import com.approagency.drug.data.local.entities.TestGroupEntity import com.approagency.pharmacy.data.local.entities.TestGroupEntity
import com.approagency.drug.data.local.entities.TestItemEntity import com.approagency.pharmacy.data.local.entities.TestItemEntity
@Database( @Database(
entities = [ entities = [
@@ -1,4 +1,4 @@
package com.approagency.drug.data.local.entities package com.approagency.pharmacy.data.local.entities
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
@@ -1,8 +1,7 @@
package com.approagency.drug.data.local.entities package com.approagency.pharmacy.data.local.entities
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
import androidx.room.ForeignKey
import androidx.room.Index import androidx.room.Index
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
@@ -1,4 +1,4 @@
package com.approagency.drug.data.remote package com.approagency.pharmacy.data.remote
import retrofit2.http.Field import retrofit2.http.Field
import retrofit2.http.FormUrlEncoded import retrofit2.http.FormUrlEncoded
@@ -6,7 +6,6 @@ import retrofit2.http.GET
import retrofit2.http.Headers import retrofit2.http.Headers
import retrofit2.http.POST import retrofit2.http.POST
import retrofit2.http.Path import retrofit2.http.Path
import retrofit2.http.Query
import retrofit2.http.Url import retrofit2.http.Url
interface DarooyabApiService { interface DarooyabApiService {
@@ -1,10 +1,9 @@
package com.approagency.drug.data.remote package com.approagency.pharmacy.data.remote
import com.approagency.drug.data.dto.DarmanModel import com.approagency.pharmacy.data.dto.DarmanModel
import com.approagency.drug.data.dto.DrugListResponse import com.approagency.pharmacy.data.dto.DrugListResponse
import com.approagency.drug.data.dto.DrugModels import com.approagency.pharmacy.data.dto.DrugModels
import retrofit2.http.GET import retrofit2.http.GET
import retrofit2.http.Headers
import retrofit2.http.Path import retrofit2.http.Path
import retrofit2.http.Query import retrofit2.http.Query
@@ -1,10 +1,9 @@
package com.approagency.drug.data.remote package com.approagency.pharmacy.data.remote
import com.approagency.drug.domain.model.* import com.approagency.pharmacy.domain.model.*
import org.jsoup.Jsoup import org.jsoup.Jsoup
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import org.jsoup.select.Evaluator
class DrugDetailParser { class DrugDetailParser {
@@ -1,7 +1,7 @@
package com.approagency.drug.data.remote package com.approagency.pharmacy.data.remote
import com.approagency.drug.domain.model.DaroYabSearchResult import com.approagency.pharmacy.domain.model.DaroYabSearchResult
import com.approagency.drug.domain.model.DrugSearchResult import com.approagency.pharmacy.domain.model.DrugSearchResult
import org.jsoup.Jsoup import org.jsoup.Jsoup
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
@@ -1,8 +1,8 @@
// data/remote/PharmacyHtmlParser.kt // data/remote/PharmacyHtmlParser.kt
package com.approagency.drug.data.remote package com.approagency.pharmacy.data.remote
import com.approagency.drug.domain.model.PharmacyDetail import com.approagency.pharmacy.domain.model.PharmacyDetail
import com.approagency.drug.domain.model.PharmacyItem import com.approagency.pharmacy.domain.model.PharmacyItem
import org.jsoup.Jsoup import org.jsoup.Jsoup
object PharmacyHtmlParser { object PharmacyHtmlParser {
@@ -1,4 +1,4 @@
package com.approagency.drug.data.remote package com.approagency.pharmacy.data.remote
import okhttp3.ResponseBody import okhttp3.ResponseBody
import retrofit2.Converter import retrofit2.Converter
@@ -1,21 +1,20 @@
package com.approagency.drug.data.repository package com.approagency.pharmacy.data.repository
import com.approagency.drug.data.dto.DarmanModel import com.approagency.pharmacy.data.dto.DarmanModel
import com.approagency.drug.data.dto.DrugListResponse import com.approagency.pharmacy.data.dto.DrugListResponse
import com.approagency.drug.data.dto.DrugModels import com.approagency.pharmacy.data.dto.DrugModels
import com.approagency.drug.data.remote.DarooyabApiService import com.approagency.pharmacy.data.remote.DarooyabApiService
import com.approagency.drug.data.remote.DrugApiService import com.approagency.pharmacy.data.remote.DrugApiService
import com.approagency.drug.data.remote.DrugDetailParser import com.approagency.pharmacy.data.remote.DrugDetailParser
import com.approagency.drug.data.remote.DrugHtmlParser import com.approagency.pharmacy.data.remote.DrugHtmlParser
import com.approagency.drug.data.remote.PharmacyHtmlParser import com.approagency.pharmacy.data.remote.PharmacyHtmlParser
import com.approagency.drug.domain.model.DaroYabParams import com.approagency.pharmacy.domain.model.DaroYabParams
import com.approagency.drug.domain.model.DaroYabSearchResult import com.approagency.pharmacy.domain.model.DaroYabSearchResult
import com.approagency.drug.domain.model.DrugDetail import com.approagency.pharmacy.domain.model.DrugDetail
import com.approagency.drug.domain.model.DrugSearchParams import com.approagency.pharmacy.domain.model.DrugSearchParams
import com.approagency.drug.domain.model.DrugSearchResult import com.approagency.pharmacy.domain.model.PharmacyDetail
import com.approagency.drug.domain.model.PharmacyDetail import com.approagency.pharmacy.domain.model.PharmacyItem
import com.approagency.drug.domain.model.PharmacyItem import com.approagency.pharmacy.domain.repository.DrugRepository
import com.approagency.drug.domain.repository.DrugRepository
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import java.io.IOException import java.io.IOException
@@ -1,9 +1,9 @@
package com.approagency.drug.data.repository package com.approagency.pharmacy.data.repository
import com.approagency.drug.data.local.dao.TestGroupDao import com.approagency.pharmacy.data.local.dao.TestGroupDao
import com.approagency.drug.data.local.dao.TestItemDao import com.approagency.pharmacy.data.local.dao.TestItemDao
import com.approagency.drug.data.local.entities.TestGroupEntity import com.approagency.pharmacy.data.local.entities.TestGroupEntity
import com.approagency.drug.data.local.entities.TestItemEntity import com.approagency.pharmacy.data.local.entities.TestItemEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.combine
@@ -1,30 +1,29 @@
package com.approagency.drug.di package com.approagency.pharmacy.di
import android.app.Application import com.approagency.pharmacy.data.local.database.LabDatabase
import com.approagency.drug.data.local.database.LabDatabase import com.approagency.pharmacy.data.remote.DarooyabApiService
import com.approagency.drug.data.remote.DarooyabApiService import com.approagency.pharmacy.data.remote.DrugApiService
import com.approagency.drug.data.remote.DrugApiService import com.approagency.pharmacy.data.remote.DrugDetailParser
import com.approagency.drug.data.remote.DrugDetailParser import com.approagency.pharmacy.data.remote.DrugHtmlParser
import com.approagency.drug.data.remote.DrugHtmlParser import com.approagency.pharmacy.data.repository.DrugRepositoryImpl
import com.approagency.drug.data.repository.DrugRepositoryImpl import com.approagency.pharmacy.data.repository.LabRepositoryImpl
import com.approagency.drug.data.repository.LabRepositoryImpl import com.approagency.pharmacy.domain.repository.DrugRepository
import com.approagency.drug.domain.repository.DrugRepository import com.approagency.pharmacy.domain.usecase.DrugDetailYabUseCase
import com.approagency.drug.domain.usecase.DrugDetailYabUseCase import com.approagency.pharmacy.domain.usecase.GetDarmanUseCase
import com.approagency.drug.domain.usecase.GetDarmanUseCase import com.approagency.pharmacy.domain.usecase.GetDrugDetailUseCase
import com.approagency.drug.domain.usecase.GetDrugDetailUseCase import com.approagency.pharmacy.domain.usecase.GetDrugSearchUseCase
import com.approagency.drug.domain.usecase.GetDrugSearchUseCase import com.approagency.pharmacy.domain.usecase.GetPharmaciesUseCase
import com.approagency.drug.domain.usecase.GetPharmaciesUseCase import com.approagency.pharmacy.domain.usecase.GetPharmacyDetailUseCase
import com.approagency.drug.domain.usecase.GetPharmacyDetailUseCase import com.approagency.pharmacy.domain.usecase.GetTestGroupUseCase
import com.approagency.drug.domain.usecase.GetTestGroupUseCase import com.approagency.pharmacy.domain.usecase.GetTestItemByGroupId
import com.approagency.drug.domain.usecase.GetTestItemByGroupId import com.approagency.pharmacy.domain.usecase.SearchDrugsYabUseCase
import com.approagency.drug.domain.usecase.SearchDrugsYabUseCase import com.approagency.pharmacy.domain.usecase.SearchTestsUseCase
import com.approagency.drug.domain.usecase.SearchTestsUseCase import com.approagency.pharmacy.presentation.viewModel.DrugDetailViewModel
import com.approagency.drug.presentation.viewModel.DrugDetailViewModel import com.approagency.pharmacy.presentation.viewModel.HomeViewModel
import com.approagency.drug.presentation.viewModel.HomeViewModel import com.approagency.pharmacy.presentation.viewModel.LabViewModel
import com.approagency.drug.presentation.viewModel.LabViewModel import com.approagency.pharmacy.presentation.viewModel.PharmacyViewModel
import com.approagency.drug.presentation.viewModel.PharmacyViewModel import com.approagency.pharmacy.utils.Config
import com.approagency.drug.utils.Config
import com.approgency.drug.presentation.viewModel.SearchViewModel import com.approgency.drug.presentation.viewModel.SearchViewModel
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor import okhttp3.logging.HttpLoggingInterceptor
@@ -1,4 +1,4 @@
package com.approagency.drug.domain.model package com.approagency.pharmacy.domain.model
data class DaroYabParams( data class DaroYabParams(
val query: String? = null, val query: String? = null,
@@ -1,4 +1,4 @@
package com.approagency.drug.domain.model package com.approagency.pharmacy.domain.model
data class DaroYabSearchResult( data class DaroYabSearchResult(
val drugs: List<DrugSearchResult>, val drugs: List<DrugSearchResult>,
@@ -1,4 +1,4 @@
package com.approagency.drug.domain.model package com.approagency.pharmacy.domain.model
data class DrugDetail( data class DrugDetail(
val genericId: String, val genericId: String,
@@ -1,4 +1,4 @@
package com.approagency.drug.domain.model package com.approagency.pharmacy.domain.model
data class DrugSearchParams( data class DrugSearchParams(
val query: String? = null, val query: String? = null,
@@ -1,4 +1,4 @@
package com.approagency.drug.domain.model package com.approagency.pharmacy.domain.model
data class DrugSearchResult( data class DrugSearchResult(
val genericId: String, // e.g., "2556" from "/G-2556/Casanthranol" val genericId: String, // e.g., "2556" from "/G-2556/Casanthranol"
@@ -1,4 +1,4 @@
package com.approagency.drug.domain.model package com.approagency.pharmacy.domain.model
data class PharmacySearchRequest( data class PharmacySearchRequest(
val brandIrc: String = "0", // برای صفحات برند val brandIrc: String = "0", // برای صفحات برند
@@ -1,6 +1,6 @@
package com.approagency.drug.domain.model package com.approagency.pharmacy.domain.model
import com.approagency.drug.data.local.entities.TestGroupEntity import com.approagency.pharmacy.data.local.entities.TestGroupEntity
data class TestGroup( data class TestGroup(
val id: Int, val id: Int,
@@ -1,6 +1,6 @@
package com.approagency.drug.domain.model package com.approagency.pharmacy.domain.model
import com.approagency.drug.data.local.entities.TestItemEntity import com.approagency.pharmacy.data.local.entities.TestItemEntity
data class TestItem( data class TestItem(
val id: Int, val id: Int,
@@ -0,0 +1,23 @@
package com.approagency.pharmacy.domain.repository
import com.approagency.pharmacy.data.dto.DarmanModel
import com.approagency.pharmacy.data.dto.DrugListResponse
import com.approagency.pharmacy.data.dto.DrugModels
import com.approagency.pharmacy.domain.model.DaroYabParams
import com.approagency.pharmacy.domain.model.DaroYabSearchResult
import com.approagency.pharmacy.domain.model.DrugDetail
import com.approagency.pharmacy.domain.model.DrugSearchParams
import com.approagency.pharmacy.domain.model.PharmacyDetail
import com.approagency.pharmacy.domain.model.PharmacyItem
interface DrugRepository {
suspend fun searchDrug(params: DrugSearchParams): Result<DrugListResponse>
suspend fun drugDetail(cod:Int): Result<DrugModels>
suspend fun getGorohDaroei(): Result<DarmanModel>
suspend fun searchDrugs(params:DaroYabParams):Result<DaroYabSearchResult>
suspend fun getDrugDetailFromYab(detailUrl: String):Result<DrugDetail>
suspend fun searchPharmacies(genericDrugId: String,provId: String): List<PharmacyItem>
suspend fun getPharmacyDetail(pharmacyUrl: String): PharmacyDetail
}
@@ -0,0 +1,12 @@
package com.approagency.pharmacy.domain.usecase
import com.approagency.pharmacy.domain.model.DrugDetail
import com.approagency.pharmacy.domain.repository.DrugRepository
class DrugDetailYabUseCase (
private val repository: DrugRepository
) {
suspend operator fun invoke(detailUrl: String):Result<DrugDetail> {
return repository.getDrugDetailFromYab(detailUrl)
}
}
@@ -1,7 +1,7 @@
package com.approagency.drug.domain.usecase package com.approagency.pharmacy.domain.usecase
import com.approagency.drug.data.dto.DarmanModel import com.approagency.pharmacy.data.dto.DarmanModel
import com.approagency.drug.domain.repository.DrugRepository import com.approagency.pharmacy.domain.repository.DrugRepository
class GetDarmanUseCase ( class GetDarmanUseCase (
private val repository: DrugRepository private val repository: DrugRepository
@@ -1,7 +1,7 @@
package com.approagency.drug.domain.usecase package com.approagency.pharmacy.domain.usecase
import com.approagency.drug.data.dto.DrugModels import com.approagency.pharmacy.data.dto.DrugModels
import com.approagency.drug.domain.repository.DrugRepository import com.approagency.pharmacy.domain.repository.DrugRepository
class GetDrugDetailUseCase class GetDrugDetailUseCase
( (
@@ -0,0 +1,13 @@
package com.approagency.pharmacy.domain.usecase
import com.approagency.pharmacy.data.dto.DrugListResponse
import com.approagency.pharmacy.domain.model.DrugSearchParams
import com.approagency.pharmacy.domain.repository.DrugRepository
class GetDrugSearchUseCase (
private val repository: DrugRepository
){
suspend operator fun invoke(params: DrugSearchParams): Result<DrugListResponse> {
return repository.searchDrug(params)
}
}
@@ -1,7 +1,7 @@
package com.approagency.drug.domain.usecase package com.approagency.pharmacy.domain.usecase
import com.approagency.drug.domain.model.PharmacyItem import com.approagency.pharmacy.domain.model.PharmacyItem
import com.approagency.drug.domain.repository.DrugRepository import com.approagency.pharmacy.domain.repository.DrugRepository
class GetPharmaciesUseCase( class GetPharmaciesUseCase(
private val repository: DrugRepository private val repository: DrugRepository
@@ -1,7 +1,7 @@
package com.approagency.drug.domain.usecase package com.approagency.pharmacy.domain.usecase
import com.approagency.drug.domain.model.PharmacyDetail import com.approagency.pharmacy.domain.model.PharmacyDetail
import com.approagency.drug.domain.repository.DrugRepository import com.approagency.pharmacy.domain.repository.DrugRepository
class GetPharmacyDetailUseCase( class GetPharmacyDetailUseCase(
private val repository: DrugRepository private val repository: DrugRepository
@@ -1,7 +1,7 @@
package com.approagency.drug.domain.usecase package com.approagency.pharmacy.domain.usecase
import com.approagency.drug.data.repository.LabRepositoryImpl import com.approagency.pharmacy.data.repository.LabRepositoryImpl
import com.approagency.drug.domain.model.TestGroup import com.approagency.pharmacy.domain.model.TestGroup
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
@@ -1,8 +1,7 @@
package com.approagency.drug.domain.usecase package com.approagency.pharmacy.domain.usecase
import com.approagency.drug.data.local.entities.TestItemEntity import com.approagency.pharmacy.data.repository.LabRepositoryImpl
import com.approagency.drug.data.repository.LabRepositoryImpl import com.approagency.pharmacy.domain.model.TestItem
import com.approagency.drug.domain.model.TestItem
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
@@ -0,0 +1,14 @@
package com.approagency.pharmacy.domain.usecase
import com.approagency.pharmacy.domain.model.DaroYabParams
import com.approagency.pharmacy.domain.model.DaroYabSearchResult
import com.approagency.pharmacy.domain.repository.DrugRepository
class SearchDrugsYabUseCase (
private val repository: DrugRepository
) {
suspend operator fun invoke(query: String, pageNumber: Int = 1): Result<DaroYabSearchResult> {
val params = DaroYabParams(query = query, pageNumber = pageNumber)
return repository.searchDrugs(params)
}
}
@@ -1,11 +1,11 @@
package com.approagency.drug.domain.usecase package com.approagency.pharmacy.domain.usecase
import com.approagency.drug.data.repository.LabRepositoryImpl import com.approagency.pharmacy.data.repository.LabRepositoryImpl
import com.approagency.drug.domain.model.TestGroup import com.approagency.pharmacy.domain.model.TestGroup
import com.approagency.drug.domain.model.TestItem import com.approagency.pharmacy.domain.model.TestItem
import com.approagency.drug.domain.model.toTestGroup import com.approagency.pharmacy.domain.model.toTestGroup
import com.approagency.drug.domain.model.toTestItem import com.approagency.pharmacy.domain.model.toTestItem
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
@@ -1,4 +1,4 @@
package com.approagency.drug.navigation package com.approagency.pharmacy.navigation
import android.net.Uri import android.net.Uri
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -8,10 +8,10 @@ import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument import androidx.navigation.navArgument
import com.approagency.drug.presentation.screens.DrugDetailScreen import com.approagency.pharmacy.presentation.screens.DrugDetailScreen
import com.approagency.drug.presentation.screens.HomeScreen import com.approagency.pharmacy.presentation.screens.HomeScreen
import com.approagency.drug.presentation.screens.LabScreen import com.approagency.pharmacy.presentation.screens.LabScreen
import com.approagency.drug.presentation.screens.SearchScreen import com.approagency.pharmacy.presentation.screens.SearchScreen
@Composable @Composable
fun AppNavGraph() { fun AppNavGraph() {
@@ -1,31 +1,22 @@
package com.approagency.drug.navigation package com.approagency.pharmacy.navigation
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.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Build
import androidx.compose.material.icons.filled.LocalPharmacy import androidx.compose.material.icons.filled.LocalPharmacy
import androidx.compose.material.icons.filled.Science import androidx.compose.material.icons.filled.Science
import androidx.compose.material.icons.filled.Search import androidx.compose.material.icons.filled.Search
import androidx.compose.material.icons.rounded.Refresh
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.NavigationBar
import androidx.compose.material3.NavigationBarItem
import androidx.compose.material3.NavigationBarItemDefaults
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -35,8 +26,6 @@ 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.unit.dp import androidx.compose.ui.unit.dp
import androidx.navigation.NavDestination.Companion.hierarchy
import androidx.navigation.NavGraph.Companion.findStartDestination
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.currentBackStackEntryAsState
@@ -1,14 +1,12 @@
package com.approagency.drug.navigation package com.approagency.pharmacy.navigation
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.currentBackStackEntryAsState
@Composable @Composable
fun MainContainer( fun MainContainer(
navController: NavHostController, navController: NavHostController,
@@ -1,4 +1,4 @@
package com.approagency.drug.navigation package com.approagency.pharmacy.navigation
import android.net.Uri import android.net.Uri
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.common package com.approagency.pharmacy.presentation.common
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
@@ -7,10 +7,8 @@ import androidx.compose.material3.*
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.vada.caller.ui.theme.dime import com.vada.caller.ui.theme.dime
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
@@ -1,8 +1,7 @@
package com.approagency.drug.presentation.common package com.approagency.pharmacy.presentation.common
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
@@ -1,9 +1,8 @@
package com.approagency.drug.presentation.common package com.approagency.pharmacy.presentation.common
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.common package com.approagency.pharmacy.presentation.common
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.border import androidx.compose.foundation.border
@@ -29,7 +29,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.focus.onFocusChanged
import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.vada.caller.ui.theme.dime import com.vada.caller.ui.theme.dime
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.common package com.approagency.pharmacy.presentation.common
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -10,7 +10,6 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
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.sp import androidx.compose.ui.unit.sp
import com.vada.caller.ui.theme.LocalDime import com.vada.caller.ui.theme.LocalDime
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.common package com.approagency.pharmacy.presentation.common
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.common package com.approagency.pharmacy.presentation.common
import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarHostState
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
@@ -1,16 +1,11 @@
package com.approagency.drug.presentation.common package com.approagency.pharmacy.presentation.common
import android.content.res.Resources.Theme
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.vada.caller.ui.theme.dime
@Composable @Composable
fun Loading( fun Loading(
@@ -1,6 +1,5 @@
package com.approagency.drug.presentation.common package com.approagency.pharmacy.presentation.common
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.material3.Button import androidx.compose.material3.Button
@@ -1,19 +1,15 @@
package com.approagency.drug.presentation.components package com.approagency.pharmacy.presentation.components
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.twotone.KeyboardArrowLeft import androidx.compose.material.icons.automirrored.twotone.KeyboardArrowLeft
import androidx.compose.material.icons.filled.Search
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -23,15 +19,10 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.AbsoluteAlignment import androidx.compose.ui.AbsoluteAlignment
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import com.approagency.pharmacy.data.dto.DarmanList
import com.approagency.drug.data.dto.DarmanList import com.approagency.pharmacy.data.dto.DarmanModel
import com.approagency.drug.data.dto.DarmanModel import com.approagency.pharmacy.presentation.common.CustomBox
import com.approagency.drug.data.dto.DrugDetail
import com.approagency.drug.data.dto.DrugListResponse
import com.approagency.drug.presentation.common.CustomBox
import com.approagency.drug.presentation.common.PrimaryButton
import com.vada.caller.ui.theme.dime import com.vada.caller.ui.theme.dime
import kotlin.collections.emptyList import kotlin.collections.emptyList
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.components package com.approagency.pharmacy.presentation.components
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
@@ -6,20 +6,15 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TextButton import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import com.approagency.drug.domain.model.DaroYabSearchResult import com.approagency.pharmacy.domain.model.DrugSearchResult
import com.approagency.drug.domain.model.DrugSearchResult import com.approagency.pharmacy.presentation.common.CustomBox
import com.approagency.drug.presentation.common.CustomBox
import com.vada.caller.ui.theme.LocalDime import com.vada.caller.ui.theme.LocalDime
import com.vada.caller.ui.theme.dime import com.vada.caller.ui.theme.dime
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.components package com.approagency.pharmacy.presentation.components
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
@@ -23,9 +23,9 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import com.approagency.drug.data.dto.DrugDetail import com.approagency.pharmacy.data.dto.DrugDetail
import com.approagency.drug.data.dto.DrugListResponse import com.approagency.pharmacy.data.dto.DrugListResponse
import com.approagency.drug.presentation.common.CustomBox import com.approagency.pharmacy.presentation.common.CustomBox
import com.vada.caller.ui.theme.dime import com.vada.caller.ui.theme.dime
@Composable @Composable
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.components package com.approagency.pharmacy.presentation.components
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -13,7 +13,7 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import com.approagency.drug.presentation.common.CustomBox import com.approagency.pharmacy.presentation.common.CustomBox
import com.vada.caller.ui.theme.dime import com.vada.caller.ui.theme.dime
@Composable @Composable
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.components package com.approagency.pharmacy.presentation.components
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.components package com.approagency.pharmacy.presentation.components
import android.annotation.SuppressLint import android.annotation.SuppressLint
@@ -13,23 +13,21 @@ import androidx.compose.material3.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import com.approagency.drug.domain.model.PharmacyItem import com.approagency.pharmacy.domain.model.PharmacyItem
import com.approagency.drug.presentation.common.CustomBox import com.approagency.pharmacy.presentation.common.CustomBox
import com.approagency.drug.presentation.common.CustomModalBottomSheet import com.approagency.pharmacy.presentation.common.CustomModalBottomSheet
import com.approagency.drug.presentation.common.Loading import com.approagency.pharmacy.presentation.common.Loading
import com.approagency.drug.presentation.viewModel.PharmacyDetailState import com.approagency.pharmacy.presentation.viewModel.PharmacyDetailState
import com.approagency.drug.presentation.viewModel.PharmacyState import com.approagency.pharmacy.presentation.viewModel.PharmacyState
import com.approagency.drug.presentation.viewModel.PharmacyViewModel import com.approagency.pharmacy.presentation.viewModel.PharmacyViewModel
import com.approagency.drug.utils.provinces import com.approagency.pharmacy.utils.provinces
import com.vada.caller.ui.theme.LocalDime import com.vada.caller.ui.theme.LocalDime
import com.vada.caller.ui.theme.dime import com.vada.caller.ui.theme.dime
import kotlinx.coroutines.launch
@SuppressLint("ConfigurationScreenWidthHeight") @SuppressLint("ConfigurationScreenWidthHeight")
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.components package com.approagency.pharmacy.presentation.components
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
@@ -8,8 +8,8 @@ import androidx.compose.runtime.Composable
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
import com.approagency.drug.presentation.common.CustomBox import com.approagency.pharmacy.presentation.common.CustomBox
import com.approagency.drug.presentation.common.PrimaryButton import com.approagency.pharmacy.presentation.common.PrimaryButton
import com.vada.caller.ui.theme.dime import com.vada.caller.ui.theme.dime
@Composable @Composable
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.components package com.approagency.pharmacy.presentation.components
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -18,18 +18,17 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.approagency.drug.domain.model.TestGroup import com.approagency.pharmacy.domain.model.TestGroup
import com.approagency.drug.domain.model.TestItem import com.approagency.pharmacy.domain.model.TestItem
import com.approagency.drug.presentation.common.CustomBox import com.approagency.pharmacy.presentation.common.CustomBox
import com.approagency.drug.presentation.common.Loading import com.approagency.pharmacy.presentation.common.Loading
import com.approagency.drug.presentation.viewModel.SearchResult import com.approagency.pharmacy.presentation.viewModel.SearchResult
import com.vada.caller.ui.theme.dime import com.vada.caller.ui.theme.dime
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.ui.AbsoluteAlignment import androidx.compose.ui.AbsoluteAlignment
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextDirection import androidx.compose.ui.text.style.TextDirection
import androidx.compose.ui.text.style.TextOverflow
@Composable @Composable
fun SearchResultsContent( fun SearchResultsContent(
@@ -1,14 +1,12 @@
package com.approagency.drug.presentation.components package com.approagency.pharmacy.presentation.components
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth 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.foundation.lazy.items // Import items if you were to use it for lists within LazyColumn
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -20,11 +18,10 @@ import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.LayoutDirection
import com.approagency.drug.data.dto.DrugDetail // Import DrugDetail directly import com.approagency.pharmacy.data.dto.DrugDetail // Import DrugDetail directly
import com.approagency.drug.data.dto.DrugModels import com.approagency.pharmacy.presentation.common.CustomModalBottomSheet
import com.approagency.drug.presentation.common.CustomModalBottomSheet import com.approagency.pharmacy.presentation.viewModel.DrugDetailState
import com.approagency.drug.presentation.viewModel.DrugDetailState import com.approagency.pharmacy.presentation.viewModel.HomeViewModel
import com.approagency.drug.presentation.viewModel.HomeViewModel
import com.vada.caller.ui.theme.dime // Assuming this is your custom spacing/dimension object import com.vada.caller.ui.theme.dime // Assuming this is your custom spacing/dimension object
@Composable @Composable
@@ -1,6 +1,5 @@
package com.approagency.drug.presentation.components package com.approagency.pharmacy.presentation.components
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
@@ -20,12 +19,10 @@ import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.approagency.drug.domain.model.TestGroup import com.approagency.pharmacy.domain.model.TestGroup
import com.approagency.drug.presentation.common.CustomModalBottomSheet import com.approagency.pharmacy.presentation.common.CustomModalBottomSheet
import com.approagency.drug.presentation.viewModel.LabViewModel import com.approagency.pharmacy.presentation.viewModel.TestItemState
import com.approagency.drug.presentation.viewModel.TestItemState
import com.vada.caller.ui.theme.dime import com.vada.caller.ui.theme.dime
import kotlinx.coroutines.flow.collect
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
@@ -84,7 +81,7 @@ fun TestDetailSheet(state: TestItemState, testGroup: TestGroup, onDismiss: () ->
} }
@Composable @Composable
fun TestItemDetailCard(testItem: com.approagency.drug.domain.model.TestItem) { fun TestItemDetailCard(testItem: com.approagency.pharmacy.domain.model.TestItem) {
Column( Column(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.components package com.approagency.pharmacy.presentation.components
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
@@ -22,8 +22,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextDirection import androidx.compose.ui.text.style.TextDirection
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import com.approagency.drug.domain.model.TestGroup import com.approagency.pharmacy.domain.model.TestGroup
import com.approagency.drug.presentation.common.CustomBox import com.approagency.pharmacy.presentation.common.CustomBox
import com.vada.caller.ui.theme.dime import com.vada.caller.ui.theme.dime
@@ -1,27 +1,20 @@
package com.approagency.drug.presentation.components package com.approagency.pharmacy.presentation.components
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Card import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults import androidx.compose.material3.CardDefaults
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Divider import androidx.compose.material3.Divider
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.FilterChip
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -33,23 +26,18 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment 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.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.approagency.drug.R import com.approagency.pharmacy.domain.model.DrugDetail
import com.approagency.drug.domain.model.DrugDetail import com.approagency.pharmacy.presentation.common.CustomModalBottomSheet
import com.approagency.drug.presentation.common.CustomModalBottomSheet import com.approagency.pharmacy.presentation.common.ErrorState
import com.approagency.drug.presentation.common.ErrorState import com.approagency.pharmacy.presentation.viewModel.DrugDetailViewModel
import com.approagency.drug.presentation.viewModel.DrugDetailViewModel import com.approagency.pharmacy.presentation.viewModel.DrugDetailYabState
import com.approagency.drug.presentation.viewModel.DrugDetailYabState
import com.vada.caller.ui.theme.LocalDime import com.vada.caller.ui.theme.LocalDime
import com.vada.caller.ui.theme.dime
import kotlinx.coroutines.delay
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
@@ -421,7 +409,7 @@ fun InfoSection(
} }
@Composable @Composable
fun DosageFormsSection(dosageForms: List<com.approagency.drug.domain.model.DosageForm>) { fun DosageFormsSection(dosageForms: List<com.approagency.pharmacy.domain.model.DosageForm>) {
val dime = LocalDime.current val dime = LocalDime.current
Column { Column {
@@ -477,7 +465,7 @@ fun DosageFormsSection(dosageForms: List<com.approagency.drug.domain.model.Dosag
} }
@Composable @Composable
fun BrandNamesSection(brandNames: List<com.approagency.drug.domain.model.BrandName>) { fun BrandNamesSection(brandNames: List<com.approagency.pharmacy.domain.model.BrandName>) {
val dime = LocalDime.current val dime = LocalDime.current
Column { Column {
@@ -1,7 +1,5 @@
package com.approagency.drug.presentation.screens package com.approagency.pharmacy.presentation.screens
import android.R
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -26,7 +24,6 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.material3.SecondaryTabRow
import androidx.compose.material3.Tab import androidx.compose.material3.Tab
import androidx.compose.material3.TabRow import androidx.compose.material3.TabRow
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -50,12 +47,11 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavController import androidx.navigation.NavController
import com.approagency.drug.domain.model.DrugDetail import com.approagency.pharmacy.domain.model.DrugDetail
import com.approagency.drug.presentation.common.ErrorState import com.approagency.pharmacy.presentation.common.ErrorState
import com.approagency.drug.presentation.viewModel.DrugDetailViewModel import com.approagency.pharmacy.presentation.viewModel.DrugDetailViewModel
import com.approagency.drug.presentation.viewModel.DrugDetailYabState import com.approagency.pharmacy.presentation.viewModel.DrugDetailYabState
import com.vada.caller.ui.theme.LocalDime import com.vada.caller.ui.theme.LocalDime
import com.vada.caller.ui.theme.dime
import org.koin.androidx.compose.koinViewModel import org.koin.androidx.compose.koinViewModel
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@@ -231,7 +227,7 @@ fun DrugDetailScreen(
@Composable @Composable
fun ManufacturerInfoCard( fun ManufacturerInfoCard(
manufacturer: String, manufacturer: String,
genericInfo: com.approagency.drug.domain.model.GenericInfo?, genericInfo: com.approagency.pharmacy.domain.model.GenericInfo?,
modifier: Modifier = Modifier modifier: Modifier = Modifier
) { ) {
val dime = LocalDime.current val dime = LocalDime.current
@@ -1,13 +1,5 @@
package com.approagency.drug.presentation.screens package com.approagency.pharmacy.presentation.screens
import android.R
import android.R.attr.fontWeight
import android.content.res.Resources
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
import androidx.compose.foundation.gestures.snapping.SnapPosition
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -17,35 +9,15 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.twotone.KeyboardArrowLeft
import androidx.compose.material.icons.filled.Info
import androidx.compose.material.icons.filled.KeyboardArrowLeft
import androidx.compose.material.icons.filled.KeyboardArrowRight import androidx.compose.material.icons.filled.KeyboardArrowRight
import androidx.compose.material.icons.filled.Search
import androidx.compose.material.icons.twotone.Info
import androidx.compose.material.icons.twotone.KeyboardArrowLeft
import androidx.compose.material.icons.twotone.KeyboardArrowRight
import androidx.compose.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TextButton import androidx.compose.material3.TextButton
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
@@ -54,32 +26,19 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.TextUnit
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavController import androidx.navigation.NavController
import com.approagency.drug.data.dto.DrugDetail import com.approagency.pharmacy.domain.model.DrugSearchParams
import com.approagency.drug.data.dto.DrugListResponse import com.approagency.pharmacy.presentation.common.CustomModalDialog
import com.approagency.drug.domain.model.DrugSearchParams import com.approagency.pharmacy.presentation.common.Loading
import com.approagency.drug.presentation.common.CustomBox import com.approagency.pharmacy.presentation.components.DarmanContent
import com.approagency.drug.presentation.common.CustomModalBottomSheet import com.approagency.pharmacy.presentation.components.DrugDetailSheet
import com.approagency.drug.presentation.common.CustomModalDialog import com.approagency.pharmacy.presentation.components.DrugListContent
import com.approagency.drug.presentation.common.CustomTextFilled import com.approagency.pharmacy.presentation.components.EmptyStateContent
import com.approagency.drug.presentation.common.Loading import com.approagency.pharmacy.presentation.viewModel.CombineState
import com.approagency.drug.presentation.common.PrimaryButton import com.approagency.pharmacy.presentation.viewModel.HomeEvent
import com.approagency.drug.presentation.components.DarmanContent import com.approagency.pharmacy.presentation.viewModel.HomeViewModel
import com.approagency.drug.presentation.components.DrugDetailSheet
import com.approagency.drug.presentation.components.DrugListContent
import com.approagency.drug.presentation.components.EmptyStateContent
import com.approagency.drug.presentation.viewModel.CombineState
import com.approagency.drug.presentation.viewModel.HomeEvent
import com.approagency.drug.presentation.viewModel.HomeViewModel
import com.vada.caller.ui.theme.Dime
import com.vada.caller.ui.theme.dime import com.vada.caller.ui.theme.dime
import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.SharedFlow
import org.koin.androidx.compose.koinViewModel import org.koin.androidx.compose.koinViewModel
@@ -1,54 +1,37 @@
package com.approagency.drug.presentation.screens package com.approagency.pharmacy.presentation.screens
import android.R.attr.onClick
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
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.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.twotone.KeyboardArrowLeft
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.AbsoluteAlignment
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextDirection import com.approagency.pharmacy.domain.model.TestGroup
import androidx.compose.ui.text.style.TextOverflow import com.approagency.pharmacy.domain.model.TestItem
import androidx.compose.ui.unit.dp import com.approagency.pharmacy.presentation.common.CustomModalDialog
import com.approagency.drug.domain.model.TestGroup import com.approagency.pharmacy.presentation.common.CustomTextFilled
import com.approagency.drug.domain.model.TestItem import com.approagency.pharmacy.presentation.common.Loading
import com.approagency.drug.presentation.common.CustomBox import com.approagency.pharmacy.presentation.common.PrimaryButton
import com.approagency.drug.presentation.common.CustomModalDialog import com.approagency.pharmacy.presentation.components.RetryContent
import com.approagency.drug.presentation.common.CustomTextFilled import com.approagency.pharmacy.presentation.components.SearchResultsContent
import com.approagency.drug.presentation.common.Loading import com.approagency.pharmacy.presentation.components.TestDetailSheet
import com.approagency.drug.presentation.common.PrimaryButton import com.approagency.pharmacy.presentation.components.TestGroupItemContent
import com.approagency.drug.presentation.components.RetryContent import com.approagency.pharmacy.presentation.viewModel.LabViewModel
import com.approagency.drug.presentation.components.SearchResultsContent
import com.approagency.drug.presentation.components.TestDetailSheet
import com.approagency.drug.presentation.components.TestGroupItemContent
import com.approagency.drug.presentation.viewModel.LabViewModel
import com.vada.caller.ui.theme.dime import com.vada.caller.ui.theme.dime
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.count
import org.koin.androidx.compose.koinViewModel import org.koin.androidx.compose.koinViewModel
@Composable @Composable
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.screens package com.approagency.pharmacy.presentation.screens
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
@@ -1,4 +1,4 @@
package com.approagency.drug.presentation.screens package com.approagency.pharmacy.presentation.screens
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -24,19 +24,19 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.navigation.NavController import androidx.navigation.NavController
import com.approagency.drug.domain.model.DrugSearchResult import com.approagency.pharmacy.domain.model.DrugSearchResult
import com.approagency.drug.navigation.Screen import com.approagency.pharmacy.navigation.Screen
import com.approagency.drug.presentation.common.CustomTextFilled import com.approagency.pharmacy.presentation.common.CustomTextFilled
import com.approagency.drug.presentation.common.EmptySearchState import com.approagency.pharmacy.presentation.common.EmptySearchState
import com.approagency.drug.presentation.common.EndOfListIndicator import com.approagency.pharmacy.presentation.common.EndOfListIndicator
import com.approagency.drug.presentation.common.ErrorState import com.approagency.pharmacy.presentation.common.ErrorState
import com.approagency.drug.presentation.common.LoadingMoreIndicator import com.approagency.pharmacy.presentation.common.LoadingMoreIndicator
import com.approagency.drug.presentation.common.PrimaryButton import com.approagency.pharmacy.presentation.common.PrimaryButton
import com.approagency.drug.presentation.components.DaroYabSearchResult import com.approagency.pharmacy.presentation.components.DaroYabSearchResult
import com.approagency.drug.presentation.components.DrugDetailBottomSheet import com.approagency.pharmacy.presentation.components.DrugDetailBottomSheet
import com.approagency.drug.presentation.components.PharmacyBottomSheet import com.approagency.pharmacy.presentation.components.PharmacyBottomSheet
import com.approagency.drug.presentation.viewModel.DrugDetailViewModel import com.approagency.pharmacy.presentation.viewModel.DrugDetailViewModel
import com.approagency.drug.presentation.viewModel.PharmacyViewModel import com.approagency.pharmacy.presentation.viewModel.PharmacyViewModel
import com.approgency.drug.presentation.viewModel.SearchState import com.approgency.drug.presentation.viewModel.SearchState
import com.approgency.drug.presentation.viewModel.SearchViewModel import com.approgency.drug.presentation.viewModel.SearchViewModel
import com.vada.caller.ui.theme.LocalDime import com.vada.caller.ui.theme.LocalDime
@@ -1,9 +1,9 @@
package com.approagency.drug.presentation.viewModel package com.approagency.pharmacy.presentation.viewModel
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.approagency.drug.domain.model.DrugDetail import com.approagency.pharmacy.domain.model.DrugDetail
import com.approagency.drug.domain.usecase.DrugDetailYabUseCase import com.approagency.pharmacy.domain.usecase.DrugDetailYabUseCase
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
@@ -1,18 +1,14 @@
package com.approagency.drug.presentation.viewModel package com.approagency.pharmacy.presentation.viewModel
import android.net.http.HttpException
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.approagency.drug.data.dto.DarmanModel import com.approagency.pharmacy.data.dto.DarmanModel
import com.approagency.drug.data.dto.DrugDetail import com.approagency.pharmacy.data.dto.DrugListResponse
import com.approagency.drug.data.dto.DrugListResponse import com.approagency.pharmacy.data.dto.DrugModels
import com.approagency.drug.data.dto.DrugModels import com.approagency.pharmacy.domain.model.DrugSearchParams
import com.approagency.drug.domain.model.DrugSearchParams import com.approagency.pharmacy.domain.usecase.GetDarmanUseCase
import com.approagency.drug.domain.usecase.GetDarmanUseCase import com.approagency.pharmacy.domain.usecase.GetDrugDetailUseCase
import com.approagency.drug.domain.usecase.GetDrugDetailUseCase import com.approagency.pharmacy.domain.usecase.GetDrugSearchUseCase
import com.approagency.drug.domain.usecase.GetDrugSearchUseCase
import com.approagency.drug.presentation.screens.HomeScreen
import com.approagency.drug.utils.retryWithBackoff
import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@@ -1,15 +1,13 @@
package com.approagency.drug.presentation.viewModel package com.approagency.pharmacy.presentation.viewModel
import android.net.http.HttpException import android.net.http.HttpException
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.approagency.drug.data.dto.DrugListResponse import com.approagency.pharmacy.domain.model.TestGroup
import com.approagency.drug.data.dto.DrugModels import com.approagency.pharmacy.domain.model.TestItem
import com.approagency.drug.domain.model.TestGroup import com.approagency.pharmacy.domain.usecase.GetTestGroupUseCase
import com.approagency.drug.domain.model.TestItem import com.approagency.pharmacy.domain.usecase.GetTestItemByGroupId
import com.approagency.drug.domain.usecase.GetTestGroupUseCase import com.approagency.pharmacy.domain.usecase.SearchTestsUseCase
import com.approagency.drug.domain.usecase.GetTestItemByGroupId
import com.approagency.drug.domain.usecase.SearchTestsUseCase
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@@ -1,12 +1,12 @@
package com.approagency.drug.presentation.viewModel package com.approagency.pharmacy.presentation.viewModel
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.approagency.drug.domain.model.PharmacyDetail import com.approagency.pharmacy.domain.model.PharmacyDetail
import com.approagency.drug.domain.model.PharmacyItem import com.approagency.pharmacy.domain.model.PharmacyItem
import com.approagency.drug.domain.usecase.GetPharmaciesUseCase import com.approagency.pharmacy.domain.usecase.GetPharmaciesUseCase
import com.approagency.drug.domain.usecase.GetPharmacyDetailUseCase import com.approagency.pharmacy.domain.usecase.GetPharmacyDetailUseCase
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
@@ -5,9 +5,8 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.approagency.drug.domain.model.DrugSearchResult import com.approagency.pharmacy.domain.model.DrugSearchResult
import com.approagency.drug.domain.usecase.SearchDrugsYabUseCase import com.approagency.pharmacy.domain.usecase.SearchDrugsYabUseCase
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
@@ -1,4 +1,4 @@
package com.approagency.drug.ui.theme package com.approagency.pharmacy.ui.theme
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
@@ -1,10 +1,8 @@
package com.approagency.drug.ui.theme package com.approagency.pharmacy.ui.theme
import android.app.Activity
import android.os.Build import android.os.Build
import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Shapes
import androidx.compose.material3.darkColorScheme import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.dynamicDarkColorScheme import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.material3.dynamicLightColorScheme import androidx.compose.material3.dynamicLightColorScheme
@@ -1,7 +1,5 @@
package com.approagency.drug.ui.theme package com.approagency.pharmacy.ui.theme
import android.content.res.Resources import com.approagency.pharmacy.R
import androidx.compose.material3.MaterialTheme
import com.approagency.drug.R
import androidx.compose.material3.Typography import androidx.compose.material3.Typography
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.Font
@@ -1,4 +1,4 @@
package com.approagency.drug.utils package com.approagency.pharmacy.utils
object Config { object Config {
const val BASE_URL = "https://drug.approagency.ir/api/" const val BASE_URL = "https://drug.approagency.ir/api/"
@@ -1,4 +1,4 @@
package com.approagency.drug.utils package com.approagency.pharmacy.utils
val provinces = listOf( val provinces = listOf(
@@ -1,4 +1,4 @@
package com.approagency.drug.utils package com.approagency.pharmacy.utils
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
+1 -1
View File
@@ -1,3 +1,3 @@
<resources> <resources>
<string name="app_name">drug</string> <string name="app_name">داروخانه همراه</string>
</resources> </resources>
@@ -1,4 +1,4 @@
package com.approagency.drug package com.approagency.pharmacy
import org.junit.Test import org.junit.Test