Skip to content

Commit 401a88e

Browse files
authored
Add Toast to Remove Collaborator Image Button Long Click (#1760)
2 parents 9905816 + 13ba456 commit 401a88e

File tree

6 files changed

+32
-6
lines changed

6 files changed

+32
-6
lines changed

Simplenote/src/main/java/com/automattic/simplenote/CollaboratorsActivity.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class CollaboratorsActivity : ThemedAppCompatActivity() {
8585
private fun ActivityCollaboratorsBinding.setupViews() {
8686
setupToolbar()
8787

88-
collaboratorsList.adapter = CollaboratorsAdapter(viewModel::clickRemoveCollaborator)
88+
collaboratorsList.adapter = CollaboratorsAdapter(viewModel::clickRemoveCollaborator, viewModel::longClickRemoveCollaborator)
8989
collaboratorsList.isNestedScrollingEnabled = false
9090
collaboratorsList.layoutManager = LinearLayoutManager(this@CollaboratorsActivity)
9191
collaboratorsList.setEmptyView(empty.root)
@@ -134,6 +134,7 @@ class CollaboratorsActivity : ThemedAppCompatActivity() {
134134
when (event) {
135135
is Event.AddCollaboratorEvent -> showAddCollaboratorFragment(event)
136136
is Event.LongAddCollaboratorEvent -> showLongAddToast()
137+
is Event.LongRemoveCollaboratorEvent -> showLongRemoveToast()
137138
is Event.RemoveCollaboratorEvent -> showRemoveCollaboratorDialog(event)
138139
Event.CloseCollaboratorsEvent -> finish()
139140
}
@@ -147,6 +148,14 @@ class CollaboratorsActivity : ThemedAppCompatActivity() {
147148
toast(R.string.add_collaborator)
148149
}
149150

151+
private fun ActivityCollaboratorsBinding.showLongRemoveToast() {
152+
if (buttonAddCollaborator.isHapticFeedbackEnabled) {
153+
buttonAddCollaborator.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
154+
}
155+
156+
toast(R.string.remove_collaborator)
157+
}
158+
150159
private fun ActivityCollaboratorsBinding.handleCollaboratorsList(collaborators: List<String>) {
151160
hideEmptyView()
152161
val items = listOf(HeaderItem) + collaborators.map { CollaboratorItem(it) }

Simplenote/src/main/java/com/automattic/simplenote/utils/CollaboratorsAdapter.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.automattic.simplenote.databinding.CollaboratorsHeaderBinding
1010

1111
class CollaboratorsAdapter(
1212
private val onDeleteClick: (collaborator: String) -> Unit,
13+
private val onDeleteLongClick: () -> Unit,
1314
) : ListAdapter<CollaboratorsAdapter.CollaboratorDataItem, RecyclerView.ViewHolder>(DIFF_CALLBACK) {
1415

1516
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
@@ -20,7 +21,7 @@ class CollaboratorsAdapter(
2021
}
2122
ITEM_VIEW_TYPE_ITEM -> {
2223
val binding = CollaboratorRowBinding.inflate(LayoutInflater.from(parent.context), parent, false)
23-
CollaboratorViewHolder(binding, onDeleteClick)
24+
CollaboratorViewHolder(binding, onDeleteClick, onDeleteLongClick)
2425
}
2526
else -> throw ClassCastException("Unknown viewType $viewType")
2627
}
@@ -55,12 +56,17 @@ class CollaboratorsAdapter(
5556

5657
class CollaboratorViewHolder(
5758
private val binding: CollaboratorRowBinding,
58-
private val onDeleteClick: (collaborator: String) -> Unit
59+
private val onDeleteClick: (collaborator: String) -> Unit,
60+
private val onDeleteLongClick: () -> Unit
5961
): RecyclerView.ViewHolder(binding.root) {
6062

6163
fun bind(collaborator: CollaboratorDataItem.CollaboratorItem) {
6264
binding.collaboratorText.text = collaborator.email
6365
binding.collaboratorRemoveButton.setOnClickListener { onDeleteClick(collaborator.email) }
66+
binding.collaboratorRemoveButton.setOnLongClickListener {
67+
onDeleteLongClick()
68+
true
69+
}
6470
}
6571
}
6672

Simplenote/src/main/java/com/automattic/simplenote/viewmodels/CollaboratorsViewModel.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import com.automattic.simplenote.repositories.CollaboratorsActionResult
99
import com.automattic.simplenote.repositories.CollaboratorsRepository
1010
import dagger.hilt.android.lifecycle.HiltViewModel
1111
import kotlinx.coroutines.Job
12-
import kotlinx.coroutines.flow.collect
1312
import kotlinx.coroutines.launch
1413
import javax.inject.Inject
1514

@@ -70,6 +69,10 @@ class CollaboratorsViewModel @Inject constructor(
7069
_event.value = Event.RemoveCollaboratorEvent(collaborator)
7170
}
7271

72+
fun longClickRemoveCollaborator() {
73+
_event.postValue(Event.LongRemoveCollaboratorEvent)
74+
}
75+
7376
fun close() {
7477
_event.value = Event.CloseCollaboratorsEvent
7578
}
@@ -107,6 +110,7 @@ class CollaboratorsViewModel @Inject constructor(
107110
data class AddCollaboratorEvent(val noteId: String) : Event()
108111
object CloseCollaboratorsEvent : Event()
109112
object LongAddCollaboratorEvent : Event()
113+
object LongRemoveCollaboratorEvent : Event()
110114
data class RemoveCollaboratorEvent(val collaborator: String) : Event()
111115
}
112116
}

Simplenote/src/main/res/layout/collaborator_row.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
<ImageButton
2727
android:id="@+id/collaborator_remove_button"
28-
android:background="?attr/selectableItemBackgroundBorderless"
28+
android:background="?attr/actionBarItemBackground"
2929
android:contentDescription="@string/remove_collaborator"
3030
android:focusable="false"
3131
android:focusableInTouchMode="false"

Simplenote/src/test/java/com/automattic/simplenote/viewmodels/CollaboratorsViewModelTest.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,13 @@ class CollaboratorsViewModelTest {
142142
assertEquals(Event.RemoveCollaboratorEvent(collaborator), viewModel.event.value)
143143
}
144144

145+
@Test
146+
fun longClickRemoveCollaboratorShouldTriggerLongRemoveCollaboratorEvent() {
147+
viewModel.longClickRemoveCollaborator()
148+
149+
assertEquals(viewModel.event.value, Event.LongRemoveCollaboratorEvent)
150+
}
151+
145152
@Test
146153
fun closeShouldTriggerCloseCollaborators() {
147154
viewModel.close()

Simplenote/src/test/java/com/automattic/simplenote/viewmodels/TagsViewModelTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ class TagsViewModelTest {
151151
}
152152

153153
@Test
154-
fun lonClickAddTagShouldTriggerLongAddTagEvent() {
154+
fun longClickAddTagShouldTriggerLongAddTagEvent() {
155155
viewModel.longClickAddTag()
156156

157157
assertEquals(viewModel.event.value, TagsEvent.LongAddTagEvent)

0 commit comments

Comments
 (0)