package awais.instagrabber.viewmodels import android.os.Bundle import android.util.Log import androidx.lifecycle.* import androidx.savedstate.SavedStateRegistryOwner import awais.instagrabber.repositories.responses.User import awais.instagrabber.utils.extensions.TAG import awais.instagrabber.webservices.FriendshipRepository import awais.instagrabber.webservices.UserRepository class ProfileFragmentViewModel( state: SavedStateHandle, userRepository: UserRepository, friendshipRepository: FriendshipRepository, ) : ViewModel() { private val _profile = MutableLiveData() val profile: LiveData = _profile val username: LiveData = Transformations.map(profile) { return@map it?.username ?: "" } var currentUser: User? = null var isLoggedIn = false get() = currentUser != null private set init { Log.d(TAG, "${state.keys()} $userRepository $friendshipRepository") } } @Suppress("UNCHECKED_CAST") class ProfileFragmentViewModelFactory( private val userRepository: UserRepository, private val friendshipRepository: FriendshipRepository, owner: SavedStateRegistryOwner, defaultArgs: Bundle? = null, ) : AbstractSavedStateViewModelFactory(owner, defaultArgs) { override fun create( key: String, modelClass: Class, handle: SavedStateHandle, ): T { return ProfileFragmentViewModel(handle, userRepository, friendshipRepository) as T } }