Reset ViewModels on logout/account switch
This commit introduces a `ResetModel()` function to `AgentViewModel` and `MineAgentViewModel` to clear their state. This function is now called in `ResourceCleanupManager` and `AppState` during logout or when switching accounts to ensure that data from the previous session is not retained. Additionally, the search and group name input fields in `CreateGroupChatScreen` are now single-line.
This commit is contained in:
@@ -25,6 +25,8 @@ import com.aiosman.ravenow.ui.index.tabs.moment.tabs.timeline.TimelineMomentView
|
|||||||
import com.aiosman.ravenow.ui.index.tabs.profile.MyProfileViewModel
|
import com.aiosman.ravenow.ui.index.tabs.profile.MyProfileViewModel
|
||||||
import com.aiosman.ravenow.ui.index.tabs.search.DiscoverViewModel
|
import com.aiosman.ravenow.ui.index.tabs.search.DiscoverViewModel
|
||||||
import com.aiosman.ravenow.ui.index.tabs.search.SearchViewModel
|
import com.aiosman.ravenow.ui.index.tabs.search.SearchViewModel
|
||||||
|
import com.aiosman.ravenow.ui.index.tabs.ai.AgentViewModel
|
||||||
|
import com.aiosman.ravenow.ui.index.tabs.ai.tabs.mine.MineAgentViewModel
|
||||||
import com.aiosman.ravenow.ui.like.LikeNoticeViewModel
|
import com.aiosman.ravenow.ui.like.LikeNoticeViewModel
|
||||||
import com.aiosman.ravenow.utils.Utils
|
import com.aiosman.ravenow.utils.Utils
|
||||||
import com.tencent.imsdk.v2.V2TIMCallback
|
import com.tencent.imsdk.v2.V2TIMCallback
|
||||||
@@ -212,6 +214,9 @@ object AppState {
|
|||||||
FollowerNoticeViewModel.ResetModel()
|
FollowerNoticeViewModel.ResetModel()
|
||||||
// 重置关注通知页面
|
// 重置关注通知页面
|
||||||
IndexViewModel.ResetModel()
|
IndexViewModel.ResetModel()
|
||||||
|
// 重置AI Agent相关页面
|
||||||
|
AgentViewModel.ResetModel()
|
||||||
|
MineAgentViewModel.ResetModel()
|
||||||
UserId = null
|
UserId = null
|
||||||
|
|
||||||
// 清除游客状态
|
// 清除游客状态
|
||||||
|
|||||||
@@ -197,6 +197,7 @@ fun CreateGroupChatScreen() {
|
|||||||
fontSize = 14.sp
|
fontSize = 14.sp
|
||||||
),
|
),
|
||||||
modifier = Modifier.weight(1f),
|
modifier = Modifier.weight(1f),
|
||||||
|
singleLine = true,
|
||||||
decorationBox = { innerTextField ->
|
decorationBox = { innerTextField ->
|
||||||
Box {
|
Box {
|
||||||
if (searchText.text.isEmpty()) {
|
if (searchText.text.isEmpty()) {
|
||||||
@@ -277,6 +278,7 @@ fun CreateGroupChatScreen() {
|
|||||||
),
|
),
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.weight(1f),
|
.weight(1f),
|
||||||
|
singleLine = true,
|
||||||
decorationBox = { innerTextField ->
|
decorationBox = { innerTextField ->
|
||||||
Box(Modifier.fillMaxWidth()) {
|
Box(Modifier.fillMaxWidth()) {
|
||||||
if (groupName.text.isEmpty()) {
|
if (groupName.text.isEmpty()) {
|
||||||
|
|||||||
@@ -95,4 +95,14 @@ object AgentViewModel: ViewModel() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置ViewModel状态,用于登出或切换账号时清理数据
|
||||||
|
*/
|
||||||
|
fun ResetModel() {
|
||||||
|
agentItems = emptyList()
|
||||||
|
errorMessage = null
|
||||||
|
isRefreshing = false
|
||||||
|
isLoading = false
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -139,5 +139,23 @@ object MineAgentViewModel : ViewModel() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置ViewModel状态,用于登出或切换账号时清理数据
|
||||||
|
*/
|
||||||
|
fun ResetModel() {
|
||||||
|
// 重置状态变量
|
||||||
|
refreshing = false
|
||||||
|
isLoading = false
|
||||||
|
hasNext = true
|
||||||
|
currentPage = 1
|
||||||
|
error = null
|
||||||
|
isFirstLoad = true
|
||||||
|
|
||||||
|
// 清除预加载的图片ID
|
||||||
|
preloadedImageIds.clear()
|
||||||
|
|
||||||
|
// 清空PagingData
|
||||||
|
_agentList.value = PagingData.empty()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -63,7 +63,7 @@ object ResourceCleanupManager {
|
|||||||
IndexViewModel.ResetModel()
|
IndexViewModel.ResetModel()
|
||||||
|
|
||||||
// 重置AI相关ViewModel
|
// 重置AI相关ViewModel
|
||||||
// AgentViewModel的属性是私有的,无法直接访问,通过其他方式清理
|
AgentViewModel.ResetModel()
|
||||||
|
|
||||||
HotAgentViewModel.let {
|
HotAgentViewModel.let {
|
||||||
it.agentList = emptyList()
|
it.agentList = emptyList()
|
||||||
@@ -75,13 +75,7 @@ object ResourceCleanupManager {
|
|||||||
it.clearPreloadedImages()
|
it.clearPreloadedImages()
|
||||||
}
|
}
|
||||||
|
|
||||||
MineAgentViewModel.let {
|
MineAgentViewModel.ResetModel()
|
||||||
it.refreshing = false
|
|
||||||
it.isLoading = false
|
|
||||||
it.hasNext = true
|
|
||||||
it.currentPage = 1
|
|
||||||
it.error = null
|
|
||||||
}
|
|
||||||
|
|
||||||
// 重置动态相关ViewModel
|
// 重置动态相关ViewModel
|
||||||
TimelineMomentViewModel.ResetModel()
|
TimelineMomentViewModel.ResetModel()
|
||||||
@@ -220,7 +214,7 @@ object ResourceCleanupManager {
|
|||||||
fun cleanupPageResources(pageType: String) {
|
fun cleanupPageResources(pageType: String) {
|
||||||
when (pageType) {
|
when (pageType) {
|
||||||
"ai" -> {
|
"ai" -> {
|
||||||
// AgentViewModel的属性是私有的,无法直接访问
|
AgentViewModel.ResetModel()
|
||||||
HotAgentViewModel.let {
|
HotAgentViewModel.let {
|
||||||
it.agentList = emptyList()
|
it.agentList = emptyList()
|
||||||
it.refreshing = false
|
it.refreshing = false
|
||||||
@@ -230,13 +224,7 @@ object ResourceCleanupManager {
|
|||||||
it.error = null
|
it.error = null
|
||||||
it.clearPreloadedImages()
|
it.clearPreloadedImages()
|
||||||
}
|
}
|
||||||
MineAgentViewModel.let {
|
MineAgentViewModel.ResetModel()
|
||||||
it.refreshing = false
|
|
||||||
it.isLoading = false
|
|
||||||
it.hasNext = true
|
|
||||||
it.currentPage = 1
|
|
||||||
it.error = null
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
"moment" -> {
|
"moment" -> {
|
||||||
TimelineMomentViewModel.ResetModel()
|
TimelineMomentViewModel.ResetModel()
|
||||||
|
|||||||
Reference in New Issue
Block a user