diff --git a/app/src/main/java/com/huanchengfly/tieba/post/arch/BaseComposeActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/arch/BaseComposeActivity.kt index 68b49432..c02eb107 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/arch/BaseComposeActivity.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/arch/BaseComposeActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.os.Parcelable import android.widget.Toast import androidx.activity.compose.setContent +import androidx.compose.foundation.lazy.LazyListState import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect @@ -106,6 +107,8 @@ abstract class BaseComposeActivity : BaseActivity() { is CommonUiEvent.Toast -> { Toast.makeText(this, event.message, event.length).show() } + + else -> {} } } @@ -118,8 +121,17 @@ abstract class BaseComposeActivity : BaseActivity() { sealed interface CommonUiEvent : UiEvent { + object ScrollToTop : CommonUiEvent + data class Toast( val message: CharSequence, val length: Int = android.widget.Toast.LENGTH_SHORT ) : CommonUiEvent + + @Composable + fun BaseViewModel<*, *, *, *>.bindScrollToTopEvent(lazyListState: LazyListState) { + onEvent { + lazyListState.scrollToItem(0, 0) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/main/explore/personalized/PersonalizedPage.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/main/explore/personalized/PersonalizedPage.kt index 9fe22066..5e313af4 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/main/explore/personalized/PersonalizedPage.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/main/explore/personalized/PersonalizedPage.kt @@ -49,6 +49,7 @@ import com.huanchengfly.tieba.post.api.models.protos.ThreadInfo import com.huanchengfly.tieba.post.api.models.protos.personalized.DislikeReason import com.huanchengfly.tieba.post.api.models.protos.personalized.ThreadPersonalized import com.huanchengfly.tieba.post.arch.BaseComposeActivity +import com.huanchengfly.tieba.post.arch.CommonUiEvent.ScrollToTop.bindScrollToTopEvent import com.huanchengfly.tieba.post.arch.ImmutableHolder import com.huanchengfly.tieba.post.arch.collectPartialAsState import com.huanchengfly.tieba.post.arch.onEvent @@ -111,6 +112,7 @@ fun PersonalizedPage( onRefresh = { viewModel.send(PersonalizedUiIntent.Refresh) } ) val lazyListState = rememberLazyListState() + viewModel.bindScrollToTopEvent(lazyListState = lazyListState) var refreshCount by remember { mutableStateOf(0) }