From c6957adae9cf88400da034f3d2da4ac250bb19b8 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Thu, 7 Jul 2022 11:16:06 +0200 Subject: [PATCH] properly clear data when logging out --- .../habitica/data/repositories/TaskLocalRepository.kt | 7 +++++++ .../habitica/data/repositories/TaskRepository.kt | 1 + .../habitica/data/repositories/UserLocalRepository.kt | 11 ++++++----- .../habitica/data/repositories/UserRepository.kt | 4 ++++ .../wearos/habitica/ui/viewmodels/LoginViewModel.kt | 4 ++-- .../habitica/ui/viewmodels/SettingsViewModel.kt | 2 ++ 6 files changed, 22 insertions(+), 7 deletions(-) diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskLocalRepository.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskLocalRepository.kt index d4ce7c5b3..b0d08854a 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskLocalRepository.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskLocalRepository.kt @@ -106,4 +106,11 @@ class TaskLocalRepository @Inject constructor() { TaskType.REWARD.value to (tasks[TaskType.REWARD]?.value?.size ?: 0), ) } + + fun clearData() { + tasks.values.forEach { + it.value = null + } + taskCountHelperValue.value = 0 + } } \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskRepository.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskRepository.kt index 5f1efd5f5..03c070cc3 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskRepository.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskRepository.kt @@ -78,4 +78,5 @@ class TaskRepository @Inject constructor( fun getTaskCounts() = localRepository.getTaskCounts() fun getActiveTaskCounts() = localRepository.getActiveTaskCounts() + fun clearData() = localRepository.clearData() } \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/UserLocalRepository.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/UserLocalRepository.kt index b47a4d143..b353c9173 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/UserLocalRepository.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/UserLocalRepository.kt @@ -3,18 +3,19 @@ package com.habitrpg.wearos.habitica.data.repositories import androidx.lifecycle.MutableLiveData import androidx.lifecycle.asFlow import com.habitrpg.wearos.habitica.models.user.User -import kotlinx.coroutines.flow.Flow import javax.inject.Inject import javax.inject.Singleton @Singleton class UserLocalRepository @Inject constructor() { - private val user = MutableLiveData() - fun getUser(): Flow { - return user.asFlow() - } + private val user = MutableLiveData() + fun getUser() = user.asFlow() fun saveUser(user: User) { this.user.value = user } + + fun clearData() { + user.value = null + } } \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/UserRepository.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/UserRepository.kt index 891c6b133..af55d09db 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/UserRepository.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/UserRepository.kt @@ -39,4 +39,8 @@ class UserRepository @Inject constructor( suspend fun runCron() { apiClient.runCron() } + + fun clearData() { + localRepository.clearData() + } } \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/LoginViewModel.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/LoginViewModel.kt index 9c2100d56..3c3d90950 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/LoginViewModel.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/LoginViewModel.kt @@ -126,8 +126,8 @@ class LoginViewModel @Inject constructor(userRepository: UserRepository, saveTokens(userAuthResponse.apiToken, userAuthResponse.id) } catch (e: Exception) { } - val user = userRepository.retrieveUser() - taskRepository.retrieveTasks(user?.tasksOrder) + val user = userRepository.retrieveUser(true) + taskRepository.retrieveTasks(user?.tasksOrder, true) onLoginCompleted() } diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/SettingsViewModel.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/SettingsViewModel.kt index 6a75c919f..23e902ded 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/SettingsViewModel.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/SettingsViewModel.kt @@ -26,6 +26,8 @@ class SettingsViewModel @Inject constructor(userRepository: UserRepository, clear() } apiClient.updateAuthenticationCredentials(null, null) + userRepository.clearData() + taskRepository.clearData() } fun resyncData() {