Slide 103
Slide 103 text
class UsersFragment : BaseFragment(), MazeListener {
override val layoutId: Int = R.layout.fragment_users
private val maze by lazy { Maze(UsersModel()) }
@Inject lateinit var api: Api
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
MazeApp.comp.inject(this)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
maze.attach(this, arrayOf(
toolbar.navigationClicks()
.map { ClickEvent(R.id.homeAsUp) },
buttonUser.clicks()
.map { ClickEvent(R.id.buttonUser) }
))
}
override fun onDestroyView() {
maze.detach()
super.onDestroyView()
}
override fun main(sources: Sources) = usersMain(sources, api)
override fun render(prev: UsersModel, curr: UsersModel) {
if (curr.loading) {
progress.show()
return
}
progress.hide()
textName.text = curr.user.name
textEmail.text = curr.user.email
textName.setTextSize(TypedValue.COMPLEX_UNIT_SP, curr.nameSize)
textEmail.setTextSize(TypedValue.COMPLEX_UNIT_SP, curr.nameSize)
}
override fun navigate(navigation: Navigation) {
when (navigation) {
is Back -> activity?.onBackPressed()
}
}
override fun finish() = maze.finish()
override fun error(t: Throwable) {
t.printStackTrace()
}
}