1+ package org.reduxkotlin.example.todos
2+
3+ import android.os.Bundle
4+ import androidx.appcompat.app.AppCompatActivity
5+ import kotlinx.android.synthetic.main.activity_main.*
6+ import org.reduxkotlin.StoreSubscription
7+ import org.reduxkotlin.createStore
8+ import org.reduxkotlin.examples.todos.*
9+
10+ /* *
11+ * This is a sample of basic redux behavior.
12+ * This is NOT best practice for structuring a multiplatform App.
13+ */
14+
15+
16+ val store = createStore(::rootReducer, AppState ())
17+
18+ class MainActivity : AppCompatActivity () {
19+ private lateinit var storeSubscription: StoreSubscription
20+ private var adapter = TodoAdapter ()
21+
22+ override fun onCreate (savedInstanceState : Bundle ? ) {
23+ super .onCreate(savedInstanceState)
24+ setContentView(R .layout.activity_main)
25+ storeSubscription = store.subscribe { render(store.state) }
26+ btnAddTodo.setOnClickListener {
27+ val todoText = etTodo.text.toString()
28+ etTodo.text.clear()
29+ store.dispatch(AddTodo (todoText))
30+ }
31+ btnSelectAll.setOnClickListener { store.dispatch(SetVisibilityFilter (VisibilityFilter .SHOW_ALL )) }
32+ btnActive.setOnClickListener { store.dispatch(SetVisibilityFilter (VisibilityFilter .SHOW_ACTIVE )) }
33+ btnCompleted.setOnClickListener { store.dispatch(SetVisibilityFilter (VisibilityFilter .SHOW_COMPLETED )) }
34+
35+ recyclerView.adapter = adapter
36+
37+ render(store.state)
38+ }
39+
40+ private fun render (state : AppState ) {
41+ adapter.submitList(state.visibleTodos)
42+ setFilterButtons(state.visibilityFilter)
43+ }
44+
45+ private fun setFilterButtons (visibilityFilter : VisibilityFilter ) =
46+ when (visibilityFilter) {
47+ VisibilityFilter .SHOW_ALL -> {
48+ btnSelectAll.isSelected = true
49+ btnActive.isSelected = false
50+ btnCompleted.isSelected = false
51+ }
52+ VisibilityFilter .SHOW_ACTIVE -> {
53+ btnActive.isSelected = true
54+ btnSelectAll.isSelected = false
55+ btnCompleted.isSelected = false
56+ }
57+ VisibilityFilter .SHOW_COMPLETED -> {
58+ btnCompleted.isSelected = true
59+ btnSelectAll.isSelected = false
60+ btnActive.isSelected = false
61+ }
62+ }
63+ }
0 commit comments