mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-15 12:17:02 +05:30
fix(android): limit widget to 50 posts
This commit is contained in:
parent
cae759a09e
commit
778d98c7f2
3 changed files with 6 additions and 9 deletions
|
@ -10,8 +10,6 @@ import android.content.Context
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.collectAsState
|
|
||||||
import androidx.compose.runtime.getValue
|
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.glance.GlanceId
|
import androidx.glance.GlanceId
|
||||||
import androidx.glance.GlanceModifier
|
import androidx.glance.GlanceModifier
|
||||||
|
@ -31,11 +29,9 @@ import androidx.glance.text.TextStyle
|
||||||
import dev.msfjarvis.claw.common.theme.DarkThemeColors
|
import dev.msfjarvis.claw.common.theme.DarkThemeColors
|
||||||
import dev.msfjarvis.claw.common.theme.LightThemeColors
|
import dev.msfjarvis.claw.common.theme.LightThemeColors
|
||||||
import dev.msfjarvis.claw.database.local.SavedPost
|
import dev.msfjarvis.claw.database.local.SavedPost
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
|
||||||
|
|
||||||
class SavedPostsWidget(
|
class SavedPostsWidget(
|
||||||
private val savedPosts: Flow<List<SavedPost>>,
|
private val posts: List<SavedPost>,
|
||||||
) : GlanceAppWidget() {
|
) : GlanceAppWidget() {
|
||||||
override suspend fun provideGlance(context: Context, id: GlanceId) {
|
override suspend fun provideGlance(context: Context, id: GlanceId) {
|
||||||
provideContent {
|
provideContent {
|
||||||
|
@ -50,8 +46,6 @@ class SavedPostsWidget(
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun WidgetHost() {
|
private fun WidgetHost() {
|
||||||
val posts by savedPosts.collectAsState(persistentListOf())
|
|
||||||
|
|
||||||
LazyColumn(
|
LazyColumn(
|
||||||
modifier =
|
modifier =
|
||||||
GlanceModifier.fillMaxSize()
|
GlanceModifier.fillMaxSize()
|
||||||
|
|
|
@ -14,6 +14,8 @@ import com.deliveryhero.whetstone.Whetstone
|
||||||
import com.deliveryhero.whetstone.broadcastreceiver.ContributesBroadcastReceiverInjector
|
import com.deliveryhero.whetstone.broadcastreceiver.ContributesBroadcastReceiverInjector
|
||||||
import dev.msfjarvis.claw.android.viewmodel.ClawViewModel
|
import dev.msfjarvis.claw.android.viewmodel.ClawViewModel
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
import kotlinx.coroutines.flow.first
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
|
|
||||||
@ContributesBroadcastReceiverInjector
|
@ContributesBroadcastReceiverInjector
|
||||||
class WidgetReceiver : GlanceAppWidgetReceiver() {
|
class WidgetReceiver : GlanceAppWidgetReceiver() {
|
||||||
|
@ -21,7 +23,7 @@ class WidgetReceiver : GlanceAppWidgetReceiver() {
|
||||||
@Inject lateinit var viewModel: ClawViewModel
|
@Inject lateinit var viewModel: ClawViewModel
|
||||||
|
|
||||||
override val glanceAppWidget: GlanceAppWidget
|
override val glanceAppWidget: GlanceAppWidget
|
||||||
get() = SavedPostsWidget(viewModel.savedPosts)
|
get() = SavedPostsWidget(runBlocking { viewModel.savedPosts.first().subList(0, 50) })
|
||||||
|
|
||||||
override fun onReceive(context: Context, intent: Intent) {
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
Whetstone.inject(this, context)
|
Whetstone.inject(this, context)
|
||||||
|
|
|
@ -44,7 +44,8 @@ constructor(
|
||||||
.filterIsInstance<Success<LobstersPostDetails>>()
|
.filterIsInstance<Success<LobstersPostDetails>>()
|
||||||
.map { result -> result.value.toSavedPost() }
|
.map { result -> result.value.toSavedPost() }
|
||||||
.let { savedPostsRepository.savePosts(it) }
|
.let { savedPostsRepository.savePosts(it) }
|
||||||
SavedPostsWidget(savedPostsRepository.savedPosts).updateAll(applicationContext)
|
SavedPostsWidget(savedPostsRepository.savedPosts.first().subList(0, 50))
|
||||||
|
.updateAll(applicationContext)
|
||||||
return Result.success()
|
return Result.success()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue