mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 15:17:05 +05:30
all: introduce and migrate to ExtendedPostDetails
This commit is contained in:
parent
87b1377f38
commit
23298dd0f5
6 changed files with 60 additions and 15 deletions
|
@ -42,6 +42,8 @@ dependencies {
|
|||
implementation(projects.api)
|
||||
implementation(projects.common)
|
||||
implementation(projects.database)
|
||||
implementation(projects.metadataExtractor)
|
||||
implementation(projects.model)
|
||||
implementation(libs.accompanist.swiperefresh)
|
||||
implementation(libs.accompanist.sysuicontroller)
|
||||
implementation(libs.androidx.activity.compose)
|
||||
|
|
|
@ -22,7 +22,8 @@ class ClawViewModel
|
|||
@Inject
|
||||
constructor(
|
||||
private val api: LobstersApi,
|
||||
private val repository: SavedPostsRepository,
|
||||
private val savedPostsRepository: SavedPostsRepository,
|
||||
private val postDetailsRepository: PostDetailsRepository,
|
||||
) : ViewModel() {
|
||||
private var hottestPostsPagingSource: LobstersPagingSource? = null
|
||||
private var newestPostsPagingSource: LobstersPagingSource? = null
|
||||
|
@ -42,7 +43,7 @@ constructor(
|
|||
get() = newestPostsPager.flow
|
||||
|
||||
private val savedPostsFlow
|
||||
get() = repository.savedPosts
|
||||
get() = savedPostsRepository.savedPosts
|
||||
|
||||
val savedPosts
|
||||
get() = savedPostsFlow.map(::mapSavedPosts)
|
||||
|
@ -60,15 +61,19 @@ constructor(
|
|||
viewModelScope.launch(Dispatchers.IO) {
|
||||
val saved = isPostSaved(post)
|
||||
if (saved) {
|
||||
repository.removePost(post)
|
||||
savedPostsRepository.removePost(post)
|
||||
} else {
|
||||
repository.savePost(post)
|
||||
savedPostsRepository.savePost(post)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun getPostComments(postId: String) =
|
||||
withContext(Dispatchers.IO) { api.getPostDetails(postId) }
|
||||
withContext(Dispatchers.IO) {
|
||||
val details = api.getPostDetails(postId)
|
||||
val extendedDetails = postDetailsRepository.getExtendedDetails(details)
|
||||
extendedDetails
|
||||
}
|
||||
|
||||
suspend fun getUserProfile(username: String) =
|
||||
withContext(Dispatchers.IO) { api.getUser(username) }
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
package dev.msfjarvis.claw.android.viewmodel
|
||||
|
||||
import dev.msfjarvis.claw.metadata.MetadataExtractor
|
||||
import dev.msfjarvis.claw.model.ExtendedPostDetails
|
||||
import dev.msfjarvis.claw.model.LobstersPostDetails
|
||||
import javax.inject.Inject
|
||||
|
||||
class PostDetailsRepository
|
||||
@Inject
|
||||
constructor(
|
||||
private val metadataExtractor: MetadataExtractor,
|
||||
) {
|
||||
suspend fun getExtendedDetails(details: LobstersPostDetails): ExtendedPostDetails {
|
||||
val metadata = metadataExtractor.getExtractedMetadata(details.url)
|
||||
return ExtendedPostDetails(
|
||||
title = details.title,
|
||||
linkMetadata = metadata,
|
||||
description = details.description,
|
||||
submitter = details.submitter,
|
||||
tags = details.tags,
|
||||
comments = details.comments,
|
||||
commentsUrl = details.commentsUrl,
|
||||
)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue