Skip to content

Commit

Permalink
Add: 밥 주기, 간식 주기 연동
Browse files Browse the repository at this point in the history
  • Loading branch information
bbaktaeho committed Feb 26, 2021
1 parent f33d3e2 commit 14628f3
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,31 @@ import androidx.lifecycle.Observer
import com.bumptech.glide.Glide
import com.example.noogabab.R
import com.example.noogabab.data.api.model.ResultData
import com.example.noogabab.data.api.request.FeedRequest
import com.example.noogabab.presentation.dialog.AlertDialog
import com.example.noogabab.presentation.ui.main.MainActivity
import com.example.noogabab.presentation.ui.main.MainViewModel
import com.example.noogabab.presentation.ui.main.timeline.TimelineActivity
import com.example.noogabab.util.SharedDog
import com.example.noogabab.util.SharedGroup
import com.example.noogabab.util.SharedProfile
import com.example.noogabab.util.SharedUser
import kotlinx.android.synthetic.main.fragment_home.*

class HomeFragment : Fragment(R.layout.fragment_home), View.OnClickListener {
private val homeViewModel: HomeViewModel by activityViewModels<HomeViewModel>()
private lateinit var sharedDog: SharedPreferences
private lateinit var sharedProfile: SharedPreferences
private lateinit var sharedGroup: SharedPreferences
private lateinit var sharedUser: SharedPreferences

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
sharedDog = requireActivity().getSharedPreferences(SharedDog.NAME, Context.MODE_PRIVATE)
sharedProfile = requireActivity().getSharedPreferences(SharedProfile.NAME, Context.MODE_PRIVATE)
sharedProfile =
requireActivity().getSharedPreferences(SharedProfile.NAME, Context.MODE_PRIVATE)
sharedGroup = requireActivity().getSharedPreferences(SharedGroup.NAME, Context.MODE_PRIVATE)
sharedUser = requireActivity().getSharedPreferences(SharedUser.NAME, Context.MODE_PRIVATE)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
Expand Down Expand Up @@ -63,18 +71,22 @@ class HomeFragment : Fragment(R.layout.fragment_home), View.OnClickListener {
}

private fun observe() {
getLatest()
homeViewModel.currentMealLatest.observe(requireActivity(), Observer {
txt_status_time.text = it
})
}

private fun getLatest() {
val dogId = sharedDog.getInt(SharedDog.DOG_ID_KEY, -1)
if (dogId == -1) return
homeViewModel.getMealLatest(dogId).observe(requireActivity(), Observer { resultData ->
when(resultData) {
when (resultData) {
is ResultData.Loading -> homeViewModel.updateMealLatest("로딩 중")
is ResultData.Success -> homeViewModel.updateMealLatest(resultData.data!!.content!!)
else -> homeViewModel.updateMealLatest("로딩 중")
}
})
homeViewModel.currentMealLatest.observe(requireActivity(), Observer {
txt_status_time.text = it
})
}

private fun clickTimeline() {
Expand All @@ -88,14 +100,58 @@ class HomeFragment : Fragment(R.layout.fragment_home), View.OnClickListener {

private fun clickFeedBob() {
AlertDialog().defaultAlert(
requireContext(), "밥을 먹일까요?", "선택한 식사는 취소가 불가능합니다.", "확인", "취소", {
}, {
})
requireContext(),
"밥을 먹일까요?",
"선택한 식사는 취소가 불가능합니다.",
"확인",
"취소", {
homeViewModel.feedMeal(
sharedGroup.getString(SharedGroup.GROUP_UUID_KEY, "")!!,
sharedDog.getInt(SharedDog.DOG_ID_KEY, -1),
FeedRequest(sharedUser.getInt(SharedUser.USER_ID_KEY, -1))
).observe(requireActivity(), Observer { resultData ->
when (resultData) {
is ResultData.Loading -> {
}
is ResultData.Success -> {
Toast.makeText(requireContext(), "밥 주기 완료!", Toast.LENGTH_SHORT).show()
getLatest()
}
else -> {
Toast.makeText(
requireContext(),
getString(R.string.toast_server_exception),
Toast.LENGTH_SHORT
).show()
}
}
})
}, {})
}

private fun clickFeedSnack() {
AlertDialog().defaultAlert(
requireContext(), "간식을 먹일까요?", "선택한 식사는 취소가 불가능합니다.", "확인", "취소", {
homeViewModel.feedSnack(
sharedGroup.getString(SharedGroup.GROUP_UUID_KEY, "")!!,
sharedDog.getInt(SharedDog.DOG_ID_KEY, -1),
FeedRequest(sharedUser.getInt(SharedUser.USER_ID_KEY, -1))
).observe(requireActivity(), Observer { resultData ->
when (resultData) {
is ResultData.Loading -> {
}
is ResultData.Success -> {
Toast.makeText(requireContext(), "간식 주기 완료!", Toast.LENGTH_SHORT).show()
}
else -> {
Toast.makeText(
requireContext(),
getString(R.string.toast_server_exception),
Toast.LENGTH_SHORT
).show()
}
}
})
}, {
})
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.liveData
import com.example.noogabab.data.api.model.ResultData
import com.example.noogabab.data.api.request.FeedRequest
import com.example.noogabab.domain.usecase.DogUseCase

class HomeViewModel @ViewModelInject constructor(private val useCase: DogUseCase): ViewModel() {
Expand All @@ -24,6 +25,16 @@ class HomeViewModel @ViewModelInject constructor(private val useCase: DogUseCase
emit(useCase.getMealLatest(dogId))
}

fun feedMeal(key: String, dogId: Int, feed: FeedRequest) = liveData {
emit(ResultData.Loading())
emit(useCase.feedMeal(key, dogId, feed))
}

fun feedSnack(key: String, dogId: Int, feed: FeedRequest) = liveData {
emit(ResultData.Loading())
emit(useCase.feedSnack(key, dogId, feed))
}

fun updateMealLatest(input: String) {
_currentMealLatest.value = "최근 식사 $input"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ object NetworkConstants {
// dogs
const val URL_DOGS = "dogs"
const val URL_DOGS_DOG = "dogs/{dogId}"
const val URL_DOGS_MEAL = "dogs/{dogId}/meal"
const val URL_DOGS_MEAL = "dogs/{dogId}/meals"
const val URL_DOGS_MEAL_LATEST = "dogs/{dogId}/meal/latest"
const val URL_DOGS_SNACK = "dogs/{dogId}/snack"
const val URL_DOGS_SNACK = "dogs/{dogId}/snacks"
}

0 comments on commit 14628f3

Please sign in to comment.