diff --git a/app/src/main/java/com/hako/friendlists/di/AppModules.kt b/app/src/main/java/com/hako/friendlists/di/AppModules.kt index 46b2320..98b3376 100644 --- a/app/src/main/java/com/hako/friendlists/di/AppModules.kt +++ b/app/src/main/java/com/hako/friendlists/di/AppModules.kt @@ -4,6 +4,7 @@ import androidx.room.Room import com.hako.base.domain.database.DatabaseClient import com.hako.base.domain.network.RemoteClient import com.hako.friendlists.BuildConfig +import com.squareup.picasso.Picasso import org.koin.dsl.module val appModules = module { @@ -15,4 +16,7 @@ val appModules = module { // Retrofit single { RemoteClient(BuildConfig.BASE_ENDPOINT) } + + // Picasso + single { Picasso.get() } } \ No newline at end of file diff --git a/base/build.gradle b/base/build.gradle index 88cc65c..440ca03 100644 --- a/base/build.gradle +++ b/base/build.gradle @@ -51,6 +51,7 @@ dependencies { api deps.okhttp_logging_interceptor api deps.timber api deps.lottie + api deps.picasso //Testing api deps.testing.junit api deps.testing.koin diff --git a/base/src/main/java/com/hako/base/domain/network/RemoteClient.kt b/base/src/main/java/com/hako/base/domain/network/RemoteClient.kt index e24863d..9d63819 100644 --- a/base/src/main/java/com/hako/base/domain/network/RemoteClient.kt +++ b/base/src/main/java/com/hako/base/domain/network/RemoteClient.kt @@ -7,6 +7,9 @@ import retrofit2.Retrofit import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory import retrofit2.converter.gson.GsonConverterFactory import timber.log.Timber +import java.util.concurrent.TimeUnit + +private const val TIMEOUT_IN_SECONDS = 60L class RemoteClient(endpoint: String) { private val logger = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger { @@ -17,6 +20,8 @@ class RemoteClient(endpoint: String) { private val client = OkHttpClient.Builder() .addInterceptor(logger) + .readTimeout(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS) + .connectTimeout(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS) .build() private val retrofit: Retrofit = Retrofit.Builder() diff --git a/base/versions.gradle b/base/versions.gradle index 050b956..f001542 100644 --- a/base/versions.gradle +++ b/base/versions.gradle @@ -20,6 +20,7 @@ versions.test = "1.2.0" versions.test_ext = "1.1.1" versions.espresso = "3.2.0" versions.lottie = "3.3.1" +versions.picasso = "2.71828" def deps = [:] @@ -77,5 +78,6 @@ deps.testing = testing deps.okhttp_logging_interceptor = "com.squareup.okhttp3:logging-interceptor:$versions.okhttp_logging_interceptor" deps.timber = "com.jakewharton.timber:timber:$versions.timber" deps.lottie = "com.airbnb.android:lottie:$versions.lottie" +deps.picasso = "com.squareup.picasso:picasso:$versions.picasso" ext.deps = deps diff --git a/photolist/src/main/java/com/hako/photolist/feature/PhotolistFragment.kt b/photolist/src/main/java/com/hako/photolist/feature/PhotolistFragment.kt index 68731c8..9c5625a 100644 --- a/photolist/src/main/java/com/hako/photolist/feature/PhotolistFragment.kt +++ b/photolist/src/main/java/com/hako/photolist/feature/PhotolistFragment.kt @@ -32,7 +32,7 @@ class PhotolistFragment : Fragment() { setRecycler() setObservers() // TODO: Get album by bundle - viewModel.fetchPhotos(2) + viewModel.fetchPhotos(1) } private fun setObservers() { diff --git a/photolist/src/main/java/com/hako/photolist/widget/PhotolistAdapter.kt b/photolist/src/main/java/com/hako/photolist/widget/PhotolistAdapter.kt index 38e87fc..66213ca 100644 --- a/photolist/src/main/java/com/hako/photolist/widget/PhotolistAdapter.kt +++ b/photolist/src/main/java/com/hako/photolist/widget/PhotolistAdapter.kt @@ -7,7 +7,10 @@ import androidx.recyclerview.widget.RecyclerView import com.hako.base.extensions.autoNotify import com.hako.photolist.R import com.hako.photolist.model.PhotoViewable +import com.squareup.picasso.Picasso import kotlinx.android.synthetic.main.item_photo_card.view.* +import org.koin.core.KoinComponent +import org.koin.core.inject import kotlin.properties.Delegates class PhotolistAdapter : RecyclerView.Adapter() { @@ -40,11 +43,19 @@ class PhotolistAdapter : RecyclerView.Adapter() { } class PhotoViewHolder(private val view: View) : - RecyclerView.ViewHolder(view) { + RecyclerView.ViewHolder(view), KoinComponent { + + private val picasso: Picasso by inject() + + init { + picasso.setIndicatorsEnabled(true) + } fun bind(photo: PhotoViewable) = with(view) { + picasso.load(photo.photoUrl) + .placeholder(R.drawable.img_photo_placeholder) + .fit() + .into(item_photo_card_photo) item_photo_card_title.text = photo.title - - // TODO load image } } \ No newline at end of file diff --git a/photolist/src/main/res/layout/item_photo_card.xml b/photolist/src/main/res/layout/item_photo_card.xml index 202fbf8..1b66e81 100644 --- a/photolist/src/main/res/layout/item_photo_card.xml +++ b/photolist/src/main/res/layout/item_photo_card.xml @@ -20,8 +20,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:srcCompat="@drawable/img_photo_placeholder" - android:contentDescription="Album photo" /> + android:contentDescription="@string/album_photo" /> photolist + Album photo