Skip to content

Commit

Permalink
pr 수정사항 리팩토링
Browse files Browse the repository at this point in the history
  • Loading branch information
yeseoRyu committed Jan 13, 2025
1 parent ea48b3d commit 686c70d
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 63 deletions.
23 changes: 10 additions & 13 deletions app/src/main/java/com/flab/deepsleep/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.flab.deepsleep

import PhotoAdapter
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
Expand All @@ -14,32 +15,25 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.flab.deepsleep.data.entity.photos.SinglePhoto
import com.flab.deepsleep.databinding.ActivityMainBinding
import com.flab.deepsleep.ui.photo.PhotoViewModel
import com.flab.deepsleep.utils.RecyclerItemClickListener
import com.flab.deepsleep.ui.photo.onItemClick
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import timber.log.Timber

@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
class MainActivity : AppCompatActivity(), onItemClick {
private val photoViewModel: PhotoViewModel by viewModels()
private val binding: ActivityMainBinding by lazy { ActivityMainBinding.inflate(layoutInflater) }
private val photoRecyclerView: RecyclerView by lazy { binding.photosRecyclerView }
private val photoAdapter: PhotoAdapter by lazy { PhotoAdapter() }
private val photoAdapter: PhotoAdapter by lazy { PhotoAdapter(this) }

private fun setRecyclerView() {
photoRecyclerView.layoutManager = GridLayoutManager(this, 2)
photoRecyclerView.adapter = photoAdapter
photoRecyclerView.addOnItemTouchListener(
RecyclerItemClickListener(this, photoRecyclerView) { _, position ->
val photo = photoAdapter.snapshot()[position]
photo?.let {
photoViewModel.insertPhoto(photo)
Toast.makeText(this, "즐겨찾기 추가", Toast.LENGTH_SHORT).show()
}
}
)
}

override fun onCreate(savedInstanceState: Bundle?) {
Expand All @@ -61,7 +55,6 @@ class MainActivity : AppCompatActivity() {
photoViewModel.searchPhotos(text.toString())
}


/* 에러 관찰 */
photoViewModel.errorMessage.observe(this, Observer { it ->
it?.let {
Expand All @@ -79,4 +72,8 @@ class MainActivity : AppCompatActivity() {
}
.show()
}

override fun onClick(singlePhoto: SinglePhoto, position: Int) {
Timber.d("" + singlePhoto)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ interface PhotoDao {
fun getAll(): Flow<List<Photo>>

@Insert(onConflict = OnConflictStrategy.IGNORE)
fun insert(vararg like: Photo)
suspend fun insert(vararg like: Photo)

@Delete
suspend fun delete(like: Photo)
Expand Down
13 changes: 7 additions & 6 deletions app/src/main/java/com/flab/deepsleep/ui/photo/PhotoAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import com.bumptech.glide.Glide
import com.flab.deepsleep.R
import com.flab.deepsleep.data.entity.photos.SinglePhoto
import com.flab.deepsleep.databinding.ItemPhotoBinding
import timber.log.Timber
import com.flab.deepsleep.ui.photo.onItemClick

class PhotoAdapter :
class PhotoAdapter(private val itemClick: onItemClick) :
PagingDataAdapter<SinglePhoto, PhotoAdapter.ImageViewHolder>(ARTICLE_DIFF_CALLBACK) {

inner class ImageViewHolder(
Expand All @@ -22,10 +22,6 @@ class PhotoAdapter :
fun bind(photo: SinglePhoto) {
itemView.tag = photo

/* Like Button */
btHeart.setOnClickListener {
itemView.performClick()
}
val imageUrl = photo?.urls?.raw
if (imageUrl != null) {
Glide.with(imageView.context)
Expand All @@ -47,6 +43,11 @@ class PhotoAdapter :
val photo = getItem(position)
photo?.let {
holder.bind(photo)

/* Like Button */
holder.btHeart.setOnClickListener {
itemClick.onClick(photo, position)
}
}
}

Expand Down
16 changes: 6 additions & 10 deletions app/src/main/java/com/flab/deepsleep/ui/photo/PhotoViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -70,17 +70,13 @@ class PhotoViewModel @Inject constructor(

suspend fun getSearchPhotos(query: String): List<SinglePhoto>? {
return try {
val searchPhotos = unplashRepository.getSearchPhotos(query)
val resultsList = searchPhotos.results?.filter { it?.description != null }
resultsList?.mapNotNull { result ->
result?.id?.let { photoId ->
try {
unplashRepository.getSinglePhotoById(photoId)
} catch (e: Exception) {
null
unplashRepository.getSearchPhotos(query)
.results
?.mapNotNull { result ->
result?.takeIf { it.description != null }?.id?.let { photoId ->
runCatching { unplashRepository.getSinglePhotoById(photoId) }.getOrNull()
}
}
}
} ?: emptyList()
} catch (e: Exception) {
e.printStackTrace()
emptyList()
Expand Down
7 changes: 7 additions & 0 deletions app/src/main/java/com/flab/deepsleep/ui/photo/onItemClick.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.flab.deepsleep.ui.photo

import com.flab.deepsleep.data.entity.photos.SinglePhoto

interface onItemClick {
fun onClick(singlePhoto: SinglePhoto, position: Int)
}

This file was deleted.

0 comments on commit 686c70d

Please sign in to comment.