android: add post details methods to VM

This commit is contained in:
Harsh Shandilya 2021-10-04 14:43:24 +05:30
parent f2fdfac4ad
commit 7c306acfa9
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80

View file

@ -7,19 +7,22 @@ import dagger.hilt.android.lifecycle.HiltViewModel
import dev.msfjarvis.claw.android.paging.LobstersPagingSource import dev.msfjarvis.claw.android.paging.LobstersPagingSource
import dev.msfjarvis.claw.api.LobstersApi import dev.msfjarvis.claw.api.LobstersApi
import dev.msfjarvis.claw.database.local.SavedPost import dev.msfjarvis.claw.database.local.SavedPost
import dev.msfjarvis.claw.model.LobstersPostDetails
import javax.inject.Inject import javax.inject.Inject
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.last import kotlinx.coroutines.flow.last
import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.mapLatest
import kotlinx.coroutines.withContext
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@HiltViewModel @HiltViewModel
class ClawViewModel class ClawViewModel
@Inject @Inject
constructor( constructor(
api: LobstersApi, private val api: LobstersApi,
private val repository: SavedPostsRepository, private val repository: SavedPostsRepository,
) : ViewModel() { ) : ViewModel() {
var lastPagingSource: LobstersPagingSource? = null var lastPagingSource: LobstersPagingSource? = null
@ -46,6 +49,11 @@ constructor(
} }
} }
suspend fun getPostComments(postId: String): LobstersPostDetails =
withContext(Dispatchers.IO) {
return@withContext api.getPostDetails(postId)
}
fun reloadPosts() { fun reloadPosts() {
lastPagingSource?.invalidate() lastPagingSource?.invalidate()
} }