Код: Выделить всё
val viewModel = hiltViewModel()
Text("STATE: ${viewModel.state.activity?.invitation?.state?.title}")
Код: Выделить всё
@HiltViewModel
class ActivityViewModel @Inject constructor(
private val repository: ActivityRepository,
@ApplicationContext private val context: Context,
) : ViewModel() {
var state by mutableStateOf(ActivityScreenState())
private set
suspend fun fetchActivity(id: String) {
val resource = repository.fetchActivity(id)
val activity = resource.data
resource.errorMessage?.let {
Toast.makeText(context, it, Toast.LENGTH_SHORT).show()
}
state = state.copy(
isLoading = false,
activity = activity,
)
}
suspend fun accept(invitation: Invitation) {
val tempActivity = state.activity
tempActivity?.invitation?.state = InvitationState.ACCEPTED
state = state.copy(
activity = tempActivity,
)
}
}
Код: Выделить всё
data class ActivityScreenState(
val isLoading: Boolean = true,
val activity: Activity? = null,
)
data class Activity(
val id: String,
val invitation: Invitation?,
)
data class Invitation(
val id: String,
var state: InvitationState,
)
enum class InvitationState(val title: String) {
ACCEPTED("accepted"),
DECLINED("declined"),
}
Я пробовал искать, но не смог найти то, что мне нужно. делаю неправильно. Также выяснилось, что он перекомпоновывается только в том случае, если я аннулирую активность внутри ActivityScreenState.
Я делаю что-то неправильно или это ошибка?
Подробнее здесь: https://stackoverflow.com/questions/787 ... -object-is