Skip to content

Commit

Permalink
Merge pull request #196 from pknu-wap/#194/refactor/jsp/clean_android…
Browse files Browse the repository at this point in the history
…_project

#194/refactor/jsp/clean android project
  • Loading branch information
pknujsp authored Jul 28, 2023
2 parents 7caf6d8 + 4e62597 commit bf3dbac
Show file tree
Hide file tree
Showing 351 changed files with 5,060 additions and 2,933 deletions.
7 changes: 3 additions & 4 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,12 @@ android {
checkDependencies = true
ignoreTestSources = true
}
hilt {
enableAggregatingTask = true
}

}

hilt {
enableAggregatingTask = true
}

dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))

Expand Down
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
android:allowBackup="true"
android:icon="@mipmap/ic_medilenz"
android:label="@string/app_name"
android:supportsRtl="false"
android:theme="@style/Theme.MediProject"
android:usesCleartextTraffic="true">
<activity
Expand Down
20 changes: 9 additions & 11 deletions app/src/main/java/com/android/mediproject/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,17 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.NavigationUiSaveStateControl
import androidx.navigation.ui.setupWithNavController
import com.android.mediproject.core.common.uiutil.LayoutController
import com.android.mediproject.core.common.uiutil.SystemBarColorAnalyzer
import com.android.mediproject.core.common.uiutil.SystemBarController
import com.android.mediproject.core.common.uiutil.SystemBarStyler
import com.android.mediproject.core.network.InternetNetworkListener
import com.android.mediproject.core.common.util.LayoutController
import com.android.mediproject.core.common.util.SystemBarColorAnalyzer
import com.android.mediproject.core.common.util.SystemBarController
import com.android.mediproject.core.common.util.SystemBarStyler
import com.android.mediproject.core.network.NetworkStatusManager
import com.android.mediproject.core.ui.WindowViewModel
import com.android.mediproject.core.ui.base.BaseActivity
import com.android.mediproject.databinding.ActivityMainBinding
import dagger.hilt.android.AndroidEntryPoint
import repeatOnStarted
import com.android.mediproject.core.common.viewmodel.repeatOnStarted
import javax.inject.Inject

@AndroidEntryPoint
Expand All @@ -34,20 +33,19 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>(ActivityMa

@Inject lateinit var layoutController: LayoutController
@Inject lateinit var systemBarController: SystemBarController
@Inject lateinit var internetNetworkListener: InternetNetworkListener
@Inject lateinit var networkStatusManager: NetworkStatusManager
@Inject lateinit var systemBarColorAnalyzer: SystemBarColorAnalyzer

override val activityViewModel: MainViewModel by viewModels()
private lateinit var navController: NavController


@OptIn(NavigationUiSaveStateControl::class)
override fun afterBinding() {
systemBarController.init(this, window, this)
systemBarColorAnalyzer.init(this, systemBarController, lifecycle)

internetNetworkListener.activityLifeCycle = lifecycle
internetNetworkListener.networkStateCallback = InternetNetworkListener.NetworkStateCallback { isConnected ->
networkStatusManager.activityLifeCycle = lifecycle
networkStatusManager.networkStateCallback = NetworkStatusManager.NetworkStateCallback { isConnected ->
if (!isConnected) {
NetworkStateDialogFragment().show(supportFragmentManager, NetworkStateDialogFragment::class.java.name)
}
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/com/android/mediproject/MainViewModel.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.android.mediproject

import MutableEventFlow
import com.android.mediproject.core.common.viewmodel.MutableEventFlow
import android.content.res.Resources
import androidx.annotation.ArrayRes
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.viewModelScope
import asEventFlow
import com.android.mediproject.core.common.viewmodel.asEventFlow
import com.android.mediproject.core.domain.sign.GetAccountStateUseCase
import com.android.mediproject.core.ui.base.BaseViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_gravity="bottom|end"
android:layout_marginEnd="30dp"
android:layout_marginBottom="130dp"
android:alpha="0.5"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ internal fun Project.configureAndroidCompose(
compose = true
}

defaultConfig {
minSdk = libs.findVersion("minSdk").get().toString().toInt()
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

composeOptions {
kotlinCompilerExtensionVersion = libs.findVersion("kotlinCompilerExtension").get().toString()
}
Expand Down Expand Up @@ -59,4 +64,4 @@ private fun Project.buildComposeMetricsParameters(): List<String> {
metricParameters.add("plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" + reportsFolder.absolutePath)
}
return metricParameters.toList()
}
}
6 changes: 3 additions & 3 deletions core/common/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ android {
buildConfigField("String", "AWS_BASE_URL", "\"${properties["awsUrl"]}\"")
buildConfigField("String", "VERTEX_ENDPOINT_URL", "\"${properties["vertexEndpointUrl"]}\"")
}
}

hilt {
enableAggregatingTask = true
hilt {
enableAggregatingTask = true
}
}

dependencies {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.android.mediproject.core.common.bindingadapter

import android.content.res.ColorStateList
import android.graphics.Bitmap
import android.text.Spanned
import android.view.View
Expand All @@ -27,15 +26,14 @@ object BindingAdapter {
textView.text = arr[type.ordinal]
}

@BindingAdapter("img")
@BindingAdapter(value = ["img", "caching"], requireAll = false)
@JvmStatic
fun loadImage(imageView: ImageView, img: String) {
fun loadImage(imageView: ImageView, img: String, caching: Boolean = true) {
if (img.isEmpty()) {
imageView.setBackgroundResource(R.drawable.baseline_hide_image_24)
imageView.imageTintList = ColorStateList.valueOf(android.graphics.Color.BLUE)
return
}
GlideApp.with(imageView.context).load(img).centerInside().skipMemoryCache(false).into(imageView)
GlideApp.with(imageView.context).load(img).centerInside().skipMemoryCache(caching).into(imageView)
}

@BindingAdapter("img")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.android.mediproject.core.common.di

import com.android.mediproject.core.common.uiutil.LayoutController
import com.android.mediproject.core.common.uiutil.SystemBarController
import com.android.mediproject.core.common.uiutil.SystemBarStyler
import com.android.mediproject.core.common.util.LayoutController
import com.android.mediproject.core.common.util.SystemBarController
import com.android.mediproject.core.common.util.SystemBarStyler
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import androidx.core.content.ContextCompat
import com.airbnb.lottie.LottieAnimationView
import com.airbnb.lottie.LottieDrawable.INFINITE
import com.android.mediproject.core.common.R
import com.android.mediproject.core.common.uiutil.dpToPx
import com.android.mediproject.core.common.util.dpToPx

class ProgressIndicator(context: Context, textMessage: String?) : ConstraintLayout(context) {

Expand All @@ -34,18 +34,24 @@ class ProgressIndicator(context: Context, textMessage: String?) : ConstraintLayo
init {
background = ContextCompat.getDrawable(context, R.drawable.progress_background)

addView(lottie, LayoutParams(LayoutParams.WRAP_CONTENT, dpToPx(context, 31)).apply {
topToTop = LayoutParams.PARENT_ID
startToStart = LayoutParams.PARENT_ID
endToEnd = LayoutParams.PARENT_ID
})
addView(textView, LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT).apply {
topToBottom = lottie.id
topMargin = dpToPx(context, 16)
startToStart = LayoutParams.PARENT_ID
endToEnd = LayoutParams.PARENT_ID
})
addView(
lottie,
LayoutParams(LayoutParams.WRAP_CONTENT, 31.dpToPx()).apply {
topToTop = LayoutParams.PARENT_ID
startToStart = LayoutParams.PARENT_ID
endToEnd = LayoutParams.PARENT_ID
},
)
addView(
textView,
LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT).apply {
topToBottom = lottie.id
topMargin = 16.dpToPx()
startToStart = LayoutParams.PARENT_ID
endToEnd = LayoutParams.PARENT_ID
},
)

lottie.playAnimation()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import android.text.style.UnderlineSpan
import androidx.core.content.ContextCompat
import androidx.core.text.toSpanned
import com.android.mediproject.core.common.R
import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetailInfo
import com.android.mediproject.core.model.remote.granule.GranuleIdentificationInfoDto
import com.android.mediproject.core.model.medicine.medicinedetailinfo.MedicineDetail
import com.android.mediproject.core.model.granule.GranuleIdentificationInfo
import com.android.mediproject.core.model.util.XMLParsedResult
import java.lang.ref.WeakReference
import javax.inject.Inject
Expand All @@ -36,9 +36,7 @@ class MedicineInfoMapper @Inject constructor() {
* 용법용량 정보 데이터를 UI에 맞게 변환
*/
fun toDosageInfo(xmlParsedResult: XMLParsedResult): Spanned {
val stringBuilder = WeakReference(StringBuilder())

return stringBuilder.get()?.let { builder ->
return WeakReference(StringBuilder()).get()?.let { builder ->
xmlParsedResult.articleList.forEach { article ->
builder.append("<b>${article.title}</b><br>")
article.contentList.forEach { content ->
Expand All @@ -49,7 +47,6 @@ class MedicineInfoMapper @Inject constructor() {

val result = Html.fromHtml(builder.toString(), Html.FROM_HTML_MODE_COMPACT)
builder.clear()
stringBuilder.clear()
result
} ?: "".toSpanned()
}
Expand All @@ -58,9 +55,7 @@ class MedicineInfoMapper @Inject constructor() {
* 효능효과 데이터를 UI에 맞게 변환
*/
fun toEfficacyEffect(xmlParsedResult: XMLParsedResult): Spanned {
val stringBuilder = WeakReference(StringBuilder())

return stringBuilder.get()?.let { builder ->
return WeakReference(StringBuilder()).get()?.let { builder ->
xmlParsedResult.articleList.forEach { article ->
article.contentList.forEach { content ->
builder.append("$content<br>")
Expand All @@ -70,37 +65,32 @@ class MedicineInfoMapper @Inject constructor() {

val result = Html.fromHtml(builder.toString(), Html.FROM_HTML_MODE_COMPACT)
builder.clear()
stringBuilder.clear()
result
} ?: "".toSpanned()
}

/**
* 의약품 기본 정보 데이터를 UI에 맞게 변환
*/
fun toMedicineInfo(medicineDetailInfo: MedicineDetailInfo): Spanned {
val stringBuilder = WeakReference(StringBuilder())

return stringBuilder.get()?.let { builder ->
with(medicineDetailInfo) {
fun toMedicineInfo(medicineDetail: MedicineDetail): Spanned {
return WeakReference(StringBuilder()).get()?.let { builder ->
with(medicineDetail) {
builder.append("<p><b>의약품 이름:</b> $itemName</p>").append("<p><b>의약품 영문 이름:</b> $itemEnglishName</p>")
.append("<p><b>의약품 시퀀스 번호:</b> $itemSequence</p>").append("<p><b>의약품 허가 날짜:</b> $itemPermitDate</p>")
.append("<p><b>제조사 이름:</b> $entpName</p>").append("<p><b>제조사 영문 이름:</b> $entpEnglishName</p>")
.append("<p><b>제조및수입사:</b> $consignmentManufacturer</p>").append("<p><b>성분 이름:</b> $ingredientName</p>")
.append("<p><b>주성분의 영문 이름:</b> $mainIngredientEnglish</p>").append("<p><b>총 함량:</b> $totalContent</p>")
.append("<p><b>저장 방법:</b> $storageMethod</p>").append("<p><b>유효 기간:</b> $validTerm</p>")
.append("<p><b>패키지 단위:</b> $packUnit</p>")
.append("<p><b>저장 방법:</b> $storageMethod</p>").append("<p><b>유효 기간:</b> $validTerm</p>").append("<p><b>패키지 단위:</b> $packUnit</p>")
}

val result = Html.fromHtml(builder.toString(), Html.FROM_HTML_MODE_COMPACT)
builder.clear()
stringBuilder.clear()
result
} ?: "".toSpanned()
}


suspend fun toGranuleInfo(context: Context, granuleDto: GranuleIdentificationInfoDto): Spanned =
suspend fun toGranuleInfo(context: Context, granuleDto: GranuleIdentificationInfo): Spanned =
mutableMapOf<String, List<Pair<String, String>>>().apply {
// 그룹 1: 의약품 정보
context.resources.getStringArray(R.array.medicineInfo).also {
Expand Down Expand Up @@ -173,18 +163,16 @@ class MedicineInfoMapper @Inject constructor() {
)
}
}.let { dataMap ->
val builder = WeakReference(StringBuilder())
val result = builder.get()?.let { builder ->
val result = WeakReference(StringBuilder()).get()?.run {
dataMap.forEach { (title, data) ->
builder.append("<p><b>$title</b></p>")
append("<p><b>$title</b></p>")
data.forEach { (key, value) ->
builder.append("<p><b>$key:</b> $value</p>")
append("<p><b>$key:</b> $value</p>")
}
}
Html.fromHtml(builder.toString(), Html.FROM_HTML_MODE_COMPACT).toSpanned()
Html.fromHtml(toString(), Html.FROM_HTML_MODE_COMPACT).toSpanned()
} ?: "".toSpanned()

builder.clear()
dataMap.clear()
result
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import kotlinx.coroutines.Dispatchers
object DispatchersModule {
@Provides
@Dispatcher(MediDispatchers.IO)
fun providesIODispatcher(): CoroutineDispatcher = Dispatchers.IO
fun providesIoDispatcher(): CoroutineDispatcher = Dispatchers.IO

@Provides
@Dispatcher(MediDispatchers.Default)
Expand All @@ -23,4 +23,4 @@ object DispatchersModule {
@Provides
@Dispatcher(MediDispatchers.Main)
fun providesMainDispatcher(): CoroutineDispatcher = Dispatchers.Main
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ fun PagingDataAdapter<*, *>.setOnStateChangedListener(
msgTextView: TextView,
listView: RecyclerView,
progressBar: CircularProgressIndicator,
emptyMsg: String
emptyMsg: String,
) {
var isFirstLoad = true
var isFirstLoad: Boolean
addLoadStateListener { loadState ->
isFirstLoad = loadState.refresh is LoadState.Loading
if (isFirstLoad) listView.scrollToPosition(0)
Expand All @@ -30,7 +30,6 @@ fun PagingDataAdapter<*, *>.setOnStateChangedListener(

progressBar.isVisible = isFirstLoad
listView.isVisible = (!isFirstLoad && (loadState.source.refresh !is LoadState.Loading))
msgTextView.isVisible =
((!isFirstLoad && loadState.source.refresh !is LoadState.Loading) && itemCount == 0)
msgTextView.isVisible = ((!isFirstLoad && loadState.source.refresh !is LoadState.Loading) && itemCount == 0)
}
}
}
Loading

0 comments on commit bf3dbac

Please sign in to comment.