Skip to content

Commit b4df540

Browse files
authored
Improvements (#165)
* Fix modification of pinned calculations * Move Reuse action from dialog to item click * Fix popups: prevent popup from reopening on second click * Bump compileSdk, targetSdk to 36 * Keep reuse option in bottom sheet * Fix ru title in quick bottom sheet * Fix tap/long press descriptions in quick onboarding * Bump ark about to 0.2.1
1 parent 04a5507 commit b4df540

File tree

11 files changed

+83
-31
lines changed

11 files changed

+83
-31
lines changed

core/presentation/src/main/res/values-ru/strings.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@
145145
<string name="delete">Удалить</string>
146146
<string name="re_use">Повторно использовать</string>
147147
<string name="edit">Редактировать</string>
148-
<string name="options">Параметры</string>
148+
<string name="options">Опции</string>
149149
<string name="oops_request_time_out">Упс, время запроса истекло!</string>
150150
<string name="check_connection_and_refresh">Пожалуйста, проверьте ваше соединение и обновите страницу, чтобы попробовать снова.</string>
151151
<string name="refresh">Обновить</string>
@@ -182,7 +182,7 @@
182182
<string name="onboarding_quick_calc_2_desc">Быстро удалите расчёт, проведя пальцем влево.</string>
183183
<string name="onboarding_quick_calc_3_title">Проведите пальцем по закрепленному расчёту вправо, чтобы открепить</string>
184184
<string name="onboarding_quick_calc_3_desc">Открепите расчёт, чтобы переместить его в историю расчётов.</string>
185-
<string name="onboarding_quick_calc_4_title">Контекстное меню расчёта</string>
186-
<string name="onboarding_quick_calc_4_desc">Нажмите, чтобы открыть полное меню.</string>
185+
<string name="onboarding_quick_calc_4_title">Нажмите, чтобы переиспользовать расчёт</string>
186+
<string name="onboarding_quick_calc_4_desc">Удерживайте, чтобы открыть полное меню.</string>
187187

188188
</resources>

core/presentation/src/main/res/values/strings.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,8 @@
185185
<string name="onboarding_quick_calc_2_desc">Delete a calculation quickly by swiping left.</string>
186186
<string name="onboarding_quick_calc_3_title">Swipe the pinned calculation to the right to unpin</string>
187187
<string name="onboarding_quick_calc_3_desc">Unpin a calculation to move it to calculation history.</string>
188-
<string name="onboarding_quick_calc_4_title">Calculation context menu</string>
189-
<string name="onboarding_quick_calc_4_desc">Tap to show the complete menu.</string>
188+
<string name="onboarding_quick_calc_4_title">Tap to reuse the calculation</string>
189+
<string name="onboarding_quick_calc_4_desc">Long press to show the complete menu.</string>
190190

191191

192192
</resources>

feature/pairalert/src/main/java/dev/arkbuilders/rate/feature/pairalert/presentation/add/AddPairAlertScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ private fun Content(
185185
) {
186186
Popup(
187187
offset = IntOffset(0, 0),
188-
properties = PopupProperties(),
188+
properties = PopupProperties(focusable = true),
189189
onDismissRequest = { showGroupsPopup = false },
190190
) {
191191
GroupSelectPopup(

feature/portfolio/src/main/java/dev/arkbuilders/rate/feature/portfolio/presentation/add/AddAssetScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ private fun Content(
203203
) {
204204
Popup(
205205
offset = IntOffset(0, 0),
206-
properties = PopupProperties(),
206+
properties = PopupProperties(focusable = true),
207207
onDismissRequest = { showGroupsPopup = false },
208208
) {
209209
GroupSelectPopup(

feature/quick/src/main/java/dev/arkbuilders/rate/feature/quick/presentation/add/AddQuickScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ private fun Content(
241241
) {
242242
Popup(
243243
offset = IntOffset(0, 0),
244-
properties = PopupProperties(),
244+
properties = PopupProperties(focusable = true),
245245
onDismissRequest = { showGroupsPopup = false },
246246
) {
247247
GroupSelectPopup(

feature/quick/src/main/java/dev/arkbuilders/rate/feature/quick/presentation/add/AddQuickViewModel.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,13 @@ class AddQuickViewModel(
220220
0
221221
}
222222

223+
val pinnedDate =
224+
if (id == quickCalculationId) {
225+
quickRepo.getById(id)?.pinnedDate
226+
} else {
227+
null
228+
}
229+
223230
val group = groupRepo.getByNameOrCreateNew(state.group.name, GroupFeatureType.Quick)
224231

225232
val quick =
@@ -229,7 +236,7 @@ class AddQuickViewModel(
229236
amount = from.value.toBigDecimalArk(),
230237
to = state.currencies.drop(1).map { it.toAmount() },
231238
calculatedDate = OffsetDateTime.now(),
232-
pinnedDate = null,
239+
pinnedDate = pinnedDate,
233240
group = group,
234241
)
235242
val newId = quickRepo.insert(quick)

feature/quick/src/main/java/dev/arkbuilders/rate/feature/quick/presentation/main/HandleQuickSideEffect.kt

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ import androidx.compose.runtime.LaunchedEffect
88
import androidx.compose.runtime.mutableStateOf
99
import androidx.compose.runtime.remember
1010
import androidx.compose.runtime.snapshotFlow
11+
import com.ramcosta.composedestinations.generated.quick.destinations.AddQuickScreenDestination
12+
import com.ramcosta.composedestinations.generated.quick.destinations.AddQuickScreenDestination.invoke
13+
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
1114
import dev.arkbuilders.rate.core.presentation.CoreRString
1215
import dev.arkbuilders.rate.core.presentation.R
1316
import dev.arkbuilders.rate.core.presentation.ui.NotifyAddedSnackbarVisuals
@@ -35,6 +38,7 @@ fun HandleQuickSideEffects(
3538
pagerState: PagerState,
3639
snackState: SnackbarHostState,
3740
ctx: Context,
41+
navigator: DestinationsNavigator,
3842
externalNavigator: QuickExternalNavigator,
3943
) {
4044
val selectTabEffect = remember { mutableStateOf<QuickScreenEffect.SelectTab?>(null) }
@@ -44,10 +48,13 @@ fun HandleQuickSideEffects(
4448
selectTabEffect.value = effect
4549
} else {
4650
handleQuickSideEffect(
51+
state = state,
4752
effect = effect,
4853
viewModel = viewModel,
54+
pagerState = pagerState,
4955
snackState = snackState,
5056
ctx = ctx,
57+
navigator = navigator,
5158
externalNavigator = externalNavigator,
5259
)
5360
}
@@ -82,10 +89,13 @@ fun HandleQuickSideEffects(
8289
}
8390

8491
suspend fun handleQuickSideEffect(
92+
state: QuickScreenState,
8593
effect: QuickScreenEffect,
8694
viewModel: QuickViewModel,
95+
pagerState: PagerState,
8796
snackState: SnackbarHostState,
8897
ctx: Context,
98+
navigator: DestinationsNavigator,
8999
externalNavigator: QuickExternalNavigator,
90100
) {
91101
when (effect) {
@@ -146,5 +156,24 @@ suspend fun handleQuickSideEffect(
146156
}
147157
QuickScreenEffect.NavigateToCalculationOnboarding ->
148158
externalNavigator.navigateToCalcOnboarding()
159+
160+
is QuickScreenEffect.NavigateToEdit -> {
161+
navigator.navigate(
162+
AddQuickScreenDestination(
163+
quickCalculationId = effect.calc.id,
164+
reuseNotEdit = false,
165+
groupId = state.pages.getOrNull(pagerState.currentPage)?.group?.id,
166+
),
167+
)
168+
}
169+
is QuickScreenEffect.NavigateToReuse -> {
170+
navigator.navigate(
171+
AddQuickScreenDestination(
172+
quickCalculationId = effect.calc.id,
173+
reuseNotEdit = true,
174+
groupId = state.pages.getOrNull(pagerState.currentPage)?.group?.id,
175+
),
176+
)
177+
}
149178
}
150179
}

feature/quick/src/main/java/dev/arkbuilders/rate/feature/quick/presentation/main/QuickItem.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
@file:OptIn(ExperimentalFoundationApi::class)
2+
13
package dev.arkbuilders.rate.feature.quick.presentation.main
24

5+
import androidx.compose.foundation.ExperimentalFoundationApi
36
import androidx.compose.foundation.background
47
import androidx.compose.foundation.border
58
import androidx.compose.foundation.clickable
9+
import androidx.compose.foundation.combinedClickable
610
import androidx.compose.foundation.layout.Arrangement
711
import androidx.compose.foundation.layout.Box
812
import androidx.compose.foundation.layout.Column
@@ -43,6 +47,7 @@ fun QuickItem(
4347
to: List<Amount>,
4448
dateText: String,
4549
onClick: () -> Unit,
50+
onLongClick: () -> Unit,
4651
) {
4752
var expanded by remember {
4853
mutableStateOf(false)
@@ -53,9 +58,10 @@ fun QuickItem(
5358
Modifier
5459
.fillMaxWidth()
5560
.background(Color.White)
56-
.clickable {
57-
onClick()
58-
},
61+
.combinedClickable(
62+
onClick = { onClick() },
63+
onLongClick = { onLongClick() },
64+
),
5965
) {
6066
val (icons, content, chevron) = createRefs()
6167
Row(

feature/quick/src/main/java/dev/arkbuilders/rate/feature/quick/presentation/main/QuickScreen.kt

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ fun QuickScreen(
109109
pagerState = pagerState,
110110
snackState = snackState,
111111
ctx = ctx,
112+
navigator = navigator,
112113
externalNavigator = externalNavigator,
113114
)
114115

@@ -151,6 +152,9 @@ fun QuickScreen(
151152
onFilterChanged = viewModel::onFilterChanged,
152153
onDelete = viewModel::onDelete,
153154
onClick = {
155+
viewModel.onReuse(it)
156+
},
157+
onLongClick = {
154158
viewModel.onShowGroupOptions(it)
155159
},
156160
onPin = viewModel::onPin,
@@ -173,23 +177,8 @@ fun QuickScreen(
173177
calculation = it.calculation,
174178
onPin = viewModel::onPin,
175179
onUnpin = viewModel::onUnpin,
176-
onEdit = {
177-
navigator.navigate(
178-
AddQuickScreenDestination(
179-
quickCalculationId = it.id,
180-
reuseNotEdit = false,
181-
groupId = getCurrentGroup()?.id,
182-
),
183-
)
184-
},
185-
onReuse = {
186-
navigator.navigate(
187-
AddQuickScreenDestination(
188-
quickCalculationId = it.id,
189-
groupId = getCurrentGroup()?.id,
190-
),
191-
)
192-
},
180+
onEdit = viewModel::onEdit,
181+
onReuse = viewModel::onReuse,
193182
onDelete = viewModel::onDelete,
194183
onDismiss = {
195184
scope.launch {
@@ -256,6 +245,7 @@ private fun Content(
256245
onFilterChanged: (String) -> Unit,
257246
onDelete: (QuickCalculation) -> Unit,
258247
onClick: (QuickCalculation) -> Unit,
248+
onLongClick: (QuickCalculation) -> Unit = {},
259249
onPin: (QuickCalculation) -> Unit,
260250
onUnpin: (QuickCalculation) -> Unit,
261251
onNewCode: (CurrencyCode) -> Unit,
@@ -288,6 +278,7 @@ private fun Content(
288278
notPinned = state.pages.first().notPinned,
289279
onDelete = onDelete,
290280
onClick = onClick,
281+
onLongClick = onLongClick,
291282
onPin = onPin,
292283
onUnpin = onUnpin,
293284
onNewCode = onNewCode,
@@ -305,6 +296,7 @@ private fun Content(
305296
notPinned = state.pages[index].notPinned,
306297
onDelete = onDelete,
307298
onClick = onClick,
299+
onLongClick = onLongClick,
308300
onPin = onPin,
309301
onUnpin = onUnpin,
310302
onNewCode = onNewCode,
@@ -325,6 +317,7 @@ private fun GroupPage(
325317
onPin: (QuickCalculation) -> Unit,
326318
onUnpin: (QuickCalculation) -> Unit,
327319
onClick: (QuickCalculation) -> Unit = {},
320+
onLongClick: (QuickCalculation) -> Unit = {},
328321
onNewCode: (CurrencyCode) -> Unit,
329322
) {
330323
val ctx = LocalContext.current
@@ -345,6 +338,7 @@ private fun GroupPage(
345338
it.refreshDate,
346339
),
347340
onClick = { onClick(it.calculation) },
341+
onLongClick = { onLongClick(it.calculation) },
348342
)
349343
},
350344
calculation = it.calculation,
@@ -370,6 +364,7 @@ private fun GroupPage(
370364
it.calculatedDate,
371365
),
372366
onClick = { onClick(it) },
367+
onLongClick = { onLongClick(it) },
373368
)
374369
},
375370
calculation = it,
@@ -404,5 +399,6 @@ private fun PreviewItem() {
404399
to = listOf(Amount("USD", 30.0.toBigDecimal())),
405400
dateText = "Calculated on",
406401
onClick = {},
402+
onLongClick = {},
407403
)
408404
}

feature/quick/src/main/java/dev/arkbuilders/rate/feature/quick/presentation/main/QuickViewModel.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ sealed class QuickScreenEffect {
6161

6262
data class ShowRemovedSnackbar(val calculation: QuickCalculation) : QuickScreenEffect()
6363

64+
data class NavigateToEdit(val calc: QuickCalculation) : QuickScreenEffect()
65+
66+
data class NavigateToReuse(val calc: QuickCalculation) : QuickScreenEffect()
67+
6468
data object LaunchInAppReview : QuickScreenEffect()
6569

6670
data class SelectTab(val groupId: Long) : QuickScreenEffect()
@@ -192,6 +196,16 @@ class QuickViewModel(
192196
quickRepo.insert(newCalculation)
193197
}
194198

199+
fun onEdit(calc: QuickCalculation) =
200+
intent {
201+
postSideEffect(QuickScreenEffect.NavigateToEdit(calc))
202+
}
203+
204+
fun onReuse(calc: QuickCalculation) =
205+
intent {
206+
postSideEffect(QuickScreenEffect.NavigateToReuse(calc))
207+
}
208+
195209
fun onFilterChanged(filter: String) =
196210
blockingIntent {
197211
reduce {

0 commit comments

Comments
 (0)