mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-18 04:27:02 +05:30
app: switch to loading posts using Ktor
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
836b5ef725
commit
f7e0ba6544
1 changed files with 4 additions and 4 deletions
|
@ -3,9 +3,10 @@ package dev.msfjarvis.lobsters.ui.viewmodel
|
||||||
import androidx.hilt.lifecycle.ViewModelInject
|
import androidx.hilt.lifecycle.ViewModelInject
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import dev.msfjarvis.lobsters.api.LobstersApi
|
|
||||||
import dev.msfjarvis.lobsters.data.source.PostsDatabase
|
import dev.msfjarvis.lobsters.data.source.PostsDatabase
|
||||||
import dev.msfjarvis.lobsters.model.LobstersPost
|
import dev.msfjarvis.lobsters.model.LobstersPost
|
||||||
|
import io.ktor.client.HttpClient
|
||||||
|
import io.ktor.client.request.get
|
||||||
import kotlinx.coroutines.CoroutineExceptionHandler
|
import kotlinx.coroutines.CoroutineExceptionHandler
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
|
@ -15,7 +16,7 @@ import java.net.SocketTimeoutException
|
||||||
import java.net.UnknownHostException
|
import java.net.UnknownHostException
|
||||||
|
|
||||||
class LobstersViewModel @ViewModelInject constructor(
|
class LobstersViewModel @ViewModelInject constructor(
|
||||||
private val lobstersApi: LobstersApi,
|
private val client: HttpClient,
|
||||||
database: PostsDatabase,
|
database: PostsDatabase,
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
private var apiPage = 1
|
private var apiPage = 1
|
||||||
|
@ -56,8 +57,7 @@ class LobstersViewModel @ViewModelInject constructor(
|
||||||
|
|
||||||
private fun getMorePostsInternal(firstLoad: Boolean) {
|
private fun getMorePostsInternal(firstLoad: Boolean) {
|
||||||
viewModelScope.launch(coroutineExceptionHandler) {
|
viewModelScope.launch(coroutineExceptionHandler) {
|
||||||
val newPosts = lobstersApi.getHottestPosts(apiPage)
|
val newPosts = client.get<List<LobstersPost>>("https://lobste.rs/hottest.json?page=$apiPage")
|
||||||
.toList()
|
|
||||||
if (firstLoad) {
|
if (firstLoad) {
|
||||||
_posts.value = newPosts
|
_posts.value = newPosts
|
||||||
postsDao.deleteAllPosts()
|
postsDao.deleteAllPosts()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue