From 1aac35a5527ea0744c60bbf89218a1481a7961d7 Mon Sep 17 00:00:00 2001 From: Dima Date: Mon, 24 Nov 2025 20:00:21 +0500 Subject: [PATCH 1/9] =?UTF-8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20Messengers=20=D0=B8=20Country?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../country/CountryCodeBottomSheet.kt | 80 ++++--------------- .../messengers/MessengersBottomSheet.kt | 79 ++++-------------- 2 files changed, 31 insertions(+), 128 deletions(-) diff --git a/app/src/main/java/ru/yandex/practicum/contacts/presentation/country/CountryCodeBottomSheet.kt b/app/src/main/java/ru/yandex/practicum/contacts/presentation/country/CountryCodeBottomSheet.kt index e74ab23..39ad953 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/presentation/country/CountryCodeBottomSheet.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/presentation/country/CountryCodeBottomSheet.kt @@ -35,73 +35,25 @@ fun CountryCodeBottomSheet( onCodesSelected: (Set) -> Unit, onDismiss: () -> Unit ) { - ModalBottomSheet( - onDismissRequest = onDismiss, - dragHandle = { BottomSheetDefaults.DragHandle() } - ) { - Column( - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 16.dp) - ) { - Row( - modifier = Modifier - .fillMaxWidth() - .padding(bottom = 16.dp), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically - ) { - Text( - text = stringResource(R.string.filter_by_country_code), - style = MaterialTheme.typography.titleLarge - ) - IconButton(onClick = onDismiss) { - Icon( - imageVector = Icons.Default.Close, - contentDescription = stringResource(R.string.close) - ) - } - } - - LazyColumn( - modifier = Modifier - .fillMaxWidth() - .padding(bottom = 16.dp) - ) { - items(CountryCode.COMMON_CODES) { countryCode -> - val isSelected = selectedCodes.contains(countryCode) - Surface( - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 4.dp), - onClick = { - val newSelection = selectedCodes.toMutableSet() - if (isSelected) { - newSelection.remove(countryCode) - } else { - newSelection.add(countryCode) - } - onCodesSelected(newSelection) - }, - color = if (isSelected) { - MaterialTheme.colorScheme.primaryContainer - } else { - MaterialTheme.colorScheme.surface - } - ) { - CountryCodeOption( - isSelected = isSelected, - countryCode = countryCode, - selectedCodes = selectedCodes, - onCodesSelected = onCodesSelected - ) - } - } - } - } + CommonBottomSheet( + title = stringResource(R.string.filter_by_country_code), + items = CountryCode.COMMON_CODES, + selectedItems = selectedCodes, + onItemsSelected = { selected -> + selected.firstOrNull()?.let { onCodesSelected(it) } + }, + onDismiss = onDismiss + ){countryCode, isSelected -> + CountryCodeOption( + isSelected = isSelected, + countryCode = countryCode, + selectedCodes = selectedCodes, + onCodesSelected = onCodesSelected + ) } } + @Composable private fun CountryCodeOption( isSelected: Boolean, diff --git a/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt b/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt index dcddf8d..35d832d 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt @@ -35,70 +35,21 @@ fun MessengersBottomSheet( onAppsSelected: (Set) -> Unit, onDismiss: () -> Unit ) { - ModalBottomSheet( - onDismissRequest = onDismiss, - dragHandle = { BottomSheetDefaults.DragHandle() } - ) { - Column( - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 16.dp) - ) { - Row( - modifier = Modifier - .fillMaxWidth() - .padding(bottom = 16.dp), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically - ) { - Text( - text = stringResource(R.string.filter_by_messaging_app), - style = MaterialTheme.typography.titleLarge - ) - IconButton(onClick = onDismiss) { - Icon( - imageVector = Icons.Default.Close, - contentDescription = stringResource(R.string.close) - ) - } - } - - LazyColumn( - modifier = Modifier - .fillMaxWidth() - .padding(bottom = 16.dp) - ) { - items(MessagingApp.entries) { app -> - val isSelected = selectedApps.contains(app) - Surface( - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 4.dp), - onClick = { - val newSelection = selectedApps.toMutableSet() - if (isSelected) { - newSelection.remove(app) - } else { - newSelection.add(app) - } - onAppsSelected(newSelection) - }, - color = if (isSelected) { - MaterialTheme.colorScheme.primaryContainer - } else { - MaterialTheme.colorScheme.surface - } - ) { - MessengerOption( - isSelected = isSelected, - app = app, - selectedApps = selectedApps, - onAppsSelected = onAppsSelected - ) - } - } - } - } + CommonBottomSheet( + title=stringResource(R.string.filter_by_messaging_app), + items=MessagingApp.entries, + selectedItems=selectedApps, + onItemsSelected= { selected -> + selected.firstOrNull()?.let { onAppsSelected(it) } + }, + onDismiss = onDismiss + ){app, isSelected -> + MessengerOption( + isSelected = isSelected, + app = app, + selectedApps = selectedApps, + onAppsSelected = onAppsSelected + ) } } From 0b96532e9058e02a8650c0ead3729ca296c35e69 Mon Sep 17 00:00:00 2001 From: Dima Date: Mon, 24 Nov 2025 20:06:47 +0500 Subject: [PATCH 2/9] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8?= =?UTF-8?q?=20=20=D0=B2=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index dab7c28..b79bf1a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,4 +18,5 @@ android.useAndroidX=true # Enables namespacing of each library's R class so that its R class includes only the # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file +android.nonTransitiveRClass=true +android.overridePathCheck=true \ No newline at end of file From bc2e7ab8380797ab1fe2cadea6de51cd8b35a31a Mon Sep 17 00:00:00 2001 From: Dima Date: Mon, 24 Nov 2025 20:24:31 +0500 Subject: [PATCH 3/9] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA?= =?UTF-8?q?=20=D0=B8=D0=BC=D0=BF=D0=BE=D1=80=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../country/CountryCodeBottomSheet.kt | 15 ++------------- .../messengers/MessengersBottomSheet.kt | 19 +++---------------- 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/ru/yandex/practicum/contacts/presentation/country/CountryCodeBottomSheet.kt b/app/src/main/java/ru/yandex/practicum/contacts/presentation/country/CountryCodeBottomSheet.kt index 39ad953..3dd81c9 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/presentation/country/CountryCodeBottomSheet.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/presentation/country/CountryCodeBottomSheet.kt @@ -1,24 +1,14 @@ package ru.yandex.practicum.contacts.presentation.country -import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Close -import androidx.compose.material3.BottomSheetDefaults import androidx.compose.material3.Checkbox import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.ModalBottomSheet -import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -27,6 +17,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ru.yandex.practicum.contacts.R import ru.yandex.practicum.contacts.data.models.CountryCode +import ru.yandex.practicum.contacts.presentation.ui.components.CommonBottomSheet @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -39,9 +30,7 @@ fun CountryCodeBottomSheet( title = stringResource(R.string.filter_by_country_code), items = CountryCode.COMMON_CODES, selectedItems = selectedCodes, - onItemsSelected = { selected -> - selected.firstOrNull()?.let { onCodesSelected(it) } - }, + onItemsSelected = onCodesSelected, onDismiss = onDismiss ){countryCode, isSelected -> CountryCodeOption( diff --git a/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt b/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt index 35d832d..c4237f9 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt @@ -1,24 +1,12 @@ package ru.yandex.practicum.contacts.presentation.messengers -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Close -import androidx.compose.material3.BottomSheetDefaults import androidx.compose.material3.Checkbox import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.ModalBottomSheet -import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -27,6 +15,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ru.yandex.practicum.contacts.R import ru.yandex.practicum.contacts.data.models.MessagingApp +import ru.yandex.practicum.contacts.presentation.ui.components.CommonBottomSheet @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -39,11 +28,9 @@ fun MessengersBottomSheet( title=stringResource(R.string.filter_by_messaging_app), items=MessagingApp.entries, selectedItems=selectedApps, - onItemsSelected= { selected -> - selected.firstOrNull()?.let { onAppsSelected(it) } - }, + onItemsSelected=onAppsSelected, onDismiss = onDismiss - ){app, isSelected -> + ){ app , isSelected -> MessengerOption( isSelected = isSelected, app = app, From 8425befdc996291b9b671c6be990718375a4bb8d Mon Sep 17 00:00:00 2001 From: Dima Date: Thu, 2 Apr 2026 01:01:57 +0500 Subject: [PATCH 4/9] =?UTF-8?q?=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../messengers/MessengersBottomSheet.kt | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt b/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt index c4237f9..8d325e1 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt @@ -1,5 +1,6 @@ package ru.yandex.practicum.contacts.presentation.messengers +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth @@ -7,6 +8,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Checkbox import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -25,12 +27,12 @@ fun MessengersBottomSheet( onDismiss: () -> Unit ) { CommonBottomSheet( - title=stringResource(R.string.filter_by_messaging_app), - items=MessagingApp.entries, - selectedItems=selectedApps, - onItemsSelected=onAppsSelected, + title = stringResource(R.string.filter_by_messaging_app), + items = MessagingApp.entries.toList(), + selectedItems = selectedApps, + onItemsSelected = onAppsSelected, onDismiss = onDismiss - ){ app , isSelected -> + ) { app: MessagingApp, isSelected: Boolean -> MessengerOption( isSelected = isSelected, app = app, @@ -50,7 +52,7 @@ private fun MessengerOption( Row( modifier = Modifier .fillMaxWidth() - .padding(16.dp), + .padding(16.dp), // сделал padding единообразным с CountryCodeOption verticalAlignment = Alignment.CenterVertically ) { Checkbox( @@ -65,7 +67,12 @@ private fun MessengerOption( onAppsSelected(newSelection) } ) + Spacer(modifier = Modifier.width(16.dp)) - Text(app.name) + + Text( + text = app.name, + style = MaterialTheme.typography.bodyLarge // добавил стиль для лучшего вида + ) } } \ No newline at end of file From 9ee6417b8b9e5126a67248e60da3f738c5894a55 Mon Sep 17 00:00:00 2001 From: Dima Date: Thu, 2 Apr 2026 01:03:01 +0500 Subject: [PATCH 5/9] =?UTF-8?q?=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contacts/presentation/messengers/MessengersBottomSheet.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt b/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt index 8d325e1..50c380e 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt @@ -42,6 +42,7 @@ fun MessengersBottomSheet( } } + @Composable private fun MessengerOption( isSelected: Boolean, From 42587c853f95dad9292c7e00b7525c0773f3aee9 Mon Sep 17 00:00:00 2001 From: Dima Date: Thu, 2 Apr 2026 01:11:38 +0500 Subject: [PATCH 6/9] =?UTF-8?q?=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contacts/presentation/messengers/MessengersBottomSheet.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt b/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt index 50c380e..8d325e1 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt @@ -42,7 +42,6 @@ fun MessengersBottomSheet( } } - @Composable private fun MessengerOption( isSelected: Boolean, From 927e7c30f183cf1613b7604d150819ed44c7d817 Mon Sep 17 00:00:00 2001 From: Dima Date: Thu, 2 Apr 2026 14:00:22 +0500 Subject: [PATCH 7/9] =?UTF-8?q?=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B1=D0=BB=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contacts/data/models/CountryCode.kt | 4 ++- .../contacts/data/models/MessagingApp.kt | 7 ++++++ .../country/CountryCodeBottomSheet.kt | 6 ++--- .../messengers/MessengersBottomSheet.kt | 25 +++++++------------ .../ui/components/CommonBottomSheet.kt | 4 ++- 5 files changed, 25 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/ru/yandex/practicum/contacts/data/models/MessagingApp.kt diff --git a/app/src/main/java/ru/yandex/practicum/contacts/data/models/CountryCode.kt b/app/src/main/java/ru/yandex/practicum/contacts/data/models/CountryCode.kt index 9a7c251..44aa7d9 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/data/models/CountryCode.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/data/models/CountryCode.kt @@ -18,4 +18,6 @@ data class CountryCode( CountryCode("+55", "Brazil") ) } -} \ No newline at end of file +} + +annotation class CountryCode diff --git a/app/src/main/java/ru/yandex/practicum/contacts/data/models/MessagingApp.kt b/app/src/main/java/ru/yandex/practicum/contacts/data/models/MessagingApp.kt new file mode 100644 index 0000000..9408729 --- /dev/null +++ b/app/src/main/java/ru/yandex/practicum/contacts/data/models/MessagingApp.kt @@ -0,0 +1,7 @@ +package ru.yandex.practicum.contacts.data.models + +annotation class MessagingApp { + companion object { + val entries: List + } +} diff --git a/app/src/main/java/ru/yandex/practicum/contacts/presentation/country/CountryCodeBottomSheet.kt b/app/src/main/java/ru/yandex/practicum/contacts/presentation/country/CountryCodeBottomSheet.kt index 3dd81c9..6c4c93a 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/presentation/country/CountryCodeBottomSheet.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/presentation/country/CountryCodeBottomSheet.kt @@ -29,10 +29,10 @@ fun CountryCodeBottomSheet( CommonBottomSheet( title = stringResource(R.string.filter_by_country_code), items = CountryCode.COMMON_CODES, - selectedItems = selectedCodes, + selectedCodes, onItemsSelected = onCodesSelected, - onDismiss = onDismiss - ){countryCode, isSelected -> + onDismiss=onDismiss + ) { countryCode, isSelected -> CountryCodeOption( isSelected = isSelected, countryCode = countryCode, diff --git a/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt b/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt index 8d325e1..b15c28c 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/presentation/messengers/MessengersBottomSheet.kt @@ -1,6 +1,5 @@ package ru.yandex.practicum.contacts.presentation.messengers -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth @@ -8,7 +7,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Checkbox import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -28,16 +26,16 @@ fun MessengersBottomSheet( ) { CommonBottomSheet( title = stringResource(R.string.filter_by_messaging_app), - items = MessagingApp.entries.toList(), + items= MessagingApp.entries, selectedItems = selectedApps, onItemsSelected = onAppsSelected, - onDismiss = onDismiss - ) { app: MessagingApp, isSelected: Boolean -> + onDismiss=onDismiss + ) {app,isSelected-> MessengerOption( - isSelected = isSelected, - app = app, - selectedApps = selectedApps, - onAppsSelected = onAppsSelected + isSelected=isSelected, + app=app, + selectedApps=selectedApps, + onAppsSelected=onAppsSelected ) } } @@ -52,7 +50,7 @@ private fun MessengerOption( Row( modifier = Modifier .fillMaxWidth() - .padding(16.dp), // сделал padding единообразным с CountryCodeOption + .padding(16.dp), verticalAlignment = Alignment.CenterVertically ) { Checkbox( @@ -67,12 +65,7 @@ private fun MessengerOption( onAppsSelected(newSelection) } ) - Spacer(modifier = Modifier.width(16.dp)) - - Text( - text = app.name, - style = MaterialTheme.typography.bodyLarge // добавил стиль для лучшего вида - ) + Text(app.name) } } \ No newline at end of file diff --git a/app/src/main/java/ru/yandex/practicum/contacts/presentation/ui/components/CommonBottomSheet.kt b/app/src/main/java/ru/yandex/practicum/contacts/presentation/ui/components/CommonBottomSheet.kt index fbf8d02..0def6ce 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/presentation/ui/components/CommonBottomSheet.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/presentation/ui/components/CommonBottomSheet.kt @@ -83,4 +83,6 @@ fun CommonBottomSheet( } } } -} \ No newline at end of file +} + +annotation class CommonBottomSheet From 48f35f96ceba7de39a40f6fcfee4e3cd25f6cc4c Mon Sep 17 00:00:00 2001 From: Dima Date: Thu, 16 Apr 2026 00:48:26 +0500 Subject: [PATCH 8/9] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/yandex/practicum/contacts/data/models/SortOrder.kt | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 app/src/main/java/ru/yandex/practicum/contacts/data/models/SortOrder.kt diff --git a/app/src/main/java/ru/yandex/practicum/contacts/data/models/SortOrder.kt b/app/src/main/java/ru/yandex/practicum/contacts/data/models/SortOrder.kt deleted file mode 100644 index 7e78358..0000000 --- a/app/src/main/java/ru/yandex/practicum/contacts/data/models/SortOrder.kt +++ /dev/null @@ -1,8 +0,0 @@ -package ru.yandex.practicum.contacts.data.models - -enum class SortOrder(val displayName: String) { - NAME_ASC("имени (А-Я / A-Z)"), - NAME_DESC("имени (Я-А / Z-A)"), - LAST_NAME_ASC("фамилии (А-Я / A-Z)"), - LAST_NAME_DESC("фамилии (Я-А / Z-A)") -} \ No newline at end of file From 38e25b062f4be462163bebb18a8650904fd7f30e Mon Sep 17 00:00:00 2001 From: Dima Date: Fri, 11 Apr 2025 14:00:00 +0300 Subject: [PATCH 9/9] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 1 + .../practicum/contacts/data/models/Contact.kt | 12 +++--------- .../contacts/data/models/CountryCode.kt | 6 +++--- .../contacts/data/models/MessagingApp.kt | 3 +++ .../practicum/contacts/data/models/SortOrder.kt | 8 -------- .../data/repository/ContactsRepository.kt | 16 ++++++++-------- .../domain/repository/ContactsRepository.kt | 7 +------ .../ui/components/CommonBottomSheet.kt | 2 -- 8 files changed, 19 insertions(+), 36 deletions(-) delete mode 100644 app/src/main/java/ru/yandex/practicum/contacts/data/models/SortOrder.kt diff --git a/app/build.gradle b/app/build.gradle index 3d6fd45..03caef2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,6 +48,7 @@ android { } dependencies { + testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1' def composeBom = platform('androidx.compose:compose-bom:2025.07.00') implementation composeBom androidTestImplementation composeBom diff --git a/app/src/main/java/ru/yandex/practicum/contacts/data/models/Contact.kt b/app/src/main/java/ru/yandex/practicum/contacts/data/models/Contact.kt index ff16899..1ab703b 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/data/models/Contact.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/data/models/Contact.kt @@ -1,13 +1,5 @@ package ru.yandex.practicum.contacts.data.models -data class Contact( - val id: Long, - val firstName: String, - val lastName: String, - val phoneNumber: String, - val messagingApps: List = emptyList() -) - enum class MessagingApp { TELEGRAM, WHATS_APP, @@ -16,4 +8,6 @@ enum class MessagingApp { THREEMA, PHONE, EMAIL -} \ No newline at end of file +} + +annotation class Contact diff --git a/app/src/main/java/ru/yandex/practicum/contacts/data/models/CountryCode.kt b/app/src/main/java/ru/yandex/practicum/contacts/data/models/CountryCode.kt index 44aa7d9..5d1efe8 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/data/models/CountryCode.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/data/models/CountryCode.kt @@ -1,8 +1,8 @@ package ru.yandex.practicum.contacts.data.models -data class CountryCode( - val code: String, - val country: String + data class CountryCode( + val code: String, + val country: String ) { companion object { val COMMON_CODES = listOf( diff --git a/app/src/main/java/ru/yandex/practicum/contacts/data/models/MessagingApp.kt b/app/src/main/java/ru/yandex/practicum/contacts/data/models/MessagingApp.kt index 9408729..2cc7eb3 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/data/models/MessagingApp.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/data/models/MessagingApp.kt @@ -3,5 +3,8 @@ package ru.yandex.practicum.contacts.data.models annotation class MessagingApp { companion object { val entries: List + get() { + TODO() + } } } diff --git a/app/src/main/java/ru/yandex/practicum/contacts/data/models/SortOrder.kt b/app/src/main/java/ru/yandex/practicum/contacts/data/models/SortOrder.kt deleted file mode 100644 index 7e78358..0000000 --- a/app/src/main/java/ru/yandex/practicum/contacts/data/models/SortOrder.kt +++ /dev/null @@ -1,8 +0,0 @@ -package ru.yandex.practicum.contacts.data.models - -enum class SortOrder(val displayName: String) { - NAME_ASC("имени (А-Я / A-Z)"), - NAME_DESC("имени (Я-А / Z-A)"), - LAST_NAME_ASC("фамилии (А-Я / A-Z)"), - LAST_NAME_DESC("фамилии (Я-А / Z-A)") -} \ No newline at end of file diff --git a/app/src/main/java/ru/yandex/practicum/contacts/data/repository/ContactsRepository.kt b/app/src/main/java/ru/yandex/practicum/contacts/data/repository/ContactsRepository.kt index ee331b7..ad33f7c 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/data/repository/ContactsRepository.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/data/repository/ContactsRepository.kt @@ -11,9 +11,9 @@ import ru.yandex.practicum.contacts.data.models.MessagingApp import ru.yandex.practicum.contacts.domain.repository.ContactsRepository class ContactsRepositoryImpl(private val context: Context) : ContactsRepository { - override fun getContacts(): Flow> = flow { + fun getContacts(): Flow> = flow { val contacts = mutableListOf() - + context.contentResolver.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, arrayOf( @@ -28,18 +28,18 @@ class ContactsRepositoryImpl(private val context: Context) : ContactsRepository val idIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID) val nameIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME) val numberIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER) - + while (cursor.moveToNext()) { val id = cursor.getLong(idIndex) val fullName = cursor.getString(nameIndex) val phoneNumber = cursor.getString(numberIndex) - + val nameParts = fullName.split(" ", limit = 2) val firstName = nameParts.firstOrNull() ?: "" val lastName = nameParts.getOrNull(1) ?: "" - + val messagingApps = MessagingApp.entries.filter { (0..1).random() == 1 } - + contacts.add( Contact( id = id, @@ -51,7 +51,7 @@ class ContactsRepositoryImpl(private val context: Context) : ContactsRepository ) } } - + emit(contacts) }.flowOn(Dispatchers.IO) -} \ No newline at end of file +} \ No newline at end of file diff --git a/app/src/main/java/ru/yandex/practicum/contacts/domain/repository/ContactsRepository.kt b/app/src/main/java/ru/yandex/practicum/contacts/domain/repository/ContactsRepository.kt index eb7a793..7a99eb3 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/domain/repository/ContactsRepository.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/domain/repository/ContactsRepository.kt @@ -1,8 +1,3 @@ package ru.yandex.practicum.contacts.domain.repository -import kotlinx.coroutines.flow.Flow -import ru.yandex.practicum.contacts.data.models.Contact - -interface ContactsRepository { - fun getContacts(): Flow> -} \ No newline at end of file +open annotation class ContactsRepository diff --git a/app/src/main/java/ru/yandex/practicum/contacts/presentation/ui/components/CommonBottomSheet.kt b/app/src/main/java/ru/yandex/practicum/contacts/presentation/ui/components/CommonBottomSheet.kt index 0def6ce..0b36944 100644 --- a/app/src/main/java/ru/yandex/practicum/contacts/presentation/ui/components/CommonBottomSheet.kt +++ b/app/src/main/java/ru/yandex/practicum/contacts/presentation/ui/components/CommonBottomSheet.kt @@ -84,5 +84,3 @@ fun CommonBottomSheet( } } } - -annotation class CommonBottomSheet