Skip to content

Commit e95a379

Browse files
committed
Code Refactor
1 parent 95aceb2 commit e95a379

File tree

9 files changed

+58
-50
lines changed

9 files changed

+58
-50
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@
1515
android:theme="@style/PrimaryTheme.Custom">
1616
<activity
1717
android:name="com.stslex93.notes.MainActivity"
18-
android:exported="true"
19-
android:windowSoftInputMode="stateHidden">
18+
android:exported="true">
2019
<intent-filter>
2120
<action android:name="android.intent.action.MAIN" />
2221

app/src/main/java/com/stslex93/notes/ui/NoteViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import javax.inject.Inject
1212
class NoteViewModel @Inject constructor(private val repository: NoteRepository) : ViewModel() {
1313

1414
val allNotes: LiveData<List<Note>> = repository.getAll().asLiveData()
15-
fun note(id: String): LiveData<Note> = repository.getNote(id = id).asLiveData()
15+
fun getNoteById(id: String): LiveData<Note> = repository.getNote(id = id).asLiveData()
1616
fun getNotesByIds(ids: List<String>) = repository.getNotesById(ids = ids).asLiveData()
1717

1818
fun deleteNotesByIds(ids: List<String>) = viewModelScope.launch {

app/src/main/java/com/stslex93/notes/ui/edit/EditFragment.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import com.stslex93.notes.data.entity.Note
1414
import com.stslex93.notes.databinding.FragmentEditBinding
1515
import com.stslex93.notes.ui.NoteViewModel
1616
import com.stslex93.notes.utilites.BaseFragment
17-
import com.stslex93.notes.utilites.hideKeyBoard
17+
import com.stslex93.notes.utilites.hideKeyboard
1818
import com.stslex93.notes.utilites.observeOnce
1919
import java.text.SimpleDateFormat
2020

@@ -45,7 +45,7 @@ class EditFragment : BaseFragment() {
4545
savedInstanceState: Bundle?
4646
): View {
4747
_binding = FragmentEditBinding.inflate(inflater, container, false)
48-
requireActivity().hideKeyBoard()
48+
requireActivity().hideKeyboard()
4949
return binding.root
5050
}
5151

@@ -59,7 +59,7 @@ class EditFragment : BaseFragment() {
5959
SimpleDateFormat(getString(R.string.date_format)).format(System.currentTimeMillis())
6060
if (flagEdit) {
6161
binding.editCardView.transitionName = id
62-
viewModel.note(id).observeOnce(viewLifecycleOwner) { note ->
62+
viewModel.getNoteById(id).observeOnce(viewLifecycleOwner) { note ->
6363
editTitle = note.title
6464
editContent = note.content
6565
binding.editInputTitle.editText?.setText(editTitle)

app/src/main/java/com/stslex93/notes/ui/main/MainFragment.kt

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.os.Bundle
55
import android.view.LayoutInflater
66
import android.view.View
77
import android.view.ViewGroup
8+
import androidx.appcompat.widget.Toolbar
89
import androidx.core.content.res.ResourcesCompat
910
import androidx.core.graphics.blue
1011
import androidx.core.graphics.green
@@ -109,7 +110,7 @@ class MainFragment : BaseFragment(), View.OnClickListener {
109110
}
110111

111112
private fun initFields() {
112-
requireActivity().hideKeyBoard()
113+
requireActivity().hideKeyboard()
113114
setHasOptionsMenu(true)
114115
binding.fab.setOnClickListener(this)
115116
mainNoteClick.isChecking.observe(viewLifecycleOwner) {
@@ -119,11 +120,13 @@ class MainFragment : BaseFragment(), View.OnClickListener {
119120
binding.bottomBar.inflateMenu(R.menu.bottom_menu_remove)
120121
binding.fab.setImageDrawable(getDrawableIcon(R.drawable.ic_baseline_remove_24))
121122
} else {
122-
binding.bottomBar.menu.clear()
123-
binding.bottomBar.fabAlignmentMode = BottomAppBar.FAB_ALIGNMENT_MODE_CENTER
124-
binding.bottomBar.inflateMenu(R.menu.bottom_appbar)
125123
binding.fab.setImageDrawable(getDrawableIcon(R.drawable.ic_baseline_add_24))
126-
onMenuItemClick()
124+
binding.bottomBar.apply {
125+
menu.clear()
126+
fabAlignmentMode = BottomAppBar.FAB_ALIGNMENT_MODE_CENTER
127+
inflateMenu(R.menu.bottom_appbar)
128+
setOnMenuItemClickListener(menuItemClickListener)
129+
}
127130
}
128131
}
129132
}
@@ -145,11 +148,10 @@ class MainFragment : BaseFragment(), View.OnClickListener {
145148
}
146149

147150
private fun View.navigation(id: String, edit: Boolean) {
148-
val direction =
149-
MainFragmentDirections.actionNavHomeToNavEdit(
150-
id,
151-
edit
152-
)
151+
val direction = MainFragmentDirections.actionNavHomeToNavEdit(
152+
id,
153+
edit
154+
)
153155
if (this is MaterialCardView) this.isTransitionGroup = true
154156
val extras = FragmentNavigatorExtras(this to this.transitionName)
155157
findNavController().navigate(direction, extras)
@@ -159,24 +161,24 @@ class MainFragment : BaseFragment(), View.OnClickListener {
159161
{ card ->
160162
mainNoteClick.isChecking.observeOnce(viewLifecycleOwner) {
161163
if (it) {
162-
mainNoteClick.checkCardClick(card = card)
164+
mainNoteClick.apply { card.checkCardClick() }
163165
} else {
164166
card.navigation(id = card.transitionName, edit = true)
165167
}
166168
}
167169

168170
}, { card ->
169-
mainNoteClick.checkCardClick(card = card)
171+
mainNoteClick.apply { card.checkCardClick() }
170172
})
171173

172-
private fun onMenuItemClick() {
173-
binding.bottomBar.setOnMenuItemClickListener {
174+
private val BottomAppBar.menuItemClickListener: Toolbar.OnMenuItemClickListener
175+
get() = Toolbar.OnMenuItemClickListener {
174176
when (it.itemId) {
175177
R.id.appbar_search -> {
176-
binding.bottomBar.transitionName = getString(R.string.search_transition_name)
178+
transitionName = getString(R.string.search_transition_name)
177179
val directions = MainFragmentDirections.actionNavHomeToNavSearch()
178180
val extras =
179-
FragmentNavigatorExtras(binding.bottomBar to binding.bottomBar.transitionName)
181+
FragmentNavigatorExtras(this to transitionName)
180182
findNavController().navigate(directions, extras)
181183
false
182184
}
@@ -197,7 +199,6 @@ class MainFragment : BaseFragment(), View.OnClickListener {
197199
}
198200
}
199201
}
200-
}
201202

202203
override fun onDestroyView() {
203204
super.onDestroyView()

app/src/main/java/com/stslex93/notes/ui/main/MainNoteClick.kt

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,19 @@ import androidx.lifecycle.LiveData
44
import androidx.lifecycle.MutableLiveData
55
import com.google.android.material.card.MaterialCardView
66

7-
open class MainNoteClick {
7+
class MainNoteClick {
88

99
private val _checkNotesId = mutableListOf<String>()
10-
val checkNotesId: List<String> get() = _checkNotesId
11-
1210
private val _checkCards = mutableListOf<MaterialCardView>()
13-
1411
private val _isChecking: MutableLiveData<Boolean> = MutableLiveData(false)
12+
val checkNotesId: List<String> get() = _checkNotesId
1513
val isChecking: LiveData<Boolean> get() = _isChecking
1614

17-
fun checkCardClick(card: MaterialCardView) {
18-
if (card.isChecked) {
19-
card.cardCheckRemove()
15+
fun MaterialCardView.checkCardClick() {
16+
if (isChecked) {
17+
cardCheckRemove()
2018
} else {
21-
card.cardCheckAdd()
19+
cardCheckAdd()
2220
}
2321
}
2422

@@ -47,5 +45,4 @@ open class MainNoteClick {
4745
_checkCards.forEach { it.isChecked = false }
4846
_isChecking.value = false
4947
}
50-
5148
}

app/src/main/java/com/stslex93/notes/ui/search/SearchFragment.kt

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.stslex93.notes.ui.search
22

3+
import android.annotation.SuppressLint
34
import android.graphics.Color
45
import android.os.Bundle
56
import android.view.LayoutInflater
67
import android.view.View
78
import android.view.ViewGroup
9+
import androidx.appcompat.widget.SearchView
810
import androidx.core.view.doOnPreDraw
911
import androidx.fragment.app.viewModels
1012
import androidx.navigation.fragment.FragmentNavigatorExtras
@@ -31,7 +33,7 @@ class SearchFragment : BaseFragment() {
3133
private lateinit var gridLayoutManager: StaggeredGridLayoutManager
3234
private val noteViewModel: NoteViewModel by viewModels { viewModelFactory.get() }
3335

34-
36+
@SuppressLint("ResourceType")
3537
override fun onCreate(savedInstanceState: Bundle?) {
3638
super.onCreate(savedInstanceState)
3739
sharedElementEnterTransition = MaterialContainerTransform().apply {
@@ -52,25 +54,26 @@ class SearchFragment : BaseFragment() {
5254
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
5355
super.onViewCreated(view, savedInstanceState)
5456
initRecyclerView()
55-
initSearchView()
57+
binding.searchView.apply {
58+
setOnQueryTextListener(listener)
59+
}
60+
binding.searchFragmentReturn.setOnClickListener { findNavController().popBackStack() }
5661
}
5762

58-
private fun initSearchView() {
59-
val searchView = binding.searchView
60-
searchView.setOnQueryTextListener(
61-
OnQueryTextListener(searchView) { newText ->
62-
noteViewModel.allNotes.observe(viewLifecycleOwner) { list ->
63-
adapter.setNotes(
64-
list.filter { it.checkTitleContentContains(newText) }
65-
)
66-
}
67-
})
68-
}
63+
private val SearchView.listener: OnQueryTextListener
64+
get() = OnQueryTextListener(this) { newText ->
65+
noteViewModel.allNotes.observe(viewLifecycleOwner) { list ->
66+
adapter.setNotes(
67+
list.filter { it.checkTitleContentContains(newText) }
68+
)
69+
}
70+
}
6971

7072
private fun initRecyclerView() {
7173
recycler = binding.searchFragmentRecyclerView
7274
adapter = MainAdapter(clickListener)
73-
gridLayoutManager = StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)
75+
gridLayoutManager =
76+
StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)
7477
noteViewModel.allNotes.observe(viewLifecycleOwner) {
7578
adapter.setNotes(it)
7679
}
@@ -98,7 +101,6 @@ class SearchFragment : BaseFragment() {
98101
findNavController().navigate(direction, extras)
99102
}
100103

101-
102104
override fun onDestroyView() {
103105
super.onDestroyView()
104106
_binding = null

app/src/main/java/com/stslex93/notes/utilites/funs.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ val Context.appComponent: AppComponent
2323
fun Fragment.getDrawableIcon(id: Int) =
2424
ResourcesCompat.getDrawable(resources, id, resources.newTheme())
2525

26-
fun FragmentActivity.hideKeyBoard() {
26+
fun FragmentActivity.hideKeyboard() {
2727
val imm: InputMethodManager =
2828
this.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
2929
imm.hideSoftInputFromWindow(this.window.decorView.windowToken, 0)

app/src/main/res/layout/fragment_search.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
<androidx.appcompat.widget.SearchView
1616
android:id="@+id/searchView"
17+
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
1718
android:layout_width="match_parent"
1819
android:layout_height="wrap_content"
1920
app:layout_constraintStart_toStartOf="parent"
@@ -32,5 +33,14 @@
3233

3334
</androidx.constraintlayout.widget.ConstraintLayout>
3435

36+
<com.google.android.material.floatingactionbutton.FloatingActionButton
37+
android:id="@+id/search_fragment_return"
38+
android:layout_width="wrap_content"
39+
android:layout_height="wrap_content"
40+
android:layout_gravity="bottom|end"
41+
android:layout_margin="@dimen/primary_padding"
42+
android:contentDescription="@string/description_return"
43+
android:src="@drawable/ic_baseline_reply_24" />
44+
3545

3646
</com.google.android.material.card.MaterialCardView>

app/src/main/res/navigation/nav_graph.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@
3434
tools:layout="@layout/fragment_search">
3535
<action
3636
android:id="@+id/action_nav_search_to_nav_edit"
37-
app:destination="@id/nav_edit"
38-
app:popUpTo="@id/nav_home" />
37+
app:destination="@id/nav_edit" />
3938
</fragment>
4039

4140
</navigation>

0 commit comments

Comments
 (0)