From fe1a0f2105a1dd4162e1c49132fb6a2303e41256 Mon Sep 17 00:00:00 2001 From: HuanCheng65 <22636177+HuanCheng65@users.noreply.github.com> Date: Sat, 28 Jan 2023 23:34:44 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20=E6=80=A7=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tieba/post/arch/Extensions.kt | 35 ++++++++++++++----- .../tieba/post/models/database/Account.kt | 16 ++++----- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/arch/Extensions.kt b/app/src/main/java/com/huanchengfly/tieba/post/arch/Extensions.kt index ba561384..c2ab565f 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/arch/Extensions.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/arch/Extensions.kt @@ -1,17 +1,27 @@ package com.huanchengfly.tieba.post.arch -import android.annotation.SuppressLint import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.State -import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.produceState import androidx.compose.ui.platform.LocalContext import androidx.hilt.navigation.compose.hiltViewModel -import androidx.lifecycle.* +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.flowWithLifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.viewModelScope import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job -import kotlinx.coroutines.flow.* +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.filterIsInstance +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import kotlin.reflect.KProperty1 @@ -23,15 +33,24 @@ fun Flow.collectIn( flowWithLifecycle(lifecycleOwner.lifecycle, minActiveState).collect(action) } -@SuppressLint("FlowOperatorInvokedInComposition") @Composable fun Flow.collectPartialAsState( prop1: KProperty1, initial: A, ): State { - return map { prop1.get(it) } - .distinctUntilChanged() - .collectAsState(initial = initial) + return produceState( + initialValue = initial, + key1 = this, + key2 = prop1, + key3 = initial + ) { + this@collectPartialAsState + .map { prop1.get(it) } + .distinctUntilChanged() + .collect { + value = it + } + } } inline fun CoroutineScope.onEvent( diff --git a/app/src/main/java/com/huanchengfly/tieba/post/models/database/Account.kt b/app/src/main/java/com/huanchengfly/tieba/post/models/database/Account.kt index 67c51c21..a396c45e 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/models/database/Account.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/models/database/Account.kt @@ -4,14 +4,14 @@ import androidx.compose.runtime.Stable import org.litepal.crud.LitePalSupport @Stable -data class Account( - var uid: String, - var name: String, - var bduss: String, - var tbs: String, - var portrait: String, - var sToken: String, - var cookie: String, +data class Account @JvmOverloads constructor( + var uid: String = "", + var name: String = "", + var bduss: String = "", + var tbs: String = "", + var portrait: String = "", + var sToken: String = "", + var cookie: String = "", var nameShow: String? = null, var intro: String? = null, var sex: String? = null,