Skip to content

Commit a72d365

Browse files
Refactor: Optimize AdapterTask to use UserRepository
- Injected `UserRepository` into `AdapterTask` to handle user data fetching. - Removed direct `Realm` instance calls from `showAssignee` to prevent per-item database queries. - Updated `TeamTaskFragment` to provide the `UserRepository` to the adapter. This change improves RecyclerView performance by centralizing data access and reducing synchronous I/O on the main thread.
1 parent 83a17ba commit a72d365

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

app/src/main/java/org/ole/planet/myplanet/ui/team/teamTask/AdapterTask.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,16 @@ import org.ole.planet.myplanet.R
1717
import org.ole.planet.myplanet.databinding.RowTaskBinding
1818
import org.ole.planet.myplanet.model.RealmTeamTask
1919
import org.ole.planet.myplanet.model.RealmUserModel
20+
import org.ole.planet.myplanet.repository.UserRepository
2021
import org.ole.planet.myplanet.ui.team.teamTask.AdapterTask.ViewHolderTask
2122
import org.ole.planet.myplanet.utilities.TimeUtils.formatDate
2223

2324
class AdapterTask(
2425
private val context: Context,
2526
private val list: List<RealmTeamTask>?,
2627
private val nonTeamMember: Boolean,
27-
private val coroutineScope: CoroutineScope
28+
private val coroutineScope: CoroutineScope,
29+
private val userRepository: UserRepository
2830
) : RecyclerView.Adapter<ViewHolderTask>() {
2931
private val assigneeCache: MutableMap<String, String> = mutableMapOf()
3032
private var listener: OnCompletedListener? = null
@@ -101,12 +103,7 @@ class AdapterTask(
101103
}
102104

103105
return coroutineScope.launch(Dispatchers.IO) {
104-
var user: RealmUserModel? = null
105-
Realm.getDefaultInstance().use { realm ->
106-
user = realm.where(RealmUserModel::class.java).equalTo("id", assigneeId).findFirst()?.let {
107-
realm.copyFromRealm(it)
108-
}
109-
}
106+
val user = userRepository.getUserById(assigneeId)
110107
withContext(Dispatchers.Main) {
111108
val name = user?.name
112109
if (name != null) {

app/src/main/java/org/ole/planet/myplanet/ui/team/teamTask/TeamTaskFragment.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import io.realm.Sort
2626
import java.util.Calendar
2727
import java.util.Date
2828
import java.util.UUID
29+
import javax.inject.Inject
2930
import kotlinx.coroutines.flow.collectLatest
3031
import kotlinx.coroutines.launch
3132
import org.ole.planet.myplanet.R
@@ -36,6 +37,7 @@ import org.ole.planet.myplanet.model.RealmMyTeam.Companion.getJoinedMember
3637
import org.ole.planet.myplanet.model.RealmNews
3738
import org.ole.planet.myplanet.model.RealmTeamTask
3839
import org.ole.planet.myplanet.model.RealmUserModel
40+
import org.ole.planet.myplanet.repository.UserRepository
3941
import org.ole.planet.myplanet.ui.myhealth.UserListArrayAdapter
4042
import org.ole.planet.myplanet.ui.team.BaseTeamFragment
4143
import org.ole.planet.myplanet.ui.team.teamTask.AdapterTask.OnCompletedListener
@@ -46,6 +48,8 @@ import org.ole.planet.myplanet.utilities.Utilities
4648

4749
@AndroidEntryPoint
4850
class TeamTaskFragment : BaseTeamFragment(), OnCompletedListener {
51+
@Inject
52+
lateinit var userRepository: UserRepository
4953
private var _binding: FragmentTeamTaskBinding? = null
5054
private val binding get() = _binding!!
5155
private var deadline: Calendar? = null
@@ -252,7 +256,7 @@ class TeamTaskFragment : BaseTeamFragment(), OnCompletedListener {
252256
else {
253257
showNoData(binding.tvNodata, list?.size, "")
254258
}
255-
adapterTask = AdapterTask(requireContext(), list, !isMemberFlow.value, viewLifecycleOwner.lifecycleScope)
259+
adapterTask = AdapterTask(requireContext(), list, !isMemberFlow.value, viewLifecycleOwner.lifecycleScope, userRepository)
256260
adapterTask.setListener(this)
257261
binding.rvTask.adapter = adapterTask
258262
}
@@ -326,7 +330,7 @@ class TeamTaskFragment : BaseTeamFragment(), OnCompletedListener {
326330

327331
private fun updatedTeamTaskList(updatedList: RealmResults<RealmTeamTask>) {
328332
viewLifecycleOwner.lifecycleScope.launch {
329-
adapterTask = AdapterTask(requireContext(), updatedList, !isMemberFlow.value, viewLifecycleOwner.lifecycleScope)
333+
adapterTask = AdapterTask(requireContext(), updatedList, !isMemberFlow.value, viewLifecycleOwner.lifecycleScope, userRepository)
330334
adapterTask.setListener(this@TeamTaskFragment)
331335
binding.rvTask.adapter = adapterTask
332336
adapterTask.notifyDataSetChanged()

0 commit comments

Comments
 (0)