Skip to content

Commit e9a12c1

Browse files
committed
fix: align contact detail actions
1 parent 57d0de6 commit e9a12c1

3 files changed

Lines changed: 19 additions & 62 deletions

File tree

app/src/main/java/to/bitkit/ui/screens/contacts/ContactDetailScreen.kt

Lines changed: 6 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import to.bitkit.ui.components.SecondaryButton
3939
import to.bitkit.ui.components.TagButton
4040
import to.bitkit.ui.components.Text13Up
4141
import to.bitkit.ui.components.VerticalSpacer
42-
import to.bitkit.ui.scaffold.AppAlertDialog
4342
import to.bitkit.ui.scaffold.AppTopBar
4443
import to.bitkit.ui.scaffold.DrawerNavIcon
4544
import to.bitkit.ui.scaffold.ScreenColumn
@@ -61,7 +60,6 @@ fun ContactDetailScreen(
6160
LaunchedEffect(Unit) {
6261
viewModel.effects.collect {
6362
when (it) {
64-
ContactDetailEffect.DeleteSuccess -> onBackClick()
6563
is ContactDetailEffect.OpenPayment -> onPayContact(it.paymentRequest, it.publicKey)
6664
}
6765
}
@@ -75,14 +73,11 @@ fun ContactDetailScreen(
7573
onClickPay = { viewModel.payContact() },
7674
onClickActivity = { uiState.profile?.publicKey?.let { onActivityClick(it) } },
7775
onClickShare = { uiState.profile?.publicKey?.let { shareText(context, it) } },
78-
onClickDelete = { viewModel.showDeleteConfirmation() },
7976
onClickRetry = { viewModel.loadContact() },
8077
onAddTag = { viewModel.showAddTagSheet() },
8178
onRemoveTag = { viewModel.removeTag(it) },
8279
onDismissAddTagSheet = { viewModel.dismissAddTagSheet() },
8380
onSaveTag = { viewModel.addTag(it) },
84-
onDismissDeleteDialog = { viewModel.dismissDeleteDialog() },
85-
onConfirmDelete = { viewModel.deleteContact() },
8681
)
8782
}
8883

@@ -95,14 +90,11 @@ private fun Content(
9590
onClickPay: () -> Unit,
9691
onClickActivity: () -> Unit,
9792
onClickShare: () -> Unit,
98-
onClickDelete: () -> Unit,
9993
onClickRetry: () -> Unit,
10094
onAddTag: () -> Unit,
10195
onRemoveTag: (Int) -> Unit,
10296
onDismissAddTagSheet: () -> Unit,
10397
onSaveTag: (String) -> Unit,
104-
onDismissDeleteDialog: () -> Unit,
105-
onConfirmDelete: () -> Unit,
10698
) {
10799
val currentProfile = uiState.profile
108100

@@ -124,24 +116,13 @@ private fun Content(
124116
onClickPay = onClickPay,
125117
onClickActivity = onClickActivity,
126118
onClickShare = onClickShare,
127-
onClickDelete = onClickDelete,
128119
onAddTag = onAddTag,
129120
onRemoveTag = onRemoveTag,
130121
)
131122
else -> EmptyState(onClickRetry = onClickRetry)
132123
}
133124
}
134125

135-
if (uiState.showDeleteDialog && currentProfile != null) {
136-
AppAlertDialog(
137-
title = stringResource(R.string.contacts__delete_confirm_title, currentProfile.name),
138-
text = stringResource(R.string.contacts__delete_confirm_text, currentProfile.name),
139-
confirmText = stringResource(R.string.common__delete_yes),
140-
onConfirm = onConfirmDelete,
141-
onDismiss = onDismissDeleteDialog,
142-
)
143-
}
144-
145126
if (uiState.showAddTagSheet) {
146127
AddTagSheet(
147128
onDismiss = onDismissAddTagSheet,
@@ -161,7 +142,6 @@ private fun ContactBody(
161142
onClickPay: () -> Unit,
162143
onClickActivity: () -> Unit,
163144
onClickShare: () -> Unit,
164-
onClickDelete: () -> Unit,
165145
onAddTag: () -> Unit,
166146
onRemoveTag: (Int) -> Unit,
167147
) {
@@ -190,11 +170,6 @@ private fun ContactBody(
190170
verticalArrangement = Arrangement.spacedBy(16.dp),
191171
modifier = Modifier.fillMaxWidth()
192172
) {
193-
ActionButton(
194-
onClick = onClickCopy,
195-
iconRes = R.drawable.ic_copy,
196-
modifier = Modifier.testTag("ContactCopy")
197-
)
198173
if (hasPublicPaymentEndpoint) {
199174
ActionButton(
200175
onClick = onClickPay,
@@ -204,9 +179,14 @@ private fun ContactBody(
204179
}
205180
ActionButton(
206181
onClick = onClickActivity,
207-
iconRes = R.drawable.ic_list_dashes,
182+
iconRes = R.drawable.ic_activity,
208183
modifier = Modifier.testTag("ContactActivity")
209184
)
185+
ActionButton(
186+
onClick = onClickCopy,
187+
iconRes = R.drawable.ic_copy,
188+
modifier = Modifier.testTag("ContactCopy")
189+
)
210190
ActionButton(
211191
onClick = onClickShare,
212192
iconRes = R.drawable.ic_share,
@@ -217,11 +197,6 @@ private fun ContactBody(
217197
iconRes = R.drawable.ic_edit,
218198
modifier = Modifier.testTag("ContactEdit")
219199
)
220-
ActionButton(
221-
onClick = onClickDelete,
222-
iconRes = R.drawable.ic_trash,
223-
modifier = Modifier.testTag("ContactDelete")
224-
)
225200
}
226201

227202
VerticalSpacer(32.dp)
@@ -320,14 +295,11 @@ private fun Preview() {
320295
onClickPay = {},
321296
onClickActivity = {},
322297
onClickShare = {},
323-
onClickDelete = {},
324298
onClickRetry = {},
325299
onAddTag = {},
326300
onRemoveTag = {},
327301
onDismissAddTagSheet = {},
328302
onSaveTag = {},
329-
onDismissDeleteDialog = {},
330-
onConfirmDelete = {},
331303
)
332304
}
333305
}

app/src/main/java/to/bitkit/ui/screens/contacts/ContactDetailViewModel.kt

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -178,32 +178,6 @@ class ContactDetailViewModel @Inject constructor(
178178
persistTags(newTags)
179179
}
180180

181-
fun showDeleteConfirmation() {
182-
_uiState.update { it.copy(showDeleteDialog = true) }
183-
}
184-
185-
fun dismissDeleteDialog() {
186-
_uiState.update { it.copy(showDeleteDialog = false) }
187-
}
188-
189-
fun deleteContact() {
190-
viewModelScope.launch {
191-
_uiState.update { it.copy(showDeleteDialog = false) }
192-
pubkyRepo.removeContact(publicKey)
193-
.onSuccess {
194-
ToastEventBus.send(
195-
type = Toast.ToastType.SUCCESS,
196-
title = context.getString(R.string.contacts__delete_success),
197-
testTag = "ContactDeletedToast",
198-
)
199-
_effects.emit(ContactDetailEffect.DeleteSuccess)
200-
}
201-
.onFailure {
202-
Logger.error("Failed to delete contact '$redactedPublicKey'", it, context = TAG)
203-
}
204-
}
205-
}
206-
207181
private fun persistTags(tags: List<String>) {
208182
val profile = _uiState.value.profile ?: return
209183
viewModelScope.launch {
@@ -228,10 +202,8 @@ data class ContactDetailUiState(
228202
val isLoading: Boolean = false,
229203
val hasPublicPaymentEndpoint: Boolean = false,
230204
val showAddTagSheet: Boolean = false,
231-
val showDeleteDialog: Boolean = false,
232205
)
233206

234207
sealed interface ContactDetailEffect {
235-
data object DeleteSuccess : ContactDetailEffect
236208
data class OpenPayment(val paymentRequest: String, val publicKey: String) : ContactDetailEffect
237209
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="16dp"
3+
android:height="16dp"
4+
android:viewportWidth="16"
5+
android:viewportHeight="16">
6+
<path
7+
android:pathData="M1.5,8H4.25L5.9,3.5L9.7,12.5L11.5,8H14.5"
8+
android:fillColor="@android:color/transparent"
9+
android:strokeColor="#FFB800"
10+
android:strokeWidth="1.5"
11+
android:strokeLineCap="round"
12+
android:strokeLineJoin="round" />
13+
</vector>

0 commit comments

Comments
 (0)