diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/models/Preferences.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/models/Preferences.kt index 3e6ef05a5..3b6094058 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/models/Preferences.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/models/Preferences.kt @@ -5,13 +5,13 @@ import com.squareup.moshi.JsonClass @JsonClass(generateAdapter = true) class Preferences: AvatarPreferences { - override val hair: Hair? = null - override val costume: Boolean = false - override val sleep: Boolean = false - override val shirt: String? = null - override val skin: String? = null - override val size: String? = null - override val background: String? = null - override val chair: String? = null - override val disableClasses: Boolean = false + override var hair: Hair? = null + override var costume: Boolean = false + override var sleep: Boolean = false + override var shirt: String? = null + override var skin: String? = null + override var size: String? = null + override var background: String? = null + override var chair: String? = null + override var disableClasses: Boolean = false } diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/models/User.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/models/User.kt index cdcd4021a..53e619712 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/models/User.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/models/User.kt @@ -12,6 +12,9 @@ open class Gear { @JsonClass(generateAdapter = true) class Items { var gear: Gear? = null + + var currentMount: String? = null + var currentPet: String? = null } @JsonClass(generateAdapter = true) @@ -21,8 +24,10 @@ class Profile { @JsonClass(generateAdapter = true) class User: Avatar { - override var currentMount: String? = null - override var currentPet: String? = null + override val currentMount: String? + get() = items?.currentMount + override val currentPet: String? + get() = items?.currentPet override var sleep: Boolean = false override var stats: Stats? = null override var preferences: Preferences? = null diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/AvatarActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/AvatarActivity.kt index 7b9bc15ae..c6473abde 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/AvatarActivity.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/AvatarActivity.kt @@ -1,12 +1,21 @@ package com.habitrpg.wearos.habitica.ui.activities import android.os.Bundle +import androidx.activity.viewModels import com.habitrpg.wearos.habitica.databinding.ActivityAvatarBinding +import com.habitrpg.wearos.habitica.ui.viewmodels.AvatarViewModel +import dagger.hilt.android.AndroidEntryPoint +@AndroidEntryPoint class AvatarActivity: BaseActivity() { + val viewModel: AvatarViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { binding = ActivityAvatarBinding.inflate(layoutInflater) super.onCreate(savedInstanceState) + + viewModel.user.observe(this) { + binding.root.setAvatar(it) + } } } \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt index 2afbbbdd6..1ddca6f42 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt @@ -53,7 +53,7 @@ class MainActivity : BaseActivity() { AppCompatResources.getDrawable(this, R.drawable.ic_avatar), ContextCompat.getColor(this, R.color.brand_400) ) { - + openAvatarActivity() }, MenuItem( "Stats", diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/AvatarViewModel.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/AvatarViewModel.kt new file mode 100644 index 000000000..36cf02489 --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/AvatarViewModel.kt @@ -0,0 +1,22 @@ +package com.habitrpg.wearos.habitica.ui.viewmodels + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.viewModelScope +import com.habitrpg.wearos.habitica.data.repositories.UserRepository +import com.habitrpg.wearos.habitica.models.User +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class AvatarViewModel @Inject constructor(userRepository: UserRepository) : BaseViewModel(userRepository) { + val _user = MutableLiveData() + val user: LiveData = _user + + init { + viewModelScope.launch { + _user.value = userRepository.retrieveUser() + } + } +} \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/BaseViewModel.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/BaseViewModel.kt index 09707efbd..747aaa515 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/BaseViewModel.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/BaseViewModel.kt @@ -3,4 +3,4 @@ package com.habitrpg.wearos.habitica.ui.viewmodels import androidx.lifecycle.ViewModel import com.habitrpg.wearos.habitica.data.repositories.UserRepository -open class BaseViewModel(val userRepository: UserRepository): ViewModel() \ No newline at end of file +open class BaseViewModel(val userRepository: UserRepository): ViewModel() \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/MainViewModel.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/MainViewModel.kt index bfc54a77f..997c6f6c9 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/MainViewModel.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/MainViewModel.kt @@ -1,5 +1,6 @@ package com.habitrpg.wearos.habitica.ui.viewmodels +import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope import com.habitrpg.wearos.habitica.data.repositories.UserRepository @@ -10,11 +11,12 @@ import javax.inject.Inject @HiltViewModel class MainViewModel @Inject constructor(userRepository: UserRepository) : BaseViewModel(userRepository) { - val user = MutableLiveData() + val _user = MutableLiveData() + val user: LiveData = _user init { viewModelScope.launch { - user.value = userRepository.retrieveUser() + _user.value = userRepository.retrieveUser() } } } \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/TaskListViewModel.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/TaskListViewModel.kt index 4683f204c..12dae28ad 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/TaskListViewModel.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/TaskListViewModel.kt @@ -1,5 +1,6 @@ package com.habitrpg.wearos.habitica.ui.viewmodels +import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope @@ -17,12 +18,14 @@ class TaskListViewModel @Inject constructor( private val taskRepository: TaskRepository, userRepository: UserRepository ) : BaseViewModel(userRepository) { - val tasks = MutableLiveData>() + val _tasks = MutableLiveData>() + val tasks: LiveData> = _tasks + val taskType = TaskType.from(savedStateHandle.get("task_type")) init { viewModelScope.launch { - tasks.value = taskRepository.retrieveTasks()?.tasks?.values?.filter { + _tasks.value = taskRepository.retrieveTasks()?.tasks?.values?.filter { it.type == taskType }?.toList() } diff --git a/wearos/src/main/res/layout/activity_avatar.xml b/wearos/src/main/res/layout/activity_avatar.xml index d829e291c..0a42555c7 100644 --- a/wearos/src/main/res/layout/activity_avatar.xml +++ b/wearos/src/main/res/layout/activity_avatar.xml @@ -1,7 +1,7 @@ - + android:layout_height="match_parent" + android:layout_gravity="center"> - \ No newline at end of file + \ No newline at end of file