diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7deb6c6..90144cc 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,6 +23,7 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:localeConfig="@xml/locale_config"
+ android:networkSecurityConfig="@xml/network_security_config"
tools:targetApi="36"
android:memtagMode="async">
-
-
-
-
-
-
+
+
+
+
+
@@ -76,4 +76,4 @@
android:name=".internal.installer.PackageInstallerStatusReceiver"
android:exported="false" />
-
+
\ No newline at end of file
diff --git a/app/src/main/java/dev/mi6e4ka/openstore/MainActivity.kt b/app/src/main/java/dev/mi6e4ka/openstore/MainActivity.kt
index 5df0999..df8e860 100644
--- a/app/src/main/java/dev/mi6e4ka/openstore/MainActivity.kt
+++ b/app/src/main/java/dev/mi6e4ka/openstore/MainActivity.kt
@@ -3,7 +3,6 @@ package dev.mi6e4ka.openstore
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
-import androidx.activity.enableEdgeToEdge
import androidx.compose.animation.AnimatedContentTransitionScope
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.core.tween
@@ -36,7 +35,6 @@ import dev.mi6e4ka.openstore.ui.theme.AppTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
- enableEdgeToEdge()
super.onCreate(savedInstanceState)
val cacheDir = externalCacheDir ?: cacheDir
cacheDir.listFiles()?.forEach { file ->
diff --git a/app/src/main/java/dev/mi6e4ka/openstore/ui/components/Gallery.kt b/app/src/main/java/dev/mi6e4ka/openstore/ui/components/Gallery.kt
index 4fc242d..0865a21 100644
--- a/app/src/main/java/dev/mi6e4ka/openstore/ui/components/Gallery.kt
+++ b/app/src/main/java/dev/mi6e4ka/openstore/ui/components/Gallery.kt
@@ -33,9 +33,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.layout.ContentScale
-import androidx.compose.ui.semantics.clearAndSetSemantics
-import androidx.compose.ui.semantics.hideFromAccessibility
-import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
@@ -65,8 +62,7 @@ fun GalleryWithPager(images: List) {
modifier = Modifier.height(250.dp)
) {
LazyRow(
- horizontalArrangement = Arrangement.spacedBy(8.dp),
- modifier = Modifier.clearAndSetSemantics{}
+ horizontalArrangement = Arrangement.spacedBy(8.dp)
) {
itemsIndexed(images) { i, file ->
var isLoading by remember { mutableStateOf(true) }
diff --git a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/details/DetailsScreen.kt b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/details/DetailsScreen.kt
index 1601359..8212a32 100644
--- a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/details/DetailsScreen.kt
+++ b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/details/DetailsScreen.kt
@@ -86,9 +86,6 @@ import kotlinx.datetime.toLocalDateTime
import android.Manifest
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
-import androidx.compose.ui.semantics.clearAndSetSemantics
-import androidx.compose.ui.semantics.contentDescription
-import androidx.compose.ui.semantics.semantics
import kotlin.time.ExperimentalTime
import kotlin.time.Instant
@@ -144,7 +141,7 @@ fun DetailsScreen(
IconButton(onClick = { navController.popBackStack() }) {
Icon(
painter = painterResource(R.drawable.ic_arrow_back_24px),
- contentDescription = stringResource(R.string.back_button_desc)
+ contentDescription = "Back"
)
}
},
@@ -156,10 +153,7 @@ fun DetailsScreen(
}
}
){
- Icon(
- painterResource(R.drawable.ic_link_24px),
- stringResource(R.string.copy_link_desc)
- )
+ Icon(painterResource(R.drawable.ic_link_24px), null)
}
IconButton(
{
@@ -181,10 +175,7 @@ fun DetailsScreen(
}
}
){
- Icon(
- painterResource(R.drawable.apk_install_24px),
- stringResource(R.string.download_apk_desc)
- )
+ Icon(painterResource(R.drawable.apk_install_24px), null)
}
IconButton(onClick = {
val intent = Intent(Intent.ACTION_VIEW, "https://www.rustore.ru/catalog/app/${state.item?.packageName ?: ""}".toUri()).apply {
@@ -193,10 +184,7 @@ fun DetailsScreen(
}
context.startActivity(intent)
}, enabled = state.item != null) {
- Icon(
- painterResource(R.drawable.ic_captive_portal_24px),
- stringResource(R.string.open_in_browser_desc)
- )
+ Icon(painterResource(R.drawable.ic_captive_portal_24px), null)
}
}
) }
@@ -344,7 +332,7 @@ fun DetailsScreen(
verticalArrangement = Arrangement.spacedBy(4.dp)
) {
Text(item.appName, fontSize = 24.sp, fontWeight = FontWeight.Bold, maxLines = 2, overflow = TextOverflow.Ellipsis)
- Text(item.aggregatorInfo?.companyName ?: item.companyName, maxLines = 2, overflow = TextOverflow.Ellipsis, modifier = Modifier.clearAndSetSemantics(){contentDescription = "Разработчик: ${item.aggregatorInfo?.companyName ?: item.companyName}"})
+ Text(item.aggregatorInfo?.companyName ?: item.companyName, maxLines = 2, overflow = TextOverflow.Ellipsis)
}
}
if (!state.isSupported) {
@@ -445,30 +433,18 @@ fun DetailsScreen(
(state.appFiles?.sumOf { it.size } ?: 0L) / 1024.0 / 1024.0)
)
},
- leadingIcon = {
- Icon(
- painterResource(R.drawable.ic_upload_file_24px),
- stringResource(R.string.app_size_desc)
- )},
+ leadingIcon = {Icon(painterResource(R.drawable.ic_upload_file_24px), contentDescription = null)},
onClick = {},
)
AssistChip(
onClick = {},
label = {Text(item.versionName)},
- leadingIcon = {
- Icon(
- painterResource(R.drawable.ic_arrow_circle_up_24px),
- stringResource(R.string.latest_version_desc)
- )}
+ leadingIcon = {Icon(painterResource(R.drawable.ic_arrow_circle_up_24px), contentDescription = null)}
)
AssistChip(
onClick = {},
label = {FormattedDateText(item.appVerUpdatedAt)},
- leadingIcon = {
- Icon(
- painterResource(R.drawable.ic_update_24px),
- stringResource(R.string.last_update_desc)
- )}
+ leadingIcon = {Icon(painterResource(R.drawable.ic_update_24px), contentDescription = null)}
)
var detailedApiVersion by remember { mutableStateOf(false) }
AssistChip(
@@ -482,38 +458,22 @@ fun DetailsScreen(
Text("API ${item.minSdkVersion} +")
}
},
- leadingIcon = {
- Icon(
- painterResource(R.drawable.ic_android_24px),
- stringResource(R.string.min_api_desc)
- )}
+ leadingIcon = {Icon(painterResource(R.drawable.ic_android_24px), contentDescription = null)}
)
AssistChip(
onClick = {},
label = {Text(if ((state.appFiles?.size ?: 1) > 1) "${state.appFiles?.size} Split APKs" else "APK")},
- leadingIcon = {
- Icon(
- painterResource(R.drawable.ic_adb_24px),
- stringResource(R.string.installer_type_desc)
- )}
+ leadingIcon = {Icon(painterResource(R.drawable.ic_adb_24px), contentDescription = null)}
)
AssistChip(
onClick = {},
label = {Text(item.roundedDownloadsText)},
- leadingIcon = {
- Icon(
- painterResource(R.drawable.ic_download_24px),
- stringResource(R.string.downloads_desc)
- )}
+ leadingIcon = {Icon(painterResource(R.drawable.ic_download_24px), contentDescription = null)}
)
AssistChip(
onClick = {},
label = {Text(item.ageLegal)},
- leadingIcon = {
- Icon(
- painterResource(R.drawable.ic_supervised_user_circle_24px),
- stringResource(R.string.age_legal_desc)
- )}
+ leadingIcon = {Icon(painterResource(R.drawable.ic_supervised_user_circle_24px), contentDescription = null)}
)
}
GalleryWithPager(item.fileUrls)
@@ -579,13 +539,6 @@ fun DetailsScreen(
restoreState = true
}
})
- .clearAndSetSemantics {
- contentDescription = context.getString(
- R.string.reviews_desc,
- state.rating?.averageUserRating ?: 0,
- state.rating?.totalRatings ?: 0
- )
- }
) {
Row(
Modifier
diff --git a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/results/ResultsScreen.kt b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/results/ResultsScreen.kt
index 811dd57..9e26e5f 100644
--- a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/results/ResultsScreen.kt
+++ b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/results/ResultsScreen.kt
@@ -35,8 +35,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
-import androidx.compose.ui.semantics.hideFromAccessibility
-import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
@@ -70,7 +68,7 @@ fun ResultsScreen(
IconButton(onClick = { navController.popBackStack() }) {
Icon(
painterResource(R.drawable.ic_arrow_back_24px),
- contentDescription = stringResource(R.string.back_button_desc)
+ contentDescription = "Back"
)
}
},
@@ -83,10 +81,7 @@ fun ResultsScreen(
}
TextButton({platformSelectorExpanded = true}) {
- Icon(
- painterResource(state.selectedPlatform.icon),
- contentDescription = stringResource(R.string.tts_current_platform)
- )
+ Icon(painterResource(state.selectedPlatform.icon), null)
Spacer(Modifier.size(8.dp))
Text(stringResource(state.selectedPlatform.label))
}
@@ -130,16 +125,7 @@ fun ResultsScreen(
modifier = Modifier.weight(1f).padding(start = 16.dp,end = 4.dp)
) {
Text(text = app.appName, maxLines = 1, overflow = TextOverflow.Ellipsis)
- Text(
- text = app.packageName,
- fontSize = 14.sp,
- maxLines = 1,
- overflow = TextOverflow.Ellipsis,
- color = MaterialTheme.colorScheme.secondary,
- modifier = Modifier.semantics{
- hideFromAccessibility()
- }
- )
+ Text(text = app.packageName, fontSize = 14.sp, maxLines = 1, overflow = TextOverflow.Ellipsis, color = MaterialTheme.colorScheme.secondary)
}
}
}
diff --git a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/reviews/ReviewsScreen.kt b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/reviews/ReviewsScreen.kt
index 56eea6e..2ac553e 100644
--- a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/reviews/ReviewsScreen.kt
+++ b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/reviews/ReviewsScreen.kt
@@ -35,12 +35,8 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
-import androidx.compose.ui.semantics.clearAndSetSemantics
-import androidx.compose.ui.semantics.contentDescription
-import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.navigation.NavController
@@ -99,7 +95,7 @@ fun ReviewsScreen(packageName: String, navController: NavController = rememberNa
IconButton(onClick = { navController.popBackStack() }) {
Icon(
painterResource(R.drawable.ic_arrow_back_24px),
- contentDescription = stringResource(R.string.back_button_desc)
+ contentDescription = "Back"
)
}
},
@@ -139,12 +135,11 @@ fun ReviewsScreen(packageName: String, navController: NavController = rememberNa
}
items(reviews ?: listOf()) { review ->
Card(
- Modifier.fillMaxWidth().semantics(mergeDescendants = true){}
+ Modifier.fillMaxWidth()
) {
Column(
Modifier.padding(16.dp)
) {
- val context = LocalContext.current
Row(
Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween,
@@ -160,10 +155,7 @@ fun ReviewsScreen(packageName: String, navController: NavController = rememberNa
}
Spacer(Modifier.height(8.dp))
Row(
- verticalAlignment = Alignment.CenterVertically,
- modifier = Modifier.clearAndSetSemantics{
- contentDescription = context.getString(R.string.review_rating_desc, review.appRating)
- }
+ verticalAlignment = Alignment.CenterVertically
) {
repeat(review.appRating) {
Icon(painterResource(R.drawable.ic_star_filled_24px), null, Modifier.size(16.dp), tint = MaterialTheme.colorScheme.primary)
@@ -179,12 +171,12 @@ fun ReviewsScreen(packageName: String, navController: NavController = rememberNa
horizontalArrangement = Arrangement.spacedBy(16.dp)
) {
Row(verticalAlignment = Alignment.CenterVertically) {
- Icon(painterResource(R.drawable.ic_thumb_up_24px), contentDescription = stringResource(R.string.likes_desc), Modifier.size(20.dp), tint = MaterialTheme.colorScheme.secondary)
+ Icon(painterResource(R.drawable.ic_thumb_up_24px), contentDescription = null, Modifier.size(20.dp), tint = MaterialTheme.colorScheme.secondary)
Spacer(Modifier.width(4.dp))
Text("${review.likeCounter}")
}
Row(verticalAlignment = Alignment.CenterVertically) {
- Icon(painterResource(R.drawable.ic_thumb_down_24px), contentDescription = stringResource(R.string.dislikes_desc), Modifier.size(20.dp), tint = MaterialTheme.colorScheme.secondary)
+ Icon(painterResource(R.drawable.ic_thumb_down_24px), contentDescription = null, Modifier.size(20.dp), tint = MaterialTheme.colorScheme.secondary)
Spacer(Modifier.width(6.dp))
Text("${review.dislikeCounter}")
}
diff --git a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/search/SearchScreen.kt b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/search/SearchScreen.kt
index e5c319b..0b21410 100644
--- a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/search/SearchScreen.kt
+++ b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/search/SearchScreen.kt
@@ -98,10 +98,7 @@ fun SearchScreen(navController: NavController = rememberNavController()) {
)
}
IconButton({navController.navigate("settings")}) {
- Icon(
- painterResource(R.drawable.ic_settings_24px),
- contentDescription = stringResource(R.string.settings_title)
- )
+ Icon(painterResource(R.drawable.ic_settings_24px), "settings")
}
}
) },
@@ -154,7 +151,7 @@ fun SearchScreen(navController: NavController = rememberNavController()) {
onValueChange = {s -> search=s},
leadingIcon = { Icon(painterResource(R.drawable.ic_search_24px), contentDescription = null) },
modifier = Modifier.fillMaxWidth().semantics{
- contentDescription = context.getString(R.string.search_title)
+ contentDescription = "Search"
},
singleLine = true,
keyboardOptions = KeyboardOptions(
diff --git a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/settings/SettingsScreen.kt b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/settings/SettingsScreen.kt
index a5cbd2f..0a863c7 100644
--- a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/settings/SettingsScreen.kt
+++ b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/settings/SettingsScreen.kt
@@ -156,10 +156,7 @@ fun SettingsScreen(
}
}
) {
- Icon(
- painterResource(R.drawable.ic_arrow_back_24px),
- stringResource(R.string.back_button_desc)
- )
+ Icon(painterResource(R.drawable.ic_arrow_back_24px), "back")
}
}
)
diff --git a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/updates/UpdatesScreen.kt b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/updates/UpdatesScreen.kt
index ac422c0..f628c66 100644
--- a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/updates/UpdatesScreen.kt
+++ b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/updates/UpdatesScreen.kt
@@ -114,7 +114,7 @@ fun UpdatesScreen(navController: NavController) {
IconButton(onClick = { navController.popBackStack() }) {
Icon(
painter = painterResource(R.drawable.ic_arrow_back_24px),
- contentDescription = stringResource(R.string.back_button_desc)
+ contentDescription = "Back"
)
}
},
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index 43e6f88..16d0b51 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -73,6 +73,4 @@
Auto
Dark
Light
- Back
- Apps for platfom
\ No newline at end of file
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index 45af79c..8bede2e 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -1,3 +1,6 @@
-
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index cc0eee6..9224639 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -73,20 +73,4 @@
Тёмная
Светлая
Обновления будут проверяться для приложений из выбранных источников
- Назад
- Приложения для платформы
- Скопировать ссылку на apk
- Скачать apk без установки
- Открыть страницу приложения в браузере
- Вес приложения
- Текущая версия
- Последнее обновление
- Минимальная версия android
- Тип установочного файла
- Количество установок
- Возрастная категория
- Рейтинг и отзывы\nСредняя оценка: %1$.2f\nВсего оценок: %2$d
- оценка: %1$d
- Лайки
- Дизлайки
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 6872e24..4ada25c 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,3 +1,6 @@
-
+
diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..ad43458
--- /dev/null
+++ b/app/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,9 @@
+
+
+
+ rustore.ru
+
+ hETpgVvaLC0bvcGG3t0cuqiHvr4XyP2MTwCiqhgRWwU=
+
+
+
\ No newline at end of file