Skip to content

Commit

Permalink
ref: create viewmodel for ProductEditOverviewFragment.kt
Browse files Browse the repository at this point in the history
build(deps): import kotlin coroutines
  • Loading branch information
VaiTon committed May 17, 2021
1 parent a479749 commit 38117d2
Show file tree
Hide file tree
Showing 5 changed files with 258 additions and 206 deletions.
8 changes: 8 additions & 0 deletions app/build.gradle.kts
Expand Up @@ -35,13 +35,20 @@ fun obtainTestBuildType(): String {
dependencies {
// Kotlin
implementation("org.jetbrains.kotlin:kotlin-stdlib:${rootProject.extra["kotlinVersion"]}")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0-RC")


// Android KTX
implementation("androidx.fragment:fragment-ktx:1.3.3")
implementation("androidx.activity:activity-ktx:1.2.3")
implementation("androidx.preference:preference-ktx:1.1.1")
implementation("androidx.core:core-ktx:1.6.0-alpha03")

val viewModelKtxVer = "2.3.1"
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$viewModelKtxVer")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$viewModelKtxVer")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:$viewModelKtxVer")


// AndroidX
implementation("androidx.appcompat:appcompat:1.2.0")
Expand All @@ -56,6 +63,7 @@ dependencies {
implementation("androidx.viewpager2:viewpager2:1.0.0")
implementation("androidx.legacy:legacy-support-v4:1.0.0")


val workVersion = "2.5.0"
implementation("androidx.work:work-runtime:$workVersion")
implementation("androidx.work:work-rxjava2:$workVersion")
Expand Down
Expand Up @@ -46,6 +46,7 @@ import openfoodfacts.github.scrachx.openfood.analytics.AnalyticsEvent
import openfoodfacts.github.scrachx.openfood.analytics.MatomoAnalytics
import openfoodfacts.github.scrachx.openfood.databinding.ActivityEditProductBinding
import openfoodfacts.github.scrachx.openfood.features.product.ProductFragmentPagerAdapter
import openfoodfacts.github.scrachx.openfood.features.product.edit.overview.ProductEditOverviewFragment
import openfoodfacts.github.scrachx.openfood.features.shared.BaseActivity
import openfoodfacts.github.scrachx.openfood.images.IMG_ID
import openfoodfacts.github.scrachx.openfood.images.ProductImage
Expand Down
@@ -0,0 +1,66 @@
package openfoodfacts.github.scrachx.openfood.features.product.edit.overview

import androidx.lifecycle.ViewModel
import androidx.lifecycle.liveData
import dagger.hilt.android.lifecycle.HiltViewModel
import openfoodfacts.github.scrachx.openfood.models.DaoSession
import openfoodfacts.github.scrachx.openfood.models.entities.brand.BrandNameDao
import openfoodfacts.github.scrachx.openfood.models.entities.category.CategoryNameDao
import openfoodfacts.github.scrachx.openfood.models.entities.country.CountryNameDao
import openfoodfacts.github.scrachx.openfood.models.entities.label.LabelNameDao
import openfoodfacts.github.scrachx.openfood.models.entities.store.StoreNameDao
import openfoodfacts.github.scrachx.openfood.utils.LocaleManager
import javax.inject.Inject

@HiltViewModel
class OverviewViewModel @Inject constructor(
private val daoSession: DaoSession,
private val localeManager: LocaleManager
) : ViewModel() {
private val appLang by lazy { localeManager.getLanguage() }

internal val suggestCategories = liveData {
daoSession.categoryNameDao.queryBuilder()
.where(CategoryNameDao.Properties.LanguageCode.eq(appLang))
.orderDesc(CategoryNameDao.Properties.Name).list()
.mapNotNull { it.name }
.let { emit(it) }
}


internal val suggestCountries = liveData {
daoSession.countryNameDao.queryBuilder()
.where(CountryNameDao.Properties.LanguageCode.eq(appLang))
.orderDesc(CountryNameDao.Properties.Name).list()
.mapNotNull { it.name }
.let { emit(it) }
}

internal val suggestLabels = liveData {
daoSession.labelNameDao.queryBuilder()
.where(LabelNameDao.Properties.LanguageCode.eq(appLang))
.orderDesc(LabelNameDao.Properties.Name).list()
.mapNotNull { it.name }
.let { emit(it) }

}

internal val suggestStores = liveData {
daoSession.storeNameDao.queryBuilder()
.where(StoreNameDao.Properties.LanguageCode.eq(appLang))
.orderDesc(StoreNameDao.Properties.Name).list()
.mapNotNull { it.name }
.let { emit(it) }

}


internal val suggestBrands = liveData {
daoSession.brandNameDao.queryBuilder()
.where(BrandNameDao.Properties.LanguageCode.eq(appLang))
.orderDesc(BrandNameDao.Properties.Name).list()
.mapNotNull { it.name }
.let { emit(it) }
}

}

0 comments on commit 38117d2

Please sign in to comment.