Skip to content

Commit

Permalink
♻️ refactor observe fun
Browse files Browse the repository at this point in the history
  • Loading branch information
ii2001 committed Aug 2, 2024
1 parent 7a1edb9 commit 33a5598
Showing 1 changed file with 43 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.Observer
import net.pengcook.android.BuildConfig
import net.pengcook.android.data.datasource.makingrecipe.DefaultMakingRecipeRemoteDataSource
import net.pengcook.android.data.remote.api.MakingRecipeService
Expand Down Expand Up @@ -110,45 +109,56 @@ class RecipeMakingFragment : Fragment() {
) {
super.onViewCreated(view, savedInstanceState)
initBinding()
viewModel.uiEvent.observe(viewLifecycleOwner) { event ->
val newEvent = event.getContentIfNotHandled() ?: return@observe
when (newEvent) {
is MakingEvent.NavigateToMakingStep -> onNextClicked()
is MakingEvent.AddImage -> onAddImageClicked()
}
}
observeData()
}

// Observer to handle the pre-signed URL response
viewModel.imageUri.observe(
private fun observeData() {
observeUiEvent()
observeImageUri()
observeUploadSuccess()
observeUploadError()
}

private fun observeUploadError() {
viewModel.uploadError.observe(
viewLifecycleOwner,
Observer { uri ->
if (uri != null) {
uploadImageToS3(uri)
}
},
)
) { errorMessage ->
if (errorMessage != null) {
Toast.makeText(requireContext(), errorMessage, Toast.LENGTH_SHORT).show()
}
}
}

// Observer to handle the upload success
private fun observeUploadSuccess() {
viewModel.uploadSuccess.observe(
viewLifecycleOwner,
Observer { success ->
if (success == true) {
Toast.makeText(requireContext(), "이미지 업로드 성공!", Toast.LENGTH_SHORT).show()
} else if (success == false) {
Toast.makeText(requireContext(), "이미지 업로드 실패!", Toast.LENGTH_SHORT).show()
}
},
)
) { success ->
if (success == true) {
Toast.makeText(requireContext(), "이미지 업로드 성공!", Toast.LENGTH_SHORT).show()
} else if (success == false) {
Toast.makeText(requireContext(), "이미지 업로드 실패!", Toast.LENGTH_SHORT).show()
}
}
}

// Observer to handle upload error
viewModel.uploadError.observe(
private fun observeImageUri() {
viewModel.imageUri.observe(
viewLifecycleOwner,
Observer { errorMessage ->
if (errorMessage != null) {
Toast.makeText(requireContext(), errorMessage, Toast.LENGTH_SHORT).show()
}
},
)
) { uri ->
if (uri != null) {
uploadImageToS3(uri)
}
}
}

private fun observeUiEvent() {
viewModel.uiEvent.observe(viewLifecycleOwner) { event ->
val newEvent = event.getContentIfNotHandled() ?: return@observe
when (newEvent) {
is MakingEvent.NavigateToMakingStep -> onNextClicked()
is MakingEvent.AddImage -> onAddImageClicked()
}
}
}

private fun onAddImageClicked() {
Expand Down

0 comments on commit 33a5598

Please sign in to comment.