fix(android): limit widget to 50 posts

This commit is contained in:
Harsh Shandilya 2023-09-30 01:40:19 +05:30
parent cae759a09e
commit 778d98c7f2
No known key found for this signature in database
3 changed files with 6 additions and 9 deletions

View file

@ -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()

View file

@ -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)

View file

@ -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()
} }
} }