mirror of
https://github.com/imcarlost/Friendlists.git
synced 2026-04-10 02:46:54 -04:00
implemente picasso and implement images
This commit is contained in:
@@ -4,6 +4,7 @@ import androidx.room.Room
|
|||||||
import com.hako.base.domain.database.DatabaseClient
|
import com.hako.base.domain.database.DatabaseClient
|
||||||
import com.hako.base.domain.network.RemoteClient
|
import com.hako.base.domain.network.RemoteClient
|
||||||
import com.hako.friendlists.BuildConfig
|
import com.hako.friendlists.BuildConfig
|
||||||
|
import com.squareup.picasso.Picasso
|
||||||
import org.koin.dsl.module
|
import org.koin.dsl.module
|
||||||
|
|
||||||
val appModules = module {
|
val appModules = module {
|
||||||
@@ -15,4 +16,7 @@ val appModules = module {
|
|||||||
|
|
||||||
// Retrofit
|
// Retrofit
|
||||||
single { RemoteClient(BuildConfig.BASE_ENDPOINT) }
|
single { RemoteClient(BuildConfig.BASE_ENDPOINT) }
|
||||||
|
|
||||||
|
// Picasso
|
||||||
|
single { Picasso.get() }
|
||||||
}
|
}
|
||||||
@@ -51,6 +51,7 @@ dependencies {
|
|||||||
api deps.okhttp_logging_interceptor
|
api deps.okhttp_logging_interceptor
|
||||||
api deps.timber
|
api deps.timber
|
||||||
api deps.lottie
|
api deps.lottie
|
||||||
|
api deps.picasso
|
||||||
//Testing
|
//Testing
|
||||||
api deps.testing.junit
|
api deps.testing.junit
|
||||||
api deps.testing.koin
|
api deps.testing.koin
|
||||||
|
|||||||
@@ -7,6 +7,9 @@ import retrofit2.Retrofit
|
|||||||
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
|
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
|
||||||
import retrofit2.converter.gson.GsonConverterFactory
|
import retrofit2.converter.gson.GsonConverterFactory
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
|
private const val TIMEOUT_IN_SECONDS = 60L
|
||||||
|
|
||||||
class RemoteClient(endpoint: String) {
|
class RemoteClient(endpoint: String) {
|
||||||
private val logger = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
|
private val logger = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
|
||||||
@@ -17,6 +20,8 @@ class RemoteClient(endpoint: String) {
|
|||||||
|
|
||||||
private val client = OkHttpClient.Builder()
|
private val client = OkHttpClient.Builder()
|
||||||
.addInterceptor(logger)
|
.addInterceptor(logger)
|
||||||
|
.readTimeout(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS)
|
||||||
|
.connectTimeout(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
private val retrofit: Retrofit = Retrofit.Builder()
|
private val retrofit: Retrofit = Retrofit.Builder()
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ versions.test = "1.2.0"
|
|||||||
versions.test_ext = "1.1.1"
|
versions.test_ext = "1.1.1"
|
||||||
versions.espresso = "3.2.0"
|
versions.espresso = "3.2.0"
|
||||||
versions.lottie = "3.3.1"
|
versions.lottie = "3.3.1"
|
||||||
|
versions.picasso = "2.71828"
|
||||||
|
|
||||||
def deps = [:]
|
def deps = [:]
|
||||||
|
|
||||||
@@ -77,5 +78,6 @@ deps.testing = testing
|
|||||||
deps.okhttp_logging_interceptor = "com.squareup.okhttp3:logging-interceptor:$versions.okhttp_logging_interceptor"
|
deps.okhttp_logging_interceptor = "com.squareup.okhttp3:logging-interceptor:$versions.okhttp_logging_interceptor"
|
||||||
deps.timber = "com.jakewharton.timber:timber:$versions.timber"
|
deps.timber = "com.jakewharton.timber:timber:$versions.timber"
|
||||||
deps.lottie = "com.airbnb.android:lottie:$versions.lottie"
|
deps.lottie = "com.airbnb.android:lottie:$versions.lottie"
|
||||||
|
deps.picasso = "com.squareup.picasso:picasso:$versions.picasso"
|
||||||
|
|
||||||
ext.deps = deps
|
ext.deps = deps
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class PhotolistFragment : Fragment() {
|
|||||||
setRecycler()
|
setRecycler()
|
||||||
setObservers()
|
setObservers()
|
||||||
// TODO: Get album by bundle
|
// TODO: Get album by bundle
|
||||||
viewModel.fetchPhotos(2)
|
viewModel.fetchPhotos(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setObservers() {
|
private fun setObservers() {
|
||||||
|
|||||||
@@ -7,7 +7,10 @@ import androidx.recyclerview.widget.RecyclerView
|
|||||||
import com.hako.base.extensions.autoNotify
|
import com.hako.base.extensions.autoNotify
|
||||||
import com.hako.photolist.R
|
import com.hako.photolist.R
|
||||||
import com.hako.photolist.model.PhotoViewable
|
import com.hako.photolist.model.PhotoViewable
|
||||||
|
import com.squareup.picasso.Picasso
|
||||||
import kotlinx.android.synthetic.main.item_photo_card.view.*
|
import kotlinx.android.synthetic.main.item_photo_card.view.*
|
||||||
|
import org.koin.core.KoinComponent
|
||||||
|
import org.koin.core.inject
|
||||||
import kotlin.properties.Delegates
|
import kotlin.properties.Delegates
|
||||||
|
|
||||||
class PhotolistAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
class PhotolistAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||||
@@ -40,11 +43,19 @@ class PhotolistAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class PhotoViewHolder(private val view: View) :
|
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) {
|
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
|
item_photo_card_title.text = photo.title
|
||||||
|
|
||||||
// TODO load image
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -20,8 +20,7 @@
|
|||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:srcCompat="@drawable/img_photo_placeholder"
|
android:contentDescription="@string/album_photo" />
|
||||||
android:contentDescription="Album photo" />
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/item_photo_card_footer_container"
|
android:id="@+id/item_photo_card_footer_container"
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">photolist</string>
|
<string name="app_name">photolist</string>
|
||||||
|
<string name="album_photo">Album photo</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user