diff --git a/albumlist/.gitignore b/albumlist/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/albumlist/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/albumlist/build.gradle b/albumlist/build.gradle
new file mode 100644
index 0000000..d51b157
--- /dev/null
+++ b/albumlist/build.gradle
@@ -0,0 +1,6 @@
+apply plugin: 'com.android.library'
+apply from: '../core.gradle'
+
+dependencies {
+ implementation project(':base')
+}
\ No newline at end of file
diff --git a/albumlist/consumer-rules.pro b/albumlist/consumer-rules.pro
new file mode 100644
index 0000000..e69de29
diff --git a/albumlist/proguard-rules.pro b/albumlist/proguard-rules.pro
new file mode 100644
index 0000000..f1b4245
--- /dev/null
+++ b/albumlist/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/albumlist/src/main/AndroidManifest.xml b/albumlist/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..2d613d8
--- /dev/null
+++ b/albumlist/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
diff --git a/albumlist/src/main/java/com/hako/albumlist/di/AlbumlistModules.kt b/albumlist/src/main/java/com/hako/albumlist/di/AlbumlistModules.kt
new file mode 100644
index 0000000..a578b68
--- /dev/null
+++ b/albumlist/src/main/java/com/hako/albumlist/di/AlbumlistModules.kt
@@ -0,0 +1,15 @@
+package com.hako.albumlist.di
+
+import com.hako.albumlist.domain.datasource.AlbumlistRemoteApi
+import com.hako.albumlist.domain.usecase.GetAlbum
+import com.hako.albumlist.viewmodel.AlbumlistViewmodel
+import com.hako.base.domain.network.RemoteClient
+import org.koin.androidx.viewmodel.dsl.viewModel
+import org.koin.dsl.module
+
+val albumListModules = module {
+ factory { get().getClient(AlbumlistRemoteApi::class.java) }
+ factory { GetAlbum(get()) }
+
+ viewModel { AlbumlistViewmodel() }
+}
\ No newline at end of file
diff --git a/albumlist/src/main/java/com/hako/albumlist/domain/datasource/AlbumlistRemoteApi.kt b/albumlist/src/main/java/com/hako/albumlist/domain/datasource/AlbumlistRemoteApi.kt
new file mode 100644
index 0000000..249822e
--- /dev/null
+++ b/albumlist/src/main/java/com/hako/albumlist/domain/datasource/AlbumlistRemoteApi.kt
@@ -0,0 +1,14 @@
+package com.hako.albumlist.domain.datasource
+
+import com.hako.albumlist.model.Album
+import io.reactivex.Single
+import retrofit2.http.GET
+import retrofit2.http.Query
+
+interface AlbumlistRemoteApi {
+
+ @GET("/albums")
+ fun getAlbums(
+ @Query("userId") userId: Int
+ ): Single>
+}
\ No newline at end of file
diff --git a/albumlist/src/main/java/com/hako/albumlist/domain/usecase/GetAlbum.kt b/albumlist/src/main/java/com/hako/albumlist/domain/usecase/GetAlbum.kt
new file mode 100644
index 0000000..8ec47e6
--- /dev/null
+++ b/albumlist/src/main/java/com/hako/albumlist/domain/usecase/GetAlbum.kt
@@ -0,0 +1,42 @@
+package com.hako.albumlist.domain.usecase
+
+import com.hako.albumlist.domain.datasource.AlbumlistRemoteApi
+import com.hako.albumlist.model.AlbumViewable
+import com.hako.albumlist.model.toAlbumEntity
+import com.hako.albumlist.model.toUserViewable
+import com.hako.base.domain.database.dao.AlbumDao
+import io.reactivex.Single
+import io.reactivex.schedulers.Schedulers
+import org.koin.core.KoinComponent
+import org.koin.core.get
+
+class GetAlbum(private val dao: AlbumDao) : KoinComponent {
+
+ private val api: AlbumlistRemoteApi = get()
+
+ fun execute(
+ userId: Int,
+ onSuccess: (List) -> Unit,
+ onError: (Throwable) -> Unit,
+ onLoading: () -> Unit
+ ) {
+ Single.fromCallable { dao.getAlbums(userId) }
+ .subscribeOn(Schedulers.io())
+ .doOnError { onError(it) }
+ .doOnSuccess { dbAlbum ->
+ if (dbAlbum.isEmpty() || dbAlbum.count() == 0) {
+ api.getAlbums(userId)
+ .doOnSuccess {
+ dao.saveAll(it.map { album -> album.toAlbumEntity() })
+ onSuccess(dao.getAlbums(userId).map { album -> album.toUserViewable() })
+ }
+ .doOnSubscribe { onLoading() }
+ .subscribeOn(Schedulers.io())
+ .subscribe({}, { onError(it) })
+ } else {
+ onSuccess(dbAlbum.map { it.toUserViewable() })
+ }
+ }
+ .subscribe()
+ }
+}
diff --git a/albumlist/src/main/java/com/hako/albumlist/feature/AlbumlistFragment.kt b/albumlist/src/main/java/com/hako/albumlist/feature/AlbumlistFragment.kt
new file mode 100644
index 0000000..e7a4eca
--- /dev/null
+++ b/albumlist/src/main/java/com/hako/albumlist/feature/AlbumlistFragment.kt
@@ -0,0 +1,80 @@
+package com.hako.albumlist.feature
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.hako.albumlist.R
+import com.hako.albumlist.model.AlbumViewable
+import com.hako.albumlist.viewmodel.AlbumlistViewmodel
+import com.hako.albumlist.widget.AlbumlistAdapter
+import com.hako.base.domain.network.RequestStatus
+import com.hako.base.extensions.gone
+import com.hako.base.extensions.observeNonNull
+import com.hako.base.extensions.toast
+import com.hako.base.extensions.visible
+import kotlinx.android.synthetic.main.fragment_albumlist.*
+import org.koin.androidx.viewmodel.ext.android.viewModel
+import timber.log.Timber
+
+class AlbumlistFragment : Fragment() {
+
+ private val viewModel: AlbumlistViewmodel by viewModel()
+ private val listAdapter by lazy { AlbumlistAdapter() }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
+ ): View = inflater.inflate(R.layout.fragment_albumlist, container, false)
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ setRecycler()
+ setObservers()
+ // TODO: Get user by bundle
+ viewModel.fetchAlbums(2)
+ }
+
+ private fun setObservers() {
+ viewModel.data.observeNonNull(this) {
+ it.either(::handleFetchError, ::handleFetchSuccess)
+ }
+
+ viewModel.requestStatus.observeNonNull(this) {
+ when (it) {
+ RequestStatus.Ready -> {
+ fragment_albumlist_error_overlay.gone()
+ fragment_albumlist_loading_overlay.gone()
+ }
+ RequestStatus.Loading -> {
+ fragment_albumlist_error_overlay.gone()
+ fragment_albumlist_loading_overlay.visible()
+ }
+ RequestStatus.Errored -> {
+ fragment_albumlist_error_overlay.visible()
+ fragment_albumlist_loading_overlay.gone()
+ }
+ }
+ }
+ }
+
+ private fun handleFetchError(throwable: Throwable) {
+ Timber.e(throwable)
+ }
+
+ private fun handleFetchSuccess(users: List) {
+ listAdapter.addAll(users)
+ }
+
+ private fun setRecycler() {
+ fragment_albumlist_recycler_container.apply {
+ layoutManager = LinearLayoutManager(context)
+ adapter = listAdapter.apply {
+ onItemClick = {
+ context.toast(it.title)
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/albumlist/src/main/java/com/hako/albumlist/model/AlbumModels.kt b/albumlist/src/main/java/com/hako/albumlist/model/AlbumModels.kt
new file mode 100644
index 0000000..c61f6b7
--- /dev/null
+++ b/albumlist/src/main/java/com/hako/albumlist/model/AlbumModels.kt
@@ -0,0 +1,24 @@
+package com.hako.albumlist.model
+
+import android.os.Parcelable
+import com.google.gson.annotations.SerializedName
+import com.hako.base.domain.database.entities.AlbumEntity
+import kotlinx.android.parcel.Parcelize
+
+@Parcelize
+data class Album(
+ @SerializedName("id") val id: Int,
+ @SerializedName("userId") val userId: Int,
+ @SerializedName("title") val title: String
+) : Parcelable
+
+data class AlbumViewable(
+ val id: Int,
+ val userId: Int,
+ val title: String
+)
+
+fun Album.toAlbumEntity() = AlbumEntity(this.id, this.userId, this.title)
+
+fun AlbumEntity.toUserViewable() = AlbumViewable(this.id, this.userId, this.title)
+
diff --git a/albumlist/src/main/java/com/hako/albumlist/viewmodel/AlbumlistViewmodel.kt b/albumlist/src/main/java/com/hako/albumlist/viewmodel/AlbumlistViewmodel.kt
new file mode 100644
index 0000000..f3f3bbc
--- /dev/null
+++ b/albumlist/src/main/java/com/hako/albumlist/viewmodel/AlbumlistViewmodel.kt
@@ -0,0 +1,37 @@
+package com.hako.albumlist.viewmodel
+
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+import com.hako.albumlist.domain.usecase.GetAlbum
+import com.hako.albumlist.model.AlbumViewable
+import com.hako.base.domain.network.RequestStatus
+import com.hako.base.domain.network.RequestStatus.Ready
+import com.hako.base.domain.network.RequestStatus.Loading
+import com.hako.base.domain.network.RequestStatus.Errored
+import com.hako.base.domain.Either
+import org.koin.core.KoinComponent
+import org.koin.core.get
+
+class AlbumlistViewmodel : ViewModel(), KoinComponent {
+
+ val data = MutableLiveData>>()
+ val requestStatus = MutableLiveData()
+
+ private val getUsers: GetAlbum = get()
+
+ fun fetchAlbums(userId: Int) {
+ getUsers.execute(
+ userId,
+ onSuccess = {
+ requestStatus.postValue(Ready)
+ data.postValue(Either.Right(it))
+ },
+ onLoading = {
+ requestStatus.postValue(Loading)
+ },
+ onError = {
+ requestStatus.postValue(Errored)
+ data.postValue(Either.Left(it))
+ })
+ }
+}
diff --git a/albumlist/src/main/java/com/hako/albumlist/widget/AlbumlistAdapter.kt b/albumlist/src/main/java/com/hako/albumlist/widget/AlbumlistAdapter.kt
new file mode 100644
index 0000000..fd646a7
--- /dev/null
+++ b/albumlist/src/main/java/com/hako/albumlist/widget/AlbumlistAdapter.kt
@@ -0,0 +1,55 @@
+package com.hako.albumlist.widget
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.hako.albumlist.R
+import com.hako.albumlist.model.AlbumViewable
+import com.hako.base.extensions.autoNotify
+import kotlinx.android.synthetic.main.item_album_card.view.*
+import kotlin.properties.Delegates
+
+class AlbumlistAdapter : RecyclerView.Adapter() {
+
+ private var items by Delegates.observable(emptyList()) { _, oldList, newList ->
+ autoNotify(oldList, newList) { old, new -> old.id == new.id }
+ notifyDataSetChanged()
+ }
+
+ var onItemClick: (AlbumViewable) -> Unit = { }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder =
+ UserViewHolder(
+ LayoutInflater
+ .from(parent.context)
+ .inflate(R.layout.item_album_card, parent, false),
+ onItemClick
+ )
+
+ fun getItem(position: Int) = items[position]
+
+ fun addAll(list: List) {
+ items = list
+ }
+
+ override fun getItemCount() = items.size
+
+ override fun onBindViewHolder(viewholder: RecyclerView.ViewHolder, position: Int) =
+ when (viewholder) {
+ is UserViewHolder -> viewholder.bind(items[position])
+ else -> throw NoWhenBranchMatchedException("Undefined viewholder")
+ }
+}
+
+class UserViewHolder(private val view: View,
+ private val onItemClick: (AlbumViewable) -> Unit) :
+ RecyclerView.ViewHolder(view) {
+
+ fun bind(album: AlbumViewable) = with(view) {
+ item_album_card_album_name.text = album.title
+ item_album_card_container.setOnClickListener {
+ onItemClick(album)
+ }
+ }
+}
\ No newline at end of file
diff --git a/albumlist/src/main/res/layout/fragment_albumlist.xml b/albumlist/src/main/res/layout/fragment_albumlist.xml
new file mode 100644
index 0000000..9d1244f
--- /dev/null
+++ b/albumlist/src/main/res/layout/fragment_albumlist.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/albumlist/src/main/res/layout/item_album_card.xml b/albumlist/src/main/res/layout/item_album_card.xml
new file mode 100644
index 0000000..162c57f
--- /dev/null
+++ b/albumlist/src/main/res/layout/item_album_card.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/albumlist/src/main/res/navigation/albumlist_navigation.xml b/albumlist/src/main/res/navigation/albumlist_navigation.xml
new file mode 100644
index 0000000..68a54ee
--- /dev/null
+++ b/albumlist/src/main/res/navigation/albumlist_navigation.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/albumlist/src/main/res/values/strings.xml b/albumlist/src/main/res/values/strings.xml
new file mode 100644
index 0000000..8e98088
--- /dev/null
+++ b/albumlist/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ albumlist
+
diff --git a/app/build.gradle b/app/build.gradle
index 2f3e31f..3019374 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -49,4 +49,5 @@ android {
dependencies {
implementation project(":base")
implementation project(":userlist")
+ implementation project(":albumlist")
}
diff --git a/app/src/androidTest/java/com/hako/friendlists/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/hako/friendlists/ExampleInstrumentedTest.kt
deleted file mode 100644
index 4d61923..0000000
--- a/app/src/androidTest/java/com/hako/friendlists/ExampleInstrumentedTest.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.hako.friendlists
-
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.ext.junit.runners.AndroidJUnit4
-
-import org.junit.Test
-import org.junit.runner.RunWith
-
-import org.junit.Assert.*
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-@RunWith(AndroidJUnit4::class)
-class ExampleInstrumentedTest {
- @Test
- fun useAppContext() {
- // Context of the app under test.
- val appContext = InstrumentationRegistry.getInstrumentation().targetContext
- assertEquals("com.hako.friendlists", appContext.packageName)
- }
-}
diff --git a/app/src/main/java/com/hako/friendlists/MainApplication.kt b/app/src/main/java/com/hako/friendlists/MainApplication.kt
index 92db1b3..fed3f18 100644
--- a/app/src/main/java/com/hako/friendlists/MainApplication.kt
+++ b/app/src/main/java/com/hako/friendlists/MainApplication.kt
@@ -1,6 +1,7 @@
package com.hako.friendlists
import android.app.Application
+import com.hako.albumlist.di.albumListModules
import com.hako.userlist.di.userlistModules
import com.hako.friendlists.di.appModules
import org.koin.android.ext.koin.androidContext
@@ -26,7 +27,8 @@ class MainApplication : Application() {
modules(
listOf(
appModules,
- userlistModules
+ userlistModules,
+ albumListModules
)
)
}
diff --git a/app/src/main/res/navigation/main_navigation.xml b/app/src/main/res/navigation/main_navigation.xml
index 4befeb8..ae60acb 100644
--- a/app/src/main/res/navigation/main_navigation.xml
+++ b/app/src/main/res/navigation/main_navigation.xml
@@ -6,4 +6,6 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 3743e89..ecb305d 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -4,4 +4,5 @@
#324047
#CBCFD1
#D32F2F
+ #333333
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index f69921a..825a3e6 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -5,6 +5,7 @@
- @color/colorPrimaryDark
- @color/colorAccent
- @color/soft_background
+ - @color/colorDarkGray
diff --git a/app/src/test/java/com/hako/friendlists/ExampleUnitTest.kt b/app/src/test/java/com/hako/friendlists/ExampleUnitTest.kt
deleted file mode 100644
index 7652373..0000000
--- a/app/src/test/java/com/hako/friendlists/ExampleUnitTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.hako.friendlists
-
-import org.junit.Test
-
-import org.junit.Assert.*
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-class ExampleUnitTest {
- @Test
- fun addition_isCorrect() {
- assertEquals(4, 2 + 2)
- }
-}
diff --git a/base/src/main/java/com/hako/base/domain/UseCase.kt b/base/src/main/java/com/hako/base/domain/UseCase.kt
deleted file mode 100644
index d9e178c..0000000
--- a/base/src/main/java/com/hako/base/domain/UseCase.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.hako.base.domain
-
-interface UseCase {
- fun execute(onSuccess: (List) -> Unit, onError: (Throwable) -> Unit, onLoading: () -> Unit)
-}
\ No newline at end of file
diff --git a/base/src/main/java/com/hako/base/domain/database/dao/AlbumDao.kt b/base/src/main/java/com/hako/base/domain/database/dao/AlbumDao.kt
index 3a395de..6d22584 100644
--- a/base/src/main/java/com/hako/base/domain/database/dao/AlbumDao.kt
+++ b/base/src/main/java/com/hako/base/domain/database/dao/AlbumDao.kt
@@ -18,6 +18,9 @@ interface AlbumDao {
@get:Query("SELECT * FROM ${AlbumEntity.TABLE_NAME}")
val all: List
+ @Query("SELECT * FROM ${AlbumEntity.TABLE_NAME} WHERE userId = :userId ORDER BY id ASC")
+ fun getAlbums(userId: Int): List
+
@Query("SELECT COUNT(*) FROM ${AlbumEntity.TABLE_NAME}")
fun count(): Int
diff --git a/build.gradle b/build.gradle
index 155de55..268dbde 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,6 +1,5 @@
buildscript {
apply from: 'versions.gradle'
- ext.kotlin_version = deps.kotlin.version
repositories {
google()
diff --git a/settings.gradle b/settings.gradle
index 0e9eb61..1b2d3f9 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,2 +1,2 @@
-include ':app', ':base', ':userlist'
+include ':app', ':base', ':userlist', ':albumlist'
rootProject.name='Friendlists'
diff --git a/userlist/src/main/java/com/hako/userlist/di/UserlistModules.kt b/userlist/src/main/java/com/hako/userlist/di/UserlistModules.kt
index a69b104..d9a58bb 100644
--- a/userlist/src/main/java/com/hako/userlist/di/UserlistModules.kt
+++ b/userlist/src/main/java/com/hako/userlist/di/UserlistModules.kt
@@ -1,7 +1,6 @@
package com.hako.userlist.di
import com.hako.base.domain.network.RemoteClient
-import com.hako.userlist.domain.datasource.UserlistDatasource
import com.hako.userlist.domain.datasource.UserlistRemoteApi
import com.hako.userlist.domain.usecase.GetUsers
import com.hako.userlist.viewmodel.UserlistViewmodel
@@ -10,7 +9,6 @@ import org.koin.dsl.module
val userlistModules = module {
factory { get().getClient(UserlistRemoteApi::class.java) }
- factory { UserlistDatasource() }
factory { GetUsers(get()) }
viewModel { UserlistViewmodel() }
diff --git a/userlist/src/main/java/com/hako/userlist/domain/datasource/UserlistDatasource.kt b/userlist/src/main/java/com/hako/userlist/domain/datasource/UserlistDatasource.kt
deleted file mode 100644
index c9a6710..0000000
--- a/userlist/src/main/java/com/hako/userlist/domain/datasource/UserlistDatasource.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.hako.userlist.domain.datasource
-
-import com.hako.userlist.model.User
-import io.reactivex.Single
-import org.koin.core.KoinComponent
-import org.koin.core.get
-
-class UserlistDatasource : KoinComponent, UserlistRemoteApi {
-
- private val api: UserlistRemoteApi = get()
-
- override fun getUsers(): Single> = api.getUsers()
-}
\ No newline at end of file
diff --git a/userlist/src/main/java/com/hako/userlist/domain/usecase/GetUsers.kt b/userlist/src/main/java/com/hako/userlist/domain/usecase/GetUsers.kt
index 939394d..864a693 100644
--- a/userlist/src/main/java/com/hako/userlist/domain/usecase/GetUsers.kt
+++ b/userlist/src/main/java/com/hako/userlist/domain/usecase/GetUsers.kt
@@ -1,8 +1,7 @@
package com.hako.userlist.domain.usecase
-import com.hako.base.domain.UseCase
import com.hako.base.domain.database.dao.UserDao
-import com.hako.userlist.domain.datasource.UserlistDatasource
+import com.hako.userlist.domain.datasource.UserlistRemoteApi
import com.hako.userlist.model.UserViewable
import com.hako.userlist.model.toUserEntity
import com.hako.userlist.model.toUserViewable
@@ -11,12 +10,11 @@ import io.reactivex.schedulers.Schedulers
import org.koin.core.KoinComponent
import org.koin.core.get
-class GetUsers(private val dao: UserDao) : KoinComponent,
- UseCase {
+class GetUsers(private val dao: UserDao) : KoinComponent {
- private val api: UserlistDatasource = get()
+ private val api: UserlistRemoteApi = get()
- override fun execute(
+ fun execute(
onSuccess: (List) -> Unit,
onError: (Throwable) -> Unit,
onLoading: () -> Unit
@@ -25,7 +23,7 @@ class GetUsers(private val dao: UserDao) : KoinComponent,
.subscribeOn(Schedulers.io())
.doOnError { onError(it) }
.doOnSuccess { dbUsers ->
- if (dbUsers.isEmpty() || dbUsers.count() == 0) {
+ if (dbUsers.isEmpty()) {
api.getUsers()
.doOnSuccess {
dao.saveAll(it.map { user -> user.toUserEntity() })
diff --git a/userlist/src/main/java/com/hako/userlist/feature/UserlistFragment.kt b/userlist/src/main/java/com/hako/userlist/feature/UserlistFragment.kt
index 7f02c67..b34fbd8 100644
--- a/userlist/src/main/java/com/hako/userlist/feature/UserlistFragment.kt
+++ b/userlist/src/main/java/com/hako/userlist/feature/UserlistFragment.kt
@@ -22,7 +22,7 @@ import timber.log.Timber
class UserlistFragment : Fragment() {
private val viewModel: UserlistViewmodel by viewModel()
- private val chatAdapter by lazy { UserlistAdapter() }
+ private val listAdapter by lazy { UserlistAdapter() }
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
@@ -63,13 +63,13 @@ class UserlistFragment : Fragment() {
}
private fun handleFetchSuccess(users: List) {
- chatAdapter.addAll(users)
+ listAdapter.addAll(users)
}
private fun setRecycler() {
fragment_userlist_recycler_container.apply {
layoutManager = LinearLayoutManager(context)
- adapter = chatAdapter.apply {
+ adapter = listAdapter.apply {
onItemClick = {
context.toast(it.realName)
}
diff --git a/userlist/src/main/res/layout/item_user_card.xml b/userlist/src/main/res/layout/item_user_card.xml
index 524ef91..36a66aa 100644
--- a/userlist/src/main/res/layout/item_user_card.xml
+++ b/userlist/src/main/res/layout/item_user_card.xml
@@ -19,6 +19,7 @@
android:layout_marginStart="24dp"
android:layout_marginTop="16dp"
android:textSize="18sp"
+ android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Real Name" />
@@ -27,7 +28,7 @@
android:id="@+id/item_user_card_user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textSize="12sp"
+ android:textSize="14sp"
app:layout_constraintStart_toStartOf="@+id/item_user_card_real_name"
app:layout_constraintTop_toBottomOf="@+id/item_user_card_real_name"
tools:text="User Name" />