Skip to content

Commit

Permalink
Applied refresh to post item list on TagsFragment
Browse files Browse the repository at this point in the history
  • Loading branch information
netrance committed Dec 7, 2022
1 parent a736d6c commit 10f52c8
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 17 deletions.
1 change: 1 addition & 0 deletions dorian-steem-apps-v1/dorian-steem-ui/build.gradle
Expand Up @@ -55,6 +55,7 @@ dependencies {
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.5.0'
implementation 'androidx.navigation:navigation-ui-ktx:2.5.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

// glide
implementation 'com.github.bumptech.glide:glide:4.11.0'
Expand Down
Expand Up @@ -11,10 +11,12 @@ import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.SimpleItemAnimator
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener
import lee.dorian.steem_data.model.post.GetRankedPostParamsDTO
import lee.dorian.steem_ui.MainViewModel
import lee.dorian.steem_ui.R
import lee.dorian.steem_ui.databinding.FragmentTagsBinding
import lee.dorian.steem_ui.ext.showToastShortly
import lee.dorian.steem_ui.ui.base.BaseFragment

class TagsFragment : BaseFragment<FragmentTagsBinding, TagsViewModel>(R.layout.fragment_tags) {
Expand Down Expand Up @@ -62,23 +64,32 @@ class TagsFragment : BaseFragment<FragmentTagsBinding, TagsViewModel>(R.layout.f
clearCheck()
check(R.id.radiobtn_trending)
}

binding.swipeRefreshPostList.setOnRefreshListener(swipeRefreshPostListRefreshListener)
}

private val currentSortObserver = Observer<String> { sort ->
val tag = activityViewModel.currentTag.value ?: ""
if ((tag.length >= 2) and (sort.isNotEmpty())) {
viewModel.readRankedPosts(
tag
)
}
readRankedPosts()
}

private val currentTagObserver = Observer<String> { tag ->
readRankedPosts()
}

private fun readRankedPosts() {
val tag = activityViewModel.currentTag.value ?: ""
val sort = viewModel.sort.value ?: ""
if ((tag.length >= 2) and (sort.isNotEmpty())) {
viewModel.readRankedPosts(
tag
)

if (sort.isEmpty()) {
showToastShortly(getString(R.string.error_sort_is_not_set))
return
}

binding.swipeRefreshPostList.isRefreshing = true
viewModel.readRankedPosts(
tag
) {
binding.swipeRefreshPostList.isRefreshing = false
}
}

Expand All @@ -104,4 +115,8 @@ class TagsFragment : BaseFragment<FragmentTagsBinding, TagsViewModel>(R.layout.f
}
}

private val swipeRefreshPostListRefreshListener = OnRefreshListener {
readRankedPosts()
}

}
Expand Up @@ -27,7 +27,8 @@ class TagsViewModel : BaseViewModel() {

fun readRankedPosts(
tag: String,
limit: Int = this.limit
limit: Int = this.limit,
handleAfterReading: (() -> Unit) = {}
) {
rankedPosts.value = mutableListOf()

Expand All @@ -40,10 +41,12 @@ class TagsViewModel : BaseViewModel() {
.onErrorReturn { error ->
error.printStackTrace()
liveThrowable.value = error
handleAfterReading()
listOf()
}
.subscribe { rankedPostItemList ->
rankedPosts.value = rankedPostItemList.toMutableList()
handleAfterReading()
}
.also { disposable ->
compositeDisposable.add(disposable)
Expand Down
Expand Up @@ -53,15 +53,23 @@

</RadioGroup>

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/list_post_item"
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_post_list"
android:layout_width="match_parent"
android:layout_height="0dp"
app:postItemList="@{viewModel.rankedPosts}"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toBottomOf="@id/radiogroup_sort"
app:layout_constraintBottom_toBottomOf="parent"
tools:listitem="@layout/layout_post_item" />
app:layout_constraintBottom_toBottomOf="parent">

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/list_post_item"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:postItemList="@{viewModel.rankedPosts}"
tools:listitem="@layout/layout_post_item" />

</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>


</androidx.constraintlayout.widget.ConstraintLayout>

Expand Down
Expand Up @@ -3,4 +3,7 @@
<string name="title_tags">Tags</string>
<string name="title_profile">Profile</string>
<string name="title_wallet">Wallet</string>

<!-- Strings for TagsFragment -->
<string name="error_sort_is_not_set">Please select one of the sorts.</string>
</resources>

0 comments on commit 10f52c8

Please sign in to comment.