Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ android {

}

kapt {
generateStubs = true
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ class GetAllFoodsUseCase @Inject constructor(
errorUtil: CloudErrorMapper,
private val appRepository: AppRepository
) : UseCase<MutableList<Food>>(errorUtil) {

override suspend fun executeOnBackground(): MutableList<Food> {
return appRepository.selectAllFoods()
}

}
33 changes: 21 additions & 12 deletions app/src/main/java/com/architecture/clean/ui/home/HomeFragment.kt
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.architecture.clean.ui.home

import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelProviders
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelProviders
import androidx.recyclerview.widget.RecyclerView
import com.architecture.clean.R
import com.architecture.clean.domain.model.FoodDto
Expand All @@ -18,45 +18,54 @@ import javax.inject.Inject
import android.util.Pair as UtilPair


class HomeFragment: DaggerFragment() {
private val TAG: String = HomeFragment::class.java.simpleName
class HomeFragment : DaggerFragment() {

companion object {
val FRAGMENT_NAME: String = HomeFragment::class.java.name
}

@Inject
lateinit var viewModelFactory: ViewModelProvider.Factory
private val viewModel: HomeViewModel by lazy { ViewModelProviders.of(this,viewModelFactory).get(HomeViewModel::class.java) }
val adapter : HomeAdapter by lazy { HomeAdapter(arrayListOf()) }
private val TAG: String = HomeFragment::class.java.simpleName
private val viewModel: HomeViewModel by lazy {
ViewModelProviders.of(this, viewModelFactory).get(HomeViewModel::class.java)
}
val adapter: HomeAdapter by lazy { HomeAdapter(arrayListOf()) }


override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_home, container, false)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

with(viewModel) {
homeData.observe(this@HomeFragment, Observer {
initView(it)
}
)
error.observe(this@HomeFragment, Observer {
progressBar_home.visibility= View.GONE
progressBar_home.visibility = View.GONE
Toast.makeText(context, "${it?.message}", Toast.LENGTH_LONG).show()
})

foodsCount.observe(this@HomeFragment, Observer {
Toast.makeText(context,"you have $it foods in your dataBase !!",Toast.LENGTH_LONG).show()
Toast.makeText(context, "you have $it foods in your dataBase !!", Toast.LENGTH_LONG).show()
})
}
}

private fun initView(it: FoodDto?) {
rv_main_home.layoutManager = androidx.recyclerview.widget.LinearLayoutManager(context, RecyclerView.VERTICAL, false)
rv_main_home.layoutManager =
androidx.recyclerview.widget.LinearLayoutManager(context, RecyclerView.VERTICAL, false)
rv_main_home.adapter = adapter
progressBar_home.visibility=View.GONE
progressBar_home.visibility = View.GONE
if (it!!.results.isNotEmpty()) {
adapter.clear()
adapter.add(it.results)

}else{
} else {
Toast.makeText(context, context?.getString(R.string.empty_list), android.widget.Toast.LENGTH_LONG).show()
}
}
Expand Down
34 changes: 19 additions & 15 deletions app/src/main/java/com/architecture/clean/ui/home/HomeViewModel.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.architecture.clean.ui.home

import androidx.lifecycle.MutableLiveData
import android.util.Log
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.architecture.clean.domain.model.FoodDto
import com.architecture.clean.domain.model.response.ErrorModel
Expand All @@ -11,28 +11,32 @@ import com.architecture.clean.domain.usecase.GetHomeUseCase
import com.architecture.clean.domain.usecase.InsertFoodsUseCase
import javax.inject.Inject

class HomeViewModel @Inject constructor(private val getHomeUseCase: GetHomeUseCase,
private val insertFoodsUseCase: InsertFoodsUseCase,
private val getAllFoodsUseCase: GetAllFoodsUseCase
class HomeViewModel @Inject constructor(
private val getHomeUseCase: GetHomeUseCase,
private val insertFoodsUseCase: InsertFoodsUseCase,
private val getAllFoodsUseCase: GetAllFoodsUseCase
) : ViewModel() {

private val TAG = HomeViewModel::class.java.simpleName

val homeData: MutableLiveData<FoodDto> by lazy { MutableLiveData<FoodDto>() }
val error : MutableLiveData<ErrorModel> by lazy { MutableLiveData<ErrorModel>() }
val foodsCount : MutableLiveData<Int> by lazy { MutableLiveData<Int>() }
val error: MutableLiveData<ErrorModel> by lazy { MutableLiveData<ErrorModel>() }
val foodsCount: MutableLiveData<Int> by lazy { MutableLiveData<Int>() }

init {

getHomeUseCase.execute{
getHomeUseCase.execute {
onComplete {
Log.d(TAG, it.toString())
homeData.value = it
insert(it)
}

onError { throwable ->
if(throwable.errorStatus== ErrorStatus.UNAUTHORIZED){
if (throwable.errorStatus == ErrorStatus.UNAUTHORIZED) {
doReshresh()
}else{
error.value=throwable
} else {
error.value = throwable
}

}
Expand All @@ -48,16 +52,16 @@ class HomeViewModel @Inject constructor(private val getHomeUseCase: GetHomeUseCa
}


fun insert(foodDto: FoodDto){
insertFoodsUseCase.foodDto=foodDto
fun insert(foodDto: FoodDto) {
insertFoodsUseCase.foodDto = foodDto
insertFoodsUseCase.execute {

onComplete {
returnFoodsInDb()
}

onError { throwable ->
error.value=throwable
error.value = throwable
}

onCancel {
Expand All @@ -69,10 +73,10 @@ class HomeViewModel @Inject constructor(private val getHomeUseCase: GetHomeUseCa
private fun returnFoodsInDb() {
getAllFoodsUseCase.execute {
onComplete {
foodsCount.value=it.size
foodsCount.value = it.size
}
onError {
error.value=it
error.value = it
}
}
}
Expand Down