Skip to content

Commit 3abe6e5

Browse files
committed
Preview settings now finished
1 parent 3dfbb42 commit 3abe6e5

File tree

11 files changed

+150
-37
lines changed

11 files changed

+150
-37
lines changed

app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ android {
1515
applicationId = "ru.tech.cookhelper"
1616
minSdk = 21
1717
targetSdk = 33
18-
versionCode = 3
19-
versionName = "0.1.2-alpha"
18+
versionCode = 4
19+
versionName = "0.1.21-alpha"
2020
multiDexEnabled = true
2121

2222
kapt {

app/src/main/java/ru/tech/cookhelper/domain/use_case/check_email/CheckEmailForAvailabilityUseCase.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import javax.inject.Inject
77
class CheckEmailForAvailabilityUseCase @Inject constructor(
88
private val userRepository: UserRepository
99
) {
10-
/*TODO: remove when api will work again */
1110
suspend operator fun invoke(
1211
email: String
1312
): Action<Boolean> = userRepository.checkEmailForAvailability(email)

app/src/main/java/ru/tech/cookhelper/domain/use_case/check_login/CheckLoginForAvailabilityUseCase.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import javax.inject.Inject
77
class CheckLoginForAvailabilityUseCase @Inject constructor(
88
private val userRepository: UserRepository
99
) {
10-
/*TODO: remove when api will work again */
1110
suspend operator fun invoke(
1211
login: String
1312
): Action<Boolean> = userRepository.checkLoginForAvailability(login)

app/src/main/java/ru/tech/cookhelper/presentation/settings/components/AppThemePreviewItem.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import androidx.compose.ui.draw.clip
1616
import androidx.compose.ui.draw.shadow
1717
import androidx.compose.ui.graphics.vector.ImageVector
1818
import androidx.compose.ui.unit.dp
19-
import ru.tech.cookhelper.presentation.ui.theme.SquircleShape
2019

2120
@OptIn(ExperimentalAnimationApi::class)
2221
@Composable
@@ -39,10 +38,10 @@ fun AppThemePreviewItem(
3938
} else {
4039
colorScheme.outlineVariant
4140
},
42-
shape = SquircleShape(16.dp),
41+
shape = RoundedCornerShape(16.dp),
4342
)
4443
.padding(4.dp)
45-
.clip(SquircleShape(12.dp))
44+
.clip(RoundedCornerShape(12.dp))
4645
.background(colorScheme.background)
4746
.clickable(onClick = onClick),
4847
verticalArrangement = Arrangement.SpaceBetween

app/src/main/java/ru/tech/cookhelper/presentation/settings/components/ColorSchemePreview.kt

Lines changed: 112 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,27 @@ import androidx.compose.foundation.layout.*
77
import androidx.compose.foundation.rememberScrollState
88
import androidx.compose.foundation.verticalScroll
99
import androidx.compose.material.icons.Icons
10-
import androidx.compose.material.icons.rounded.ArrowBack
10+
import androidx.compose.material.icons.outlined.BreakfastDining
11+
import androidx.compose.material.icons.rounded.BreakfastDining
1112
import androidx.compose.material.icons.rounded.Edit
1213
import androidx.compose.material.icons.rounded.Newspaper
1314
import androidx.compose.material3.*
1415
import androidx.compose.runtime.*
16+
import androidx.compose.runtime.saveable.rememberSaveable
1517
import androidx.compose.ui.Modifier
18+
import androidx.compose.ui.draw.alpha
19+
import androidx.compose.ui.graphics.vector.ImageVector
1620
import androidx.compose.ui.res.stringResource
1721
import androidx.compose.ui.text.font.FontWeight
1822
import androidx.compose.ui.unit.dp
1923
import com.google.accompanist.flowlayout.FlowCrossAxisAlignment
2024
import com.google.accompanist.flowlayout.FlowMainAxisAlignment
2125
import com.google.accompanist.flowlayout.FlowRow
2226
import ru.tech.cookhelper.R
27+
import ru.tech.cookhelper.core.constants.Constants.LOREM_IPSUM
2328
import ru.tech.cookhelper.domain.model.Product
2429
import ru.tech.cookhelper.domain.model.User
25-
import ru.tech.cookhelper.presentation.app.components.UserState
30+
import ru.tech.cookhelper.presentation.app.components.*
2631
import ru.tech.cookhelper.presentation.chat.components.MessageBubbleItem
2732
import ru.tech.cookhelper.presentation.chat.components.MessageHeader
2833
import ru.tech.cookhelper.presentation.chat.formatOrNull
@@ -33,15 +38,20 @@ import ru.tech.cookhelper.presentation.recipe_post_creation.components.Expandabl
3338
import ru.tech.cookhelper.presentation.recipe_post_creation.components.FabSize
3439
import ru.tech.cookhelper.presentation.recipe_post_creation.components.Separator
3540
import ru.tech.cookhelper.presentation.ui.theme.SquircleShape
41+
import ru.tech.cookhelper.presentation.ui.theme.invoke
42+
import ru.tech.cookhelper.presentation.ui.utils.compose.show
3643
import ru.tech.cookhelper.presentation.ui.utils.navigation.Screen
44+
import ru.tech.cookhelper.presentation.ui.utils.provider.LocalToastHostState
3745
import ru.tech.cookhelper.presentation.ui.widgets.AppBarTitle
3846
import ru.tech.cookhelper.presentation.ui.widgets.TopAppBar
3947
import ru.tech.cookhelper.presentation.ui.widgets.TopAppBarSize
4048

4149
@OptIn(ExperimentalMaterial3Api::class, ExperimentalAnimationApi::class)
4250
@Composable
4351
fun ColorSchemePreview() {
44-
var selectedItem by remember { mutableStateOf<Screen>(Screen.Buttons) }
52+
var selectedItem by rememberSaveable { mutableStateOf<Screen>(Screen.Buttons) }
53+
val toastHost = LocalToastHostState.current
54+
var showSampleDialog by rememberSaveable { mutableStateOf(false) }
4555

4656
OutlinedCard(
4757
modifier = Modifier
@@ -65,16 +75,19 @@ fun ColorSchemePreview() {
6575
},
6676
topAppBarSize = TopAppBarSize.Centered,
6777
navigationIcon = {
68-
IconButton(onClick = {}) {
69-
Icon(Icons.Rounded.ArrowBack, null)
70-
}
78+
val testMessage = stringResource(R.string.toast_preview)
79+
Icons.Rounded.BreakfastDining(
80+
onClick = {
81+
toastHost.show(Icons.Outlined.BreakfastDining, testMessage)
82+
}
83+
)
7184
},
7285
windowInsets = WindowInsets(0.dp),
7386
background = MaterialTheme.colorScheme.surfaceColorAtElevation(3.dp),
7487
actions = {
75-
IconButton(onClick = {}) {
76-
Icon(Icons.Rounded.Newspaper, null)
77-
}
88+
Icons.Rounded.Newspaper(
89+
onClick = { showSampleDialog = true }
90+
)
7891
}
7992
)
8093
AnimatedContent(selectedItem) {
@@ -99,6 +112,20 @@ fun ColorSchemePreview() {
99112
windowInsets = WindowInsets(0.dp),
100113
onClick = { selectedItem = it })
101114
}
115+
116+
if (showSampleDialog) {
117+
AlertDialog(
118+
onDismissRequest = { showSampleDialog = false },
119+
icon = { Icons.Rounded.Newspaper() },
120+
confirmButton = {
121+
TextButton(onClick = { showSampleDialog = false }) {
122+
Text(stringResource(R.string.ok))
123+
}
124+
},
125+
title = { Text(stringResource(R.string.preview)) },
126+
text = { Text(LOREM_IPSUM) }
127+
)
128+
}
102129
}
103130

104131
@Composable
@@ -111,7 +138,7 @@ private fun FridgeBlock() {
111138
}
112139
Column(
113140
Modifier
114-
.height(400.dp)
141+
.height(300.dp)
115142
.verticalScroll(rememberScrollState())
116143
) {
117144
Spacer(Modifier.height(8.dp))
@@ -157,15 +184,15 @@ private fun ChatBlock() {
157184
Spacer(Modifier.height(4.dp))
158185
MessageBubbleItem(
159186
isMessageFromCurrentUser = true,
160-
text = stringResource(R.string.hello_world_preview),
187+
text = stringResource(R.string.what_we_are_cooking_answer_preview),
161188
timestamp = System.currentTimeMillis(),
162189
cutTopCorner = true,
163190
showPointingArrow = true
164191
)
165192
Spacer(Modifier.height(4.dp))
166193
MessageBubbleItem(
167194
isMessageFromCurrentUser = false,
168-
text = stringResource(R.string.hello_world_answer_preview),
195+
text = stringResource(R.string.yummy_preview),
169196
timestamp = System.currentTimeMillis(),
170197
cutTopCorner = true,
171198
showPointingArrow = true
@@ -249,4 +276,77 @@ private fun ProfileBlock() {
249276
onStatusUpdate = {}
250277
)
251278
Spacer(Modifier.height(8.dp))
279+
Divider()
280+
Spacer(Modifier.width(8.dp))
281+
Row {
282+
val testMessage = stringResource(R.string.toast_preview)
283+
Spacer(
284+
Modifier
285+
.weight(1f)
286+
.padding(start = 8.dp)
287+
)
288+
Toast(
289+
modifier = Modifier
290+
.heightIn(min = 48.dp)
291+
.padding(top = 8.dp)
292+
.alpha(0.95f),
293+
toastData = object : ToastData {
294+
override val visuals: ToastVisuals
295+
get() = object : ToastVisuals {
296+
override val message: String
297+
get() = testMessage
298+
override val icon: ImageVector
299+
get() = Icons.Outlined.BreakfastDining
300+
override val duration: ToastDuration
301+
get() = ToastDuration.Long
302+
}
303+
304+
override fun dismiss() {}
305+
}
306+
)
307+
Spacer(
308+
Modifier
309+
.weight(1f)
310+
.padding(end = 8.dp)
311+
)
312+
}
313+
Spacer(Modifier.height(8.dp))
314+
Divider()
315+
Spacer(Modifier.width(8.dp))
316+
Row {
317+
val testMessage = stringResource(R.string.snackbar_preview)
318+
val ok = stringResource(R.string.ok)
319+
320+
Spacer(
321+
Modifier
322+
.weight(1f)
323+
.padding(start = 8.dp)
324+
)
325+
Snackbar(
326+
snackbarData = object : SnackbarData {
327+
override val visuals: SnackbarVisuals
328+
get() = object : SnackbarVisuals {
329+
override val actionLabel: String
330+
get() = ok
331+
override val duration: SnackbarDuration
332+
get() = SnackbarDuration.Indefinite
333+
override val message: String
334+
get() = testMessage
335+
override val withDismissAction: Boolean
336+
get() = false
337+
338+
}
339+
340+
override fun dismiss() {}
341+
342+
override fun performAction() {}
343+
}
344+
)
345+
Spacer(
346+
Modifier
347+
.weight(1f)
348+
.padding(end = 8.dp)
349+
)
350+
}
351+
Spacer(Modifier.width(8.dp))
252352
}

app/src/main/java/ru/tech/cookhelper/presentation/ui/theme/Icons.kt

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package ru.tech.cookhelper.presentation.ui.theme
44

55
import androidx.compose.material.icons.Icons
66
import androidx.compose.material3.Icon
7+
import androidx.compose.material3.IconButton
78
import androidx.compose.material3.LocalContentColor
89
import androidx.compose.runtime.Composable
910
import androidx.compose.ui.Modifier
@@ -20,15 +21,21 @@ import androidx.compose.ui.unit.dp
2021
@Composable
2122
operator fun ImageVector.invoke(
2223
modifier: Modifier = Modifier,
24+
onClick: (() -> Unit)? = null,
2325
tint: Color = LocalContentColor.current,
2426
contentDescription: String? = null,
2527
) {
26-
Icon(
27-
imageVector = this,
28-
contentDescription = contentDescription,
29-
modifier = modifier,
30-
tint = tint
31-
)
28+
val icon = @Composable {
29+
Icon(
30+
imageVector = this,
31+
contentDescription = contentDescription,
32+
modifier = modifier,
33+
tint = tint
34+
)
35+
}
36+
onClick?.let {
37+
IconButton(onClick = it, content = icon)
38+
} ?: icon()
3239
}
3340

3441
val Icons.Rounded.Fridge: ImageVector

app/src/main/java/ru/tech/cookhelper/presentation/ui/theme/Shapes.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import androidx.compose.foundation.shape.CornerBasedShape
44
import androidx.compose.foundation.shape.CornerSize
55
import androidx.compose.foundation.shape.RoundedCornerShape
66
import androidx.compose.material3.Shapes
7+
import androidx.compose.runtime.Stable
78
import androidx.compose.ui.geometry.*
89
import androidx.compose.ui.graphics.Outline
910
import androidx.compose.ui.graphics.Path
@@ -21,6 +22,7 @@ val Shapes = Shapes(
2122
extraLarge = SquircleShape(28.dp)
2223
)
2324

25+
@Stable
2426
data class SquircleShape(
2527
private val topLeft: Dp = 0.dp,
2628
private val topLeftSmoothness: Int = 60,

app/src/main/java/ru/tech/cookhelper/presentation/ui/utils/compose/ToastUtils.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ fun ToastHostState.show(
1111
icon: ImageVector? = null,
1212
message: String,
1313
duration: ToastDuration = ToastDuration.Short,
14-
scope: CoroutineScope = CoroutineScope(Dispatchers.Main)
14+
scope: CoroutineScope = CoroutineScope(Dispatchers.Main.immediate)
1515
) = scope.launch { showToast(message, icon, duration) }

app/src/main/java/ru/tech/cookhelper/presentation/ui/widgets/zooomable/Zoomable.kt

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -140,17 +140,15 @@ private suspend fun PointerInputScope.detectDrag(
140140
onDrag: (change: PointerInputChange, dragAmount: Offset) -> Unit
141141
) {
142142
awaitEachGesture {
143-
awaitPointerEventScope {
144-
val down = awaitFirstDown(requireUnconsumed = false)
145-
var drag: PointerInputChange?
146-
do {
147-
drag = awaitTouchSlopOrCancellation(down.id, onDrag)
148-
} while (drag != null && !drag.isConsumed)
149-
if (drag != null) {
150-
onDragStart.invoke(drag.position)
151-
if (!drag(drag.id) { onDrag(it, it.positionChange()) }) onDragCancel()
152-
else onDragEnd()
153-
}
143+
val down = awaitFirstDown(requireUnconsumed = false)
144+
var drag: PointerInputChange?
145+
do {
146+
drag = awaitTouchSlopOrCancellation(down.id, onDrag)
147+
} while (drag != null && !drag.isConsumed)
148+
if (drag != null) {
149+
onDragStart.invoke(drag.position)
150+
if (!drag(drag.id) { onDrag(it, it.positionChange()) }) onDragCancel()
151+
else onDragEnd()
154152
}
155153
}
156154
}

app/src/main/res/values-ru/strings.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,4 +250,9 @@
250250
<string name="clipboard_paste_invalid_color_code">Вставьте aRGB-Код</string>
251251
<string name="clipboard_paste_invalid_empty">Нечего вставлять</string>
252252
<string name="color">Цвет</string>
253+
<string name="product">Продукт</string>
254+
<string name="what_we_are_cooking_answer_preview">Сегодня мы приготовим большой вкусный обед из мяса и рукколы. Также не забудем добавить туда масло, для придания аромата и тонкости</string>
255+
<string name="yummy_preview">Вкусно!</string>
256+
<string name="toast_preview">Просмотр тоста!</string>
257+
<string name="snackbar_preview">Просмотр снекбара!</string>
253258
</resources>

app/src/main/res/values/strings.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,4 +252,8 @@
252252
<string name="argb" translatable="false">ARGB</string>
253253
<string name="color">Color</string>
254254
<string name="product">Product</string>
255+
<string name="what_we_are_cooking_answer_preview">Today we will cook a big delicious dinner with meat and salad. Also we will include some oil in it</string>
256+
<string name="yummy_preview">Yummy!</string>
257+
<string name="toast_preview">Sample preview toast!</string>
258+
<string name="snackbar_preview">Sample preview snackbar!</string>
255259
</resources>

0 commit comments

Comments
 (0)