Skip to content

Instantly share code, notes, and snippets.

@hlnstepanova
Created December 14, 2020 18:49
Show Gist options
  • Save hlnstepanova/efdef6849be5d535f35e327406b01216 to your computer and use it in GitHub Desktop.
Save hlnstepanova/efdef6849be5d535f35e327406b01216 to your computer and use it in GitHub Desktop.
LoginFragment.kt
package de.comp.proj.androidApp.fragments.login
import android.content.DialogInterface
import android.os.Bundle
import android.view.*
import androidx.appcompat.app.AlertDialog
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import androidx.navigation.navGraphViewModels
import de.comp.proj.androidApp.R
import de.comp.proj.androidApp.databinding.FragmentLoginBinding
import de.comp.proj.shared.models.LoginModel
import dev.icerock.moko.mvvm.MvvmEventsFragment
import dev.icerock.moko.resources.desc.StringDesc
import org.koin.core.KoinComponent
import de.comp.proj.androidApp.BR
import dev.icerock.moko.mvvm.createViewModelFactory
import dev.icerock.moko.mvvm.dispatcher.eventsDispatcherOnMain
class LoginFragment : MvvmEventsFragment<FragmentLoginBinding, LoginModel, LoginModel.EventsListener>(), LoginModel.EventsListener, KoinComponent {
protected val loginModel: LoginModel by navGraphViewModels(R.id.nav_graph)
override val layoutId: Int = R.layout.fragment_login
override val viewModelClass: Class<LoginModel> = LoginModel::class.java
override val viewModelVariableId: Int = BR.viewModel
override fun viewModelFactory(): ViewModelProvider.Factory {
return createViewModelFactory {
loginModel
}
}
fun showErrorDialog(error: String){
val dialogBuilder = AlertDialog.Builder(activity!!)
val alert = dialogBuilder.setMessage(error)
.setCancelable(false)
.setPositiveButton(getString(R.string.ok)) { dialog, _ ->
dialog.dismiss()
}
.create()
alert.setTitle(getString(R.string.error))
alert.show()
}
override fun navigateToDeviceList(username: String) {
username.let {
this.findNavController().navigate(LoginFragmentDirections.actionLoginFragmentToDeviceListFragment(it))
}
}
override fun navigateToFavouritesList(url: String) {
url.let {
this.findNavController().navigate(LoginFragmentDirections.actionLoginFragmentToFavouriteListFragment(
"https://$it"))
}
}
override fun showError(error: StringDesc) {
error.let {
showErrorDialog(it.toString(activity!!))
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
inflater.inflate(R.menu.options_menu, menu)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment