2021-06-05 10:36:00 +00:00
|
|
|
package awais.instagrabber.viewmodels
|
|
|
|
|
2021-06-09 00:09:40 +00:00
|
|
|
import android.os.Bundle
|
|
|
|
import android.util.Log
|
2021-06-05 10:36:00 +00:00
|
|
|
import androidx.lifecycle.*
|
2021-06-09 00:09:40 +00:00
|
|
|
import androidx.savedstate.SavedStateRegistryOwner
|
2021-06-05 10:36:00 +00:00
|
|
|
import awais.instagrabber.repositories.responses.User
|
2021-06-09 00:09:40 +00:00
|
|
|
import awais.instagrabber.utils.extensions.TAG
|
2021-06-10 08:03:24 +00:00
|
|
|
import awais.instagrabber.webservices.FriendshipRepository
|
2021-06-12 01:07:31 +00:00
|
|
|
import awais.instagrabber.webservices.MediaRepository
|
2021-06-11 23:54:00 +00:00
|
|
|
import awais.instagrabber.webservices.StoriesRepository
|
2021-06-09 00:09:40 +00:00
|
|
|
import awais.instagrabber.webservices.UserRepository
|
2021-06-05 10:36:00 +00:00
|
|
|
|
|
|
|
class ProfileFragmentViewModel(
|
|
|
|
state: SavedStateHandle,
|
2021-06-09 00:09:40 +00:00
|
|
|
userRepository: UserRepository,
|
2021-06-10 08:03:24 +00:00
|
|
|
friendshipRepository: FriendshipRepository,
|
2021-06-11 23:54:00 +00:00
|
|
|
storiesRepository: StoriesRepository,
|
2021-06-12 01:07:31 +00:00
|
|
|
mediaRepository: MediaRepository,
|
2021-06-05 10:36:00 +00:00
|
|
|
) : ViewModel() {
|
|
|
|
private val _profile = MutableLiveData<User?>()
|
|
|
|
val profile: LiveData<User?> = _profile
|
|
|
|
val username: LiveData<String> = Transformations.map(profile) { return@map it?.username ?: "" }
|
|
|
|
|
|
|
|
var currentUser: User? = null
|
|
|
|
var isLoggedIn = false
|
|
|
|
get() = currentUser != null
|
|
|
|
private set
|
|
|
|
|
|
|
|
init {
|
2021-06-12 01:07:31 +00:00
|
|
|
Log.d(TAG, "${state.keys()} $userRepository $friendshipRepository $storiesRepository $mediaRepository")
|
2021-06-09 00:09:40 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Suppress("UNCHECKED_CAST")
|
|
|
|
class ProfileFragmentViewModelFactory(
|
|
|
|
private val userRepository: UserRepository,
|
2021-06-10 08:03:24 +00:00
|
|
|
private val friendshipRepository: FriendshipRepository,
|
2021-06-11 23:54:00 +00:00
|
|
|
private val storiesRepository: StoriesRepository,
|
2021-06-12 01:07:31 +00:00
|
|
|
private val mediaRepository: MediaRepository,
|
2021-06-09 00:09:40 +00:00
|
|
|
owner: SavedStateRegistryOwner,
|
|
|
|
defaultArgs: Bundle? = null,
|
|
|
|
) : AbstractSavedStateViewModelFactory(owner, defaultArgs) {
|
|
|
|
override fun <T : ViewModel> create(
|
|
|
|
key: String,
|
|
|
|
modelClass: Class<T>,
|
|
|
|
handle: SavedStateHandle,
|
|
|
|
): T {
|
2021-06-11 23:54:00 +00:00
|
|
|
return ProfileFragmentViewModel(
|
|
|
|
handle,
|
|
|
|
userRepository,
|
|
|
|
friendshipRepository,
|
2021-06-12 01:07:31 +00:00
|
|
|
storiesRepository,
|
|
|
|
mediaRepository,
|
2021-06-11 23:54:00 +00:00
|
|
|
) as T
|
2021-06-05 10:36:00 +00:00
|
|
|
}
|
|
|
|
}
|