Skip to content

Instantly share code, notes, and snippets.

@ivanalvarado
Created June 10, 2019 23:28
Show Gist options
  • Select an option

  • Save ivanalvarado/ac37fe6213fd6b073b9ec38576cdaeed to your computer and use it in GitHub Desktop.

Select an option

Save ivanalvarado/ac37fe6213fd6b073b9ec38576cdaeed to your computer and use it in GitHub Desktop.

Revisions

  1. ivanalvarado created this gist Jun 10, 2019.
    25 changes: 25 additions & 0 deletions UserDetailViewModel.kt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,25 @@
    class UserDetailViewModel @AssistedInject constructor(
    private val userRepository: UserRepository,
    @Assisted private val userId: Int
    ) : ViewModel() {

    private val reloadTrigger = MutableLiveData<Boolean>()
    private val userDetail: LiveData<UserDetailModel> = Transformations.switchMap(reloadTrigger) {
    userRepository.getUserDetail(userId.toString(), reloadTrigger.value!!)
    }

    init {
    refreshUserDetail()
    }

    fun getUserDetail(): LiveData<UserDetailModel> = userDetail

    fun refreshUserDetail(forceRefresh: Boolean = false) {
    reloadTrigger.value = forceRefresh
    }

    @AssistedInject.Factory
    interface Factory {
    fun create(userId: Int): UserDetailViewModel
    }
    }