diff --git a/app/build.gradle b/app/build.gradle deleted file mode 100644 index 10713b715..000000000 --- a/app/build.gradle +++ /dev/null @@ -1,222 +0,0 @@ -plugins { - id "com.android.application" - id "org.jetbrains.kotlin.android" - id "kotlin-kapt" - id "dagger.hilt.android.plugin" - id "com.google.dagger.hilt.android" - id 'com.mikepenz.aboutlibraries.plugin' -} - -def gitCommitHash = "git rev-parse --verify --short HEAD".execute().text.trim() -def keyProps = new Properties() -def keyPropsFile = rootProject.file("signature/keystore.properties") -if (keyPropsFile.exists()) { - println("Loading keystore properties from ${keyPropsFile.absolutePath}") - keyProps.load(new FileInputStream(keyPropsFile)) -} - -android { - compileSdk 34 - - defaultConfig { - applicationId "me.ash.reader" - minSdk 26 - targetSdk 33 - versionCode 25 - versionName "0.10.1" - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - vectorDrawables { - useSupportLibrary true - } - - javaCompileOptions { - annotationProcessorOptions { - arguments += [ - "room.schemaLocation": "$projectDir/schemas".toString(), - "room.incremental" : "true" - ] - } - } - } - - flavorDimensions "channel" - productFlavors { - github { - dimension "channel" - } - fdroid { - dimension "channel" - } - googlePlay { - dimension "channel" - applicationIdSuffix ".google.play" - } - } - signingConfigs { - release { - keyAlias keyProps["keyAlias"] - keyPassword keyProps["keyPassword"] - storeFile keyProps["storeFile"] ? file(keyProps["storeFile"]) : null - storePassword keyProps["storePassword"] - } - } - lint { - disable.addAll("MissingTranslation", "ExtraTranslation") - } - buildTypes { - release { - minifyEnabled true - shrinkResources true - proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" - signingConfig signingConfigs.release - } - } - applicationVariants.all { variant -> - variant.outputs.each { output -> - output.outputFileName = "ReadYou-${defaultConfig.versionName}-${gitCommitHash}.apk" - } - } - kotlinOptions { - freeCompilerArgs = freeCompilerArgs + "-opt-in=kotlin.RequiresOptIn" - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 - } - kotlinOptions { - jvmTarget = JavaVersion.VERSION_11 - } - buildFeatures { - compose true - } - composeOptions { - kotlinCompilerExtensionVersion '1.5.8' - } - packagingOptions { - resources { - excludes += "/META-INF/{AL2.0,LGPL2.1}" - } - } - -// https://developer.android.com/guide/topics/resources/app-languages#auto-localeconfig - androidResources { - generateLocaleConfig true - } - - namespace 'me.ash.reader' -} - -dependencies { - // https://github.com/mikepenz/AboutLibraries/releases - implementation "com.mikepenz:aboutlibraries-core:${aboutLibsRelease}" - implementation "com.mikepenz:aboutlibraries-compose-m3:${aboutLibsRelease}" - - // https://github.com/ireward/compose-html/tags - implementation "com.github.ireward:compose-html:1.0.2" - - // http://bigbadaboom.github.io/androidsvg/release_notes.html - implementation "com.caverock:androidsvg-aar:$androidSVG" - - // https://github.com/mdewilde/opml-parser - implementation "be.ceau:opml-parser:$opmlParser" - - // https://github.com/dankito/Readability4J - implementation "net.dankito.readability4j:readability4j:$readability4j" - - // https://mvnrepository.com/artifact/com.rometools/rome - implementation "com.rometools:rome:$rome" - - // https://coil-kt.github.io/coil/changelog/ - implementation("io.coil-kt:coil-base:$coil") - implementation("io.coil-kt:coil-compose:$coil") - implementation("io.coil-kt:coil-svg:$coil") - implementation("io.coil-kt:coil-gif:$coil") - - // https://saket.github.io/telephoto/zoomableimage/ - implementation("me.saket.telephoto:zoomable:0.7.1") - - // Cancel TLSv1.3 support pre Android10 - // implementation 'org.conscrypt:conscrypt-android:2.5.2' - - // https://square.github.io/okhttp/changelogs/changelog/ - implementation "com.squareup.okhttp3:okhttp:$okhttp" - implementation "com.squareup.okhttp3:okhttp-coroutines-jvm:$okhttp" - implementation "com.squareup.retrofit2:retrofit:$retrofit2" - implementation "com.squareup.retrofit2:converter-gson:$retrofit2" - - // https://developer.android.com/jetpack/androidx/releases/profileinstaller - implementation "androidx.profileinstaller:profileinstaller:$profileinstaller" - - // https://developer.android.com/jetpack/androidx/releases/work - implementation "androidx.work:work-runtime-ktx:$work" - - // https://developer.android.com/jetpack/androidx/releases/datastore - implementation "androidx.datastore:datastore-preferences:$datastore" - - // https://developer.android.com/jetpack/androidx/releases/room - implementation "androidx.room:room-paging:$room" - implementation "androidx.room:room-common:$room" - implementation "androidx.room:room-ktx:$room" - kapt "androidx.room:room-compiler:$room" - - // https://developer.android.com/jetpack/androidx/releases/paging - implementation "androidx.paging:paging-common-ktx:$paging" - implementation "androidx.paging:paging-runtime-ktx:$paging" - implementation "androidx.paging:paging-compose:$paging" - - // https://developer.android.com/jetpack/androidx/releases/paging - implementation "androidx.browser:browser:1.8.0" - - // https://developer.android.com/jetpack/androidx/releases/navigation - implementation "androidx.navigation:navigation-compose:$navigation" - - // https://developer.android.com/jetpack/androidx/releases/lifecycle - implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle" - implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle" - - // https://developer.android.com/jetpack/androidx/releases/compose-material3 - implementation "androidx.compose.material3:material3" - - // https://github.com/google/accompanist/releases - implementation "com.google.accompanist:accompanist-pager:$accompanist" - implementation "com.google.accompanist:accompanist-flowlayout:$accompanist" - implementation "com.google.accompanist:accompanist-swiperefresh:$accompanist" - - implementation platform("androidx.compose:compose-bom:$composeBom") - androidTestImplementation(platform("androidx.compose:compose-bom:$composeBom")) - - // https://developer.android.com/jetpack/androidx/releases/compose-animation - implementation "androidx.compose.animation:animation-graphics" - // https://developer.android.com/jetpack/androidx/releases/compose-ui - implementation "androidx.compose.ui:ui" - implementation "androidx.compose.ui:ui-util" - // https://developer.android.com/jetpack/androidx/releases/compose-material - implementation "androidx.compose.material:material" - implementation "androidx.compose.material:material-icons-extended" - implementation "androidx.compose.ui:ui-tooling" - implementation "androidx.compose.ui:ui-tooling-preview" - - androidTestImplementation "androidx.compose.ui:ui-test-junit4" - - // hilt - implementation "androidx.hilt:hilt-work:1.1.0" - implementation "com.google.dagger:hilt-android:2.50" - kapt "com.google.dagger:hilt-android-compiler:2.50" -// implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03" - kapt "androidx.hilt:hilt-compiler:1.1.0" - implementation "androidx.hilt:hilt-navigation-compose:1.1.0" - - // android - implementation "androidx.core:core-ktx:1.13.1" - implementation "androidx.activity:activity-compose:1.9.0" - implementation 'androidx.appcompat:appcompat:1.7.0' - testImplementation "junit:junit:4.13.2" - androidTestImplementation "androidx.test.ext:junit:1.1.5" - androidTestImplementation "androidx.test.espresso:espresso-core:3.5.1" - - // mockito - testImplementation "org.mockito:mockito-core:5.11.0" - testImplementation 'org.mockito:mockito-junit-jupiter:5.11.0' - testImplementation "org.mockito.kotlin:mockito-kotlin:5.2.1" -} diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 000000000..8a7cafee6 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,183 @@ +import java.util.Properties +import java.io.FileInputStream + +plugins { + alias(libs.plugins.kotlin.android) + alias(libs.plugins.android.application) + alias(libs.plugins.ksp) + alias(libs.plugins.aboutlibraries) + alias(libs.plugins.room) + alias(libs.plugins.hilt) +} + +fun fetchGitCommitHash(): String { + val process = ProcessBuilder("git", "rev-parse", "--verify", "--short", "HEAD") + .redirectErrorStream(true) + .start() + return process.inputStream.bufferedReader().use { it.readText().trim() } +} + +val gitCommitHash = fetchGitCommitHash() +val keyProps = Properties() +val keyPropsFile: File = rootProject.file("signature/keystore.properties") +if (keyPropsFile.exists()) { + println("Loading keystore properties from ${keyPropsFile.absolutePath}") + keyProps.load(FileInputStream(keyPropsFile)) +} + +android { + compileSdk = 34 + + defaultConfig { + applicationId = "me.ash.reader" + minSdk = 26 + targetSdk = 33 + versionCode = 25 + versionName = "0.10.1" + + buildConfigField("String", "USER_AGENT_STRING", "\"ReadYou/${'$'}{versionName}(${versionCode})\"") + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables.useSupportLibrary = true + + room { + schemaDirectory("$projectDir/schemas") + } + + ksp { + arg("room.incremental","true") + } + } + + flavorDimensions.add("channel") + productFlavors { + create("github") { + dimension = "channel" + } + create("fdroid") { + dimension = "channel" + } + create("googlePlay") { + dimension = "channel" + applicationIdSuffix = ".google.play" + } + } + signingConfigs { + create("release") { + keyAlias = keyProps["keyAlias"] as String? + keyPassword = keyProps["keyPassword"] as String? + storeFile = keyProps["storeFile"]?.let { file(it as String) } + storePassword = keyProps["storePassword"] as String? + } + } + lint { + disable.addAll(listOf("MissingTranslation", "ExtraTranslation")) + } + buildTypes { + getByName("release") { + isMinifyEnabled = true + isShrinkResources = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + signingConfig = signingConfigs.getByName("release") + } + } + applicationVariants.all { + outputs.all { + (this as com.android.build.gradle.internal.api.BaseVariantOutputImpl).outputFileName = "ReadYou-${defaultConfig.versionName}-${gitCommitHash}.apk" + } + } + kotlinOptions { + freeCompilerArgs = freeCompilerArgs + "-opt-in=kotlin.RequiresOptIn" + jvmTarget = JavaVersion.VERSION_11.toString() + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + buildFeatures { + compose = true + buildConfig = true + } + composeOptions { + kotlinCompilerExtensionVersion = libs.versions.composeCompiler.get() + } + packaging { + resources.excludes.add("/META-INF/{AL2.0,LGPL2.1}") + } + androidResources { + generateLocaleConfig = true + } + namespace = "me.ash.reader" +} + +dependencies { + // AboutLibraries + implementation(libs.aboutlibraries.core) + implementation(libs.aboutlibraries.compose) + + // Compose + implementation(libs.compose.html) + implementation(platform(libs.compose.bom)) + androidTestImplementation(platform(libs.compose.bom)) + implementation(libs.compose.animation.graphics) + implementation(libs.compose.ui) + implementation(libs.compose.ui.util) + implementation(libs.compose.material) + implementation(libs.compose.material.icons.extended) + implementation(libs.compose.ui.tooling) + implementation(libs.compose.ui.tooling.preview) + androidTestImplementation(libs.compose.ui.test.junit4) + implementation(libs.compose.material3) + + // Accompanist + implementation(libs.accompanist.swiperefresh) + + // Coil + implementation(libs.coil.base) + implementation(libs.coil.compose) + implementation(libs.coil.svg) + implementation(libs.coil.gif) + + // Hilt + implementation(libs.hilt.work) + implementation(libs.hilt.android) + ksp(libs.hilt.android.compiler) + ksp(libs.hilt.compiler) + implementation(libs.hilt.navigation.compose) + + // AndroidX + implementation(libs.android.svg) + implementation(libs.opml.parser) + implementation(libs.readability4j) + implementation(libs.rome) + implementation(libs.telephoto) + implementation(libs.okhttp) + implementation(libs.okhttp.coroutines) + implementation(libs.retrofit) + implementation(libs.retrofit.gson) + implementation(libs.profileinstaller) + implementation(libs.work.runtime.ktx) + implementation(libs.datastore.preferences) + implementation(libs.room.paging) + implementation(libs.room.common) + implementation(libs.room.ktx) + ksp(libs.room.compiler) + implementation(libs.paging.common.ktx) + implementation(libs.paging.runtime.ktx) + implementation(libs.paging.compose) + implementation(libs.browser) + implementation(libs.navigation.compose) + implementation(libs.lifecycle.viewmodel.compose) + implementation(libs.lifecycle.runtime.ktx) + implementation(libs.core.ktx) + implementation(libs.activity.compose) + implementation(libs.appcompat) + + // Testing + testImplementation(libs.junit) + androidTestImplementation(libs.junit.ext) + androidTestImplementation(libs.espresso) + testImplementation(libs.mockito.core) + testImplementation(libs.mockito.junit.jupiter) + testImplementation(libs.mockito.kotlin) +} \ No newline at end of file diff --git a/app/src/main/java/me/ash/reader/domain/service/AbstractRssRepository.kt b/app/src/main/java/me/ash/reader/domain/service/AbstractRssRepository.kt index 906c5bcf6..8ade1db37 100644 --- a/app/src/main/java/me/ash/reader/domain/service/AbstractRssRepository.kt +++ b/app/src/main/java/me/ash/reader/domain/service/AbstractRssRepository.kt @@ -8,6 +8,7 @@ import androidx.work.ListenableWorker import androidx.work.WorkManager import com.rometools.rome.feed.synd.SyndFeed import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.flow.Flow @@ -274,6 +275,7 @@ abstract class AbstractRssRepository( } } + @OptIn(ExperimentalCoroutinesApi::class) fun pullImportant( isStarred: Boolean, isUnread: Boolean, diff --git a/app/src/main/java/me/ash/reader/infrastructure/di/OkHttpClientModule.kt b/app/src/main/java/me/ash/reader/infrastructure/di/OkHttpClientModule.kt index 2d45df76f..2973f4ff9 100644 --- a/app/src/main/java/me/ash/reader/infrastructure/di/OkHttpClientModule.kt +++ b/app/src/main/java/me/ash/reader/infrastructure/di/OkHttpClientModule.kt @@ -122,4 +122,4 @@ object UserAgentInterceptor : Interceptor { } } -const val USER_AGENT_STRING = "ReadYou/${BuildConfig.VERSION_NAME}(${BuildConfig.VERSION_CODE})" +const val USER_AGENT_STRING = BuildConfig.USER_AGENT_STRING \ No newline at end of file diff --git a/app/src/main/java/me/ash/reader/ui/component/base/AnimatedText.kt b/app/src/main/java/me/ash/reader/ui/component/base/AnimatedText.kt index d4ba8a623..4197851ca 100644 --- a/app/src/main/java/me/ash/reader/ui/component/base/AnimatedText.kt +++ b/app/src/main/java/me/ash/reader/ui/component/base/AnimatedText.kt @@ -46,7 +46,7 @@ fun AnimatedText( 200, easing = FastOutSlowInEasing ) - ) { height -> height } with slideOutVertically { height -> -height } + fadeOut( + ) { height -> height } togetherWith slideOutVertically { height -> -height } + fadeOut( tween( 200, easing = FastOutSlowInEasing diff --git a/app/src/main/java/me/ash/reader/ui/component/base/Banner.kt b/app/src/main/java/me/ash/reader/ui/component/base/Banner.kt index e9d280716..c79a2142f 100644 --- a/app/src/main/java/me/ash/reader/ui/component/base/Banner.kt +++ b/app/src/main/java/me/ash/reader/ui/component/base/Banner.kt @@ -44,7 +44,7 @@ fun Banner( Surface( modifier = modifier .fillMaxWidth() - .height(if (!desc.isNullOrBlank()) 88.dp else Dp.Unspecified), + .height(Dp.Unspecified), color = Color.Unspecified, ) { Row( @@ -57,7 +57,7 @@ fun Banner( view.playSoundEffect(SoundEffectConstants.CLICK) onClick() } - .padding(16.dp, 20.dp), + .padding(16.dp, 15.dp), verticalAlignment = Alignment.CenterVertically ) { icon?.let { icon -> diff --git a/app/src/main/java/me/ash/reader/ui/component/base/DisplayText.kt b/app/src/main/java/me/ash/reader/ui/component/base/DisplayText.kt index 82fb79792..0c8d35d80 100644 --- a/app/src/main/java/me/ash/reader/ui/component/base/DisplayText.kt +++ b/app/src/main/java/me/ash/reader/ui/component/base/DisplayText.kt @@ -1,5 +1,6 @@ package me.ash.reader.ui.component.base +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -16,6 +17,7 @@ fun DisplayText( modifier: Modifier = Modifier, text: String, desc: String, + onTextClick: () -> Unit = {}, ) { Column( modifier = modifier @@ -28,9 +30,7 @@ fun DisplayText( ) ) { Text( - // modifier = Modifier - // .height(44.dp), - // .animateContentSize(tween()), + modifier = Modifier.clickable { onTextClick() }, text = text, style = MaterialTheme.typography.displaySmall, color = MaterialTheme.colorScheme.onSurface, @@ -39,7 +39,6 @@ fun DisplayText( ) RYExtensibleVisibility(visible = desc.isNotEmpty()) { Text( - modifier = Modifier.height(16.dp), text = desc, style = MaterialTheme.typography.labelMedium, color = MaterialTheme.colorScheme.outline.copy(alpha = 0.7f), diff --git a/app/src/main/java/me/ash/reader/ui/component/base/RYOutlineTextField.kt b/app/src/main/java/me/ash/reader/ui/component/base/RYOutlineTextField.kt index 06bff56d2..1a4698eb9 100644 --- a/app/src/main/java/me/ash/reader/ui/component/base/RYOutlineTextField.kt +++ b/app/src/main/java/me/ash/reader/ui/component/base/RYOutlineTextField.kt @@ -60,8 +60,9 @@ fun RYOutlineTextField( OutlinedTextField( modifier = Modifier.focusRequester(focusRequester), - colors = TextFieldDefaults.textFieldColors( - containerColor = Color.Transparent, + colors = TextFieldDefaults.colors( + unfocusedContainerColor = Color.Transparent, + focusedContainerColor = Color.Transparent ), maxLines = if (singleLine) 1 else Int.MAX_VALUE, enabled = !readOnly, diff --git a/app/src/main/java/me/ash/reader/ui/component/base/RYScaffold.kt b/app/src/main/java/me/ash/reader/ui/component/base/RYScaffold.kt index 3997087ea..9bccc5859 100644 --- a/app/src/main/java/me/ash/reader/ui/component/base/RYScaffold.kt +++ b/app/src/main/java/me/ash/reader/ui/component/base/RYScaffold.kt @@ -44,7 +44,7 @@ fun RYScaffold( title = {}, navigationIcon = { navigationIcon?.invoke() }, actions = { actions?.invoke(this) }, - colors = TopAppBarDefaults.smallTopAppBarColors( + colors = TopAppBarDefaults.topAppBarColors( containerColor = MaterialTheme.colorScheme.surfaceColorAtElevation( topBarTonalElevation ), diff --git a/app/src/main/java/me/ash/reader/ui/component/base/RYTextField.kt b/app/src/main/java/me/ash/reader/ui/component/base/RYTextField.kt index 86824a201..10a2fc478 100644 --- a/app/src/main/java/me/ash/reader/ui/component/base/RYTextField.kt +++ b/app/src/main/java/me/ash/reader/ui/component/base/RYTextField.kt @@ -46,8 +46,9 @@ fun RYTextField( TextField( modifier = Modifier.focusRequester(focusRequester), - colors = TextFieldDefaults.textFieldColors( - containerColor = Color.Transparent, + colors = TextFieldDefaults.colors( + unfocusedContainerColor = Color.Transparent, + focusedContainerColor = Color.Transparent ), maxLines = if (singleLine) 1 else Int.MAX_VALUE, enabled = !readOnly, diff --git a/app/src/main/java/me/ash/reader/ui/component/base/ViewPager.kt b/app/src/main/java/me/ash/reader/ui/component/base/ViewPager.kt index 599c027d3..c20df8c74 100644 --- a/app/src/main/java/me/ash/reader/ui/component/base/ViewPager.kt +++ b/app/src/main/java/me/ash/reader/ui/component/base/ViewPager.kt @@ -1,26 +1,24 @@ package me.ash.reader.ui.component.base import androidx.compose.animation.animateContentSize +import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.pager.HorizontalPager +import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import com.google.accompanist.pager.ExperimentalPagerApi -import com.google.accompanist.pager.HorizontalPager -import com.google.accompanist.pager.PagerState -@OptIn(ExperimentalPagerApi::class) +@OptIn(ExperimentalFoundationApi::class) @Composable fun ViewPager( modifier: Modifier = Modifier, - state: PagerState = com.google.accompanist.pager.rememberPagerState(), composableList: List<@Composable () -> Unit>, userScrollEnabled: Boolean = true, ) { HorizontalPager( - count = composableList.size, - state = state, + state = rememberPagerState { composableList.size }, verticalAlignment = Alignment.Top, modifier = modifier .animateContentSize() @@ -30,4 +28,4 @@ fun ViewPager( ) { page -> composableList[page]() } -} \ No newline at end of file +} diff --git a/app/src/main/java/me/ash/reader/ui/ext/ModifierExt.kt b/app/src/main/java/me/ash/reader/ui/ext/ModifierExt.kt index 14931de55..e1b985b0e 100644 --- a/app/src/main/java/me/ash/reader/ui/ext/ModifierExt.kt +++ b/app/src/main/java/me/ash/reader/ui/ext/ModifierExt.kt @@ -19,30 +19,18 @@ import androidx.compose.ui.platform.LocalView import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.lerp -import com.google.accompanist.pager.ExperimentalPagerApi -import com.google.accompanist.pager.PagerScope -import com.google.accompanist.pager.calculateCurrentOffsetForPage +import androidx.compose.foundation.pager.PagerState import kotlin.math.absoluteValue -@OptIn(ExperimentalPagerApi::class) -fun Modifier.pagerAnimate(pagerScope: PagerScope, page: Int): Modifier { +@OptIn(ExperimentalFoundationApi::class) +fun Modifier.pagerAnimate(pagerState: PagerState, page: Int): Modifier { return graphicsLayer { // Calculate the absolute offset for the current page from the // scroll position. We use the absolute value which allows us to mirror // any effects for both directions - val pageOffset = pagerScope.calculateCurrentOffsetForPage(page).absoluteValue + val pageOffset = ((pagerState.currentPage - page) + pagerState.currentPageOffsetFraction).absoluteValue - // We animate the scaleX + scaleY, between 85% and 100% -// lerp( -// start = 0.85f.dp, -// stop = 1f.dp, -// fraction = 1f - pageOffset.coerceIn(0f, 1f) -// ).also { scale -> -// scaleX = scale.value -// scaleY = scale.value -// } - - // We animate the alpha, between 50% and 100% + // We animate the alpha, between 20% and 100% alpha = lerp( start = 0.2f.dp, stop = 1f.dp, diff --git a/app/src/main/java/me/ash/reader/ui/ext/PagerStateExt.kt b/app/src/main/java/me/ash/reader/ui/ext/PagerStateExt.kt index 1dba85b11..07c0f601c 100644 --- a/app/src/main/java/me/ash/reader/ui/ext/PagerStateExt.kt +++ b/app/src/main/java/me/ash/reader/ui/ext/PagerStateExt.kt @@ -1,11 +1,11 @@ package me.ash.reader.ui.ext -import com.google.accompanist.pager.ExperimentalPagerApi -import com.google.accompanist.pager.PagerState +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.pager.PagerState import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch -@OptIn(ExperimentalPagerApi::class) +@OptIn(ExperimentalFoundationApi::class) fun PagerState.animateScrollToPage( scope: CoroutineScope, targetPage: Int, diff --git a/app/src/main/java/me/ash/reader/ui/ext/StringExt.kt b/app/src/main/java/me/ash/reader/ui/ext/StringExt.kt index 321de6112..063c503f9 100644 --- a/app/src/main/java/me/ash/reader/ui/ext/StringExt.kt +++ b/app/src/main/java/me/ash/reader/ui/ext/StringExt.kt @@ -43,7 +43,7 @@ fun String.md5(): String = BigInteger(1, MessageDigest.getInstance("MD5").digest(toByteArray())) .toString(16).padStart(32, '0') -fun String?.decodeHTML(): String? = this?.run { Html.fromHtml(this).toString() } +fun String?.decodeHTML(): String? = this?.run { Html.fromHtml(this, Html.FROM_HTML_MODE_LEGACY).toString() } fun String?.orNotEmpty(l: (value: String) -> String): String = if (this.isNullOrBlank()) "" else l(this) diff --git a/app/src/main/java/me/ash/reader/ui/page/common/HomeEntry.kt b/app/src/main/java/me/ash/reader/ui/page/common/HomeEntry.kt index 41cce368c..6d4dec806 100644 --- a/app/src/main/java/me/ash/reader/ui/page/common/HomeEntry.kt +++ b/app/src/main/java/me/ash/reader/ui/page/common/HomeEntry.kt @@ -69,7 +69,7 @@ fun HomeEntry( val intent by rememberSaveable { mutableStateOf(context.findActivity()?.intent) } var openArticleId by rememberSaveable { - mutableStateOf(intent?.extras?.get(ExtraName.ARTICLE_ID)?.toString() ?: "") + mutableStateOf(intent?.extras?.getString(ExtraName.ARTICLE_ID) ?: "") }.also { intent?.replaceExtras(null) } diff --git a/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedOptionView.kt b/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedOptionView.kt index c4a9e45e0..3f68ca612 100644 --- a/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedOptionView.kt +++ b/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedOptionView.kt @@ -9,7 +9,6 @@ import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.outlined.Article import androidx.compose.material.icons.outlined.Add -import androidx.compose.material.icons.outlined.Article import androidx.compose.material.icons.outlined.Notifications import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -22,9 +21,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import com.google.accompanist.flowlayout.FlowCrossAxisAlignment -import com.google.accompanist.flowlayout.FlowRow -import com.google.accompanist.flowlayout.MainAxisAlignment +import androidx.compose.foundation.layout.FlowRow import me.ash.reader.R import me.ash.reader.domain.model.group.Group import me.ash.reader.ui.component.base.RYSelectionChip @@ -119,6 +116,7 @@ private fun EditableUrl( } } +@OptIn(ExperimentalLayoutApi::class) @Composable private fun Preset( selectedAllowNotificationPreset: Boolean = false, @@ -133,10 +131,8 @@ private fun Preset( Subtitle(text = stringResource(R.string.preset)) Spacer(modifier = Modifier.height(10.dp)) FlowRow( - mainAxisAlignment = MainAxisAlignment.Start, - crossAxisAlignment = FlowCrossAxisAlignment.Center, - crossAxisSpacing = 10.dp, - mainAxisSpacing = 10.dp, + horizontalArrangement = Arrangement.spacedBy(10.dp, Alignment.Start), + verticalArrangement = Arrangement.spacedBy(10.dp, Alignment.CenterVertically), ) { RYSelectionChip( modifier = Modifier.animateContentSize(), @@ -193,6 +189,7 @@ private fun Preset( } } +@OptIn(ExperimentalLayoutApi::class) @Composable private fun AddToGroup( isMoveToGroup: Boolean = false, @@ -222,10 +219,8 @@ private fun AddToGroup( } } else { FlowRow( - mainAxisAlignment = MainAxisAlignment.Start, - crossAxisAlignment = FlowCrossAxisAlignment.Center, - crossAxisSpacing = 10.dp, - mainAxisSpacing = 10.dp, + horizontalArrangement = Arrangement.spacedBy(10.dp, Alignment.Start), + verticalArrangement = Arrangement.spacedBy(10.dp, Alignment.CenterVertically), ) { groups.forEach { RYSelectionChip( diff --git a/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsPage.kt b/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsPage.kt index e1a12c3e2..d1f5294f3 100644 --- a/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsPage.kt +++ b/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsPage.kt @@ -79,6 +79,7 @@ import me.ash.reader.ui.ext.collectAsStateValue import me.ash.reader.ui.ext.currentAccountId import me.ash.reader.ui.ext.findActivity import me.ash.reader.ui.ext.getCurrentVersion +import me.ash.reader.ui.ext.getDefaultGroupId import me.ash.reader.ui.page.common.RouteName import me.ash.reader.ui.page.home.FilterState import me.ash.reader.ui.page.home.HomeViewModel @@ -238,12 +239,9 @@ fun FeedsPage( ) { item { DisplayText( - modifier = Modifier.clickable { - accountTabVisible = true - }, text = feedsUiState.account?.name ?: "", desc = if (isSyncing) stringResource(R.string.syncing) else "", - ) + ) { accountTabVisible = true } } item { Banner( @@ -267,6 +265,7 @@ fun FeedsPage( ) } } + item { Spacer(modifier = Modifier.height(24.dp)) Row( @@ -317,36 +316,43 @@ fun FeedsPage( } Spacer(modifier = Modifier.height(8.dp)) } + + val defaultGroupId = context.currentAccountId.getDefaultGroupId() + itemsIndexed(groupWithFeedList) { index, groupWithFeed -> when (groupWithFeed) { is GroupFeedsView.Group -> { Spacer(modifier = Modifier.height(16.dp)) - GroupItem( - isExpanded = { - groupsVisible.getOrPut( - groupWithFeed.group.id, - groupListExpand::value + + if (groupWithFeed.group.id != defaultGroupId || groupWithFeed.group.feeds > 0) { + GroupItem( + isExpanded = { + groupsVisible.getOrPut( + groupWithFeed.group.id, + groupListExpand::value + ) + }, + group = groupWithFeed.group, + alpha = groupAlpha, + indicatorAlpha = groupIndicatorAlpha, + roundedBottomCorner = { index == groupWithFeedList.lastIndex || groupWithFeed.group.feeds == 0 }, + onExpanded = { + groupsVisible[groupWithFeed.group.id] = + groupsVisible.getOrPut( + groupWithFeed.group.id, + groupListExpand::value + ).not() + } + ) { + filterChange( + navController = navController, + homeViewModel = homeViewModel, + filterState = filterUiState.copy( + group = groupWithFeed.group, + feed = null, + ) ) - }, - group = groupWithFeed.group, - alpha = groupAlpha, - indicatorAlpha = groupIndicatorAlpha, - roundedBottomCorner = { index == groupWithFeedList.lastIndex || groupWithFeed.group.feeds == 0 }, - onExpanded = { - groupsVisible[groupWithFeed.group.id] = groupsVisible.getOrPut( - groupWithFeed.group.id, - groupListExpand::value - ).not() } - ) { - filterChange( - navController = navController, - homeViewModel = homeViewModel, - filterState = filterUiState.copy( - group = groupWithFeed.group, - feed = null, - ) - ) } } diff --git a/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsViewModel.kt b/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsViewModel.kt index 478adf12d..3932fb8e5 100644 --- a/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsViewModel.kt +++ b/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsViewModel.kt @@ -7,6 +7,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch import me.ash.reader.R @@ -39,6 +40,7 @@ class FeedsViewModel @Inject constructor( } } + @OptIn(ExperimentalCoroutinesApi::class) fun pullFeeds(filterState: FilterState) { val isStarred = filterState.filter.isStarred() val isUnread = filterState.filter.isUnread() diff --git a/app/src/main/java/me/ash/reader/ui/page/home/feeds/accounts/AccountsTab.kt b/app/src/main/java/me/ash/reader/ui/page/home/feeds/accounts/AccountsTab.kt index c90268b34..41851e3f5 100644 --- a/app/src/main/java/me/ash/reader/ui/page/home/feeds/accounts/AccountsTab.kt +++ b/app/src/main/java/me/ash/reader/ui/page/home/feeds/accounts/AccountsTab.kt @@ -22,15 +22,14 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.google.accompanist.flowlayout.FlowCrossAxisAlignment -import com.google.accompanist.flowlayout.FlowRow -import com.google.accompanist.flowlayout.MainAxisAlignment +import androidx.compose.foundation.layout.FlowRow import me.ash.reader.R import me.ash.reader.domain.model.account.Account import me.ash.reader.ui.component.base.RYDialog import me.ash.reader.ui.ext.currentAccountId import me.ash.reader.ui.theme.palette.alwaysLight +@OptIn(ExperimentalLayoutApi::class) @Composable fun AccountsTab( modifier: Modifier = Modifier, @@ -58,10 +57,8 @@ fun AccountsTab( }, text = { FlowRow( - mainAxisAlignment = MainAxisAlignment.Start, - crossAxisAlignment = FlowCrossAxisAlignment.Start, - crossAxisSpacing = 10.dp, - mainAxisSpacing = 10.dp, + horizontalArrangement = Arrangement.spacedBy(10.dp, Alignment.Start), + verticalArrangement = Arrangement.spacedBy(10.dp, Alignment.CenterVertically), ) { accounts.forEach { account -> Column( diff --git a/app/src/main/java/me/ash/reader/ui/page/home/feeds/drawer/group/GroupOptionDrawer.kt b/app/src/main/java/me/ash/reader/ui/page/home/feeds/drawer/group/GroupOptionDrawer.kt index c6598cafe..ad7ecbeb4 100644 --- a/app/src/main/java/me/ash/reader/ui/page/home/feeds/drawer/group/GroupOptionDrawer.kt +++ b/app/src/main/java/me/ash/reader/ui/page/home/feeds/drawer/group/GroupOptionDrawer.kt @@ -27,9 +27,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel -import com.google.accompanist.flowlayout.FlowCrossAxisAlignment -import com.google.accompanist.flowlayout.FlowRow -import com.google.accompanist.flowlayout.MainAxisAlignment +import androidx.compose.foundation.layout.FlowRow import kotlinx.coroutines.launch import me.ash.reader.R import me.ash.reader.domain.model.group.Group @@ -149,6 +147,7 @@ fun GroupOptionDrawer( ) } +@OptIn(ExperimentalLayoutApi::class) @Composable private fun Preset( viewModel: GroupOptionViewModel, @@ -156,10 +155,8 @@ private fun Preset( context: Context, ) { FlowRow( - mainAxisAlignment = MainAxisAlignment.Start, - crossAxisAlignment = FlowCrossAxisAlignment.Center, - crossAxisSpacing = 10.dp, - mainAxisSpacing = 10.dp, + horizontalArrangement = Arrangement.spacedBy(10.dp, Alignment.Start), + verticalArrangement = Arrangement.spacedBy(10.dp, Alignment.CenterVertically), ) { RYSelectionChip( modifier = Modifier.animateContentSize(), @@ -212,6 +209,7 @@ private fun Preset( } } +@OptIn(ExperimentalLayoutApi::class) @Composable private fun FlowRowGroups( groupOptionUiState: GroupOptionUiState, @@ -219,10 +217,8 @@ private fun FlowRowGroups( groupOptionViewModel: GroupOptionViewModel, ) { FlowRow( - mainAxisAlignment = MainAxisAlignment.Start, - crossAxisAlignment = FlowCrossAxisAlignment.Center, - crossAxisSpacing = 10.dp, - mainAxisSpacing = 10.dp, + horizontalArrangement = Arrangement.spacedBy(10.dp, Alignment.Start), + verticalArrangement = Arrangement.spacedBy(10.dp, Alignment.CenterVertically), ) { groupOptionUiState.groups.forEach { if (it.id != group?.id) { diff --git a/app/src/main/java/me/ash/reader/ui/page/home/feeds/subscribe/SubscribeDialog.kt b/app/src/main/java/me/ash/reader/ui/page/home/feeds/subscribe/SubscribeDialog.kt index 7a6834086..3fe71c824 100644 --- a/app/src/main/java/me/ash/reader/ui/page/home/feeds/subscribe/SubscribeDialog.kt +++ b/app/src/main/java/me/ash/reader/ui/page/home/feeds/subscribe/SubscribeDialog.kt @@ -8,6 +8,7 @@ import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.slideInHorizontally import androidx.compose.animation.slideOutHorizontally +import androidx.compose.animation.togetherWith import androidx.compose.animation.with import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons @@ -104,8 +105,8 @@ fun SubscribeDialog( AnimatedContent( targetState = subscribeUiState.isSearchPage, transitionSpec = { - slideInHorizontally { width -> width } + fadeIn() with - slideOutHorizontally { width -> -width } + fadeOut() + (slideInHorizontally { width -> width } + fadeIn()).togetherWith( + slideOutHorizontally { width -> -width } + fadeOut()) } ) { targetExpanded -> if (targetExpanded) { diff --git a/app/src/main/java/me/ash/reader/ui/page/home/flow/FlowPage.kt b/app/src/main/java/me/ash/reader/ui/page/home/flow/FlowPage.kt index d7e5e0c8d..30223b094 100644 --- a/app/src/main/java/me/ash/reader/ui/page/home/flow/FlowPage.kt +++ b/app/src/main/java/me/ash/reader/ui/page/home/flow/FlowPage.kt @@ -61,7 +61,6 @@ import me.ash.reader.ui.page.common.RouteName import me.ash.reader.ui.page.home.HomeViewModel @OptIn( - com.google.accompanist.pager.ExperimentalPagerApi::class, androidx.compose.ui.ExperimentalComposeUiApi::class, ) @Composable diff --git a/app/src/main/java/me/ash/reader/ui/page/home/reading/TopBar.kt b/app/src/main/java/me/ash/reader/ui/page/home/reading/TopBar.kt index 205ab715e..c589a2643 100644 --- a/app/src/main/java/me/ash/reader/ui/page/home/reading/TopBar.kt +++ b/app/src/main/java/me/ash/reader/ui/page/home/reading/TopBar.kt @@ -81,7 +81,7 @@ fun TopBar( ) { sharedContent.share(context, title, link) } - }, colors = TopAppBarDefaults.smallTopAppBarColors( + }, colors = TopAppBarDefaults.topAppBarColors( containerColor = MaterialTheme.colorScheme.surfaceColorAtElevation(tonalElevation.value.dp), ) ) diff --git a/app/src/main/java/me/ash/reader/ui/page/settings/SettingItem.kt b/app/src/main/java/me/ash/reader/ui/page/settings/SettingItem.kt index 1054a6415..12063f0c4 100644 --- a/app/src/main/java/me/ash/reader/ui/page/settings/SettingItem.kt +++ b/app/src/main/java/me/ash/reader/ui/page/settings/SettingItem.kt @@ -85,11 +85,11 @@ fun SettingItem( } action?.let { if (separatedActions) { - Divider( + HorizontalDivider( modifier = Modifier .padding(start = 16.dp) .size(1.dp, 32.dp), - color = tonalPalettes neutralVariant 80 onDark (tonalPalettes neutralVariant 30), + color = tonalPalettes neutralVariant 80 onDark (tonalPalettes neutralVariant 30) ) } Box(Modifier.padding(start = 16.dp)) { diff --git a/app/src/main/java/me/ash/reader/ui/page/settings/color/feeds/FeedsPagePreview.kt b/app/src/main/java/me/ash/reader/ui/page/settings/color/feeds/FeedsPagePreview.kt index 67533542b..35dc09458 100644 --- a/app/src/main/java/me/ash/reader/ui/page/settings/color/feeds/FeedsPagePreview.kt +++ b/app/src/main/java/me/ash/reader/ui/page/settings/color/feeds/FeedsPagePreview.kt @@ -88,7 +88,7 @@ fun FeedsPagePreview( contentDescription = stringResource(R.string.subscribe), tint = MaterialTheme.colorScheme.onSurface, ) - }, colors = TopAppBarDefaults.smallTopAppBarColors( + }, colors = TopAppBarDefaults.topAppBarColors( containerColor = MaterialTheme.colorScheme.surfaceColorAtElevation( topBarTonalElevation.value.dp ), diff --git a/app/src/main/java/me/ash/reader/ui/page/settings/color/flow/FlowPagePreview.kt b/app/src/main/java/me/ash/reader/ui/page/settings/color/flow/FlowPagePreview.kt index 073f5019e..1114e0bf3 100644 --- a/app/src/main/java/me/ash/reader/ui/page/settings/color/flow/FlowPagePreview.kt +++ b/app/src/main/java/me/ash/reader/ui/page/settings/color/flow/FlowPagePreview.kt @@ -26,7 +26,6 @@ import me.ash.reader.domain.model.feed.Feed import me.ash.reader.domain.model.general.Filter import me.ash.reader.infrastructure.preference.FlowArticleListTonalElevationPreference import me.ash.reader.infrastructure.preference.FlowTopBarTonalElevationPreference -import me.ash.reader.infrastructure.preference.LocalDarkTheme import me.ash.reader.ui.component.FilterBar import me.ash.reader.ui.component.base.FeedbackIconButton import me.ash.reader.ui.ext.surfaceColorAtElevation @@ -76,7 +75,7 @@ fun FlowPagePreview( contentDescription = stringResource(R.string.search), tint = MaterialTheme.colorScheme.onSurface, ) {} - }, colors = TopAppBarDefaults.smallTopAppBarColors( + }, colors = TopAppBarDefaults.topAppBarColors( containerColor = MaterialTheme.colorScheme.surfaceColorAtElevation( topBarTonalElevation.value.dp ), diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 8affae9ef..a1bec965c 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -113,7 +113,6 @@ يتوفَّر الإصدار %1$s احصل على التحديثات الجديدة اللون والأسلوب - الإنجليزيَّة، الصينيَّة، إلخ أغلق صفحة البداية، استجابة اللمس التلميحات والدعم diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 397a176aa..088e5ec5b 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -103,7 +103,6 @@ Езици - английски, китайски и др Съвети и поддръжка Относно лицензите с отворен код Прегледайте Условията за ползване и Политиката за поверителност diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 7906e70fb..8baa122d6 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -101,7 +101,6 @@ Interacció Pàgina d\'inici, feedback hàptic Llenguatges - Anglès, xinès i altres Ajuda a la traducció Aplica el llenguatge del dispositiu Sobre les llicències de codi obert diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index e23b36d8d..b6f97f970 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -102,7 +102,6 @@ Interakce Úvodní stránka, haptická odezva Jazyky - Angličtina, Čeština, více Pomozte nám s překladem Použít jazyk zařízení Tipy a podpora diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 17fad8994..aa37da5a0 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -101,7 +101,6 @@ I kode Startside, haptisk feedback Sprog - Engelsk, Kinesisk, med mere Tema, farvestil, skriftstørrelse Interaktion Hjælp med at oversætte diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index c28b0a1f9..a50344d26 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -99,7 +99,6 @@ Interaktion Haptisches Feedback beim Start Sprachen - Deutsch, Englisch, andere Hilf uns beim Übersetzen Gerätesprache verwenden Tipps & Support diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index 8ddc190c7..19905ea8d 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -67,7 +67,6 @@ Koloro ⳤ stilo Interago Komenca paĝo, haptika retrosciigo - Angla, Ĉina, pli Helpu traduki Uzi aparatlingvon Konsiloj ⳤ subteno diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 870fe0ee8..7be4c371c 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -102,7 +102,6 @@ Interacción Página inicial, respuesta táctil Idiomas - Inglés, Chino, más Ayuda para traducir Usar idioma del dispositivo Consejos y ayuda diff --git a/app/src/main/res/values-eu-rES/strings.xml b/app/src/main/res/values-eu-rES/strings.xml index 1bbb06c23..2624f6a6a 100644 --- a/app/src/main/res/values-eu-rES/strings.xml +++ b/app/src/main/res/values-eu-rES/strings.xml @@ -99,7 +99,6 @@ Interakzioa Abioa, ukipen-atzeraelikadura Hizkuntzak - Ingelesa, Txinera, gehiago Itzulpenarekin lagundu Gailuaren hizkuntza erabili Aholkuak eta babesa diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index fed2733d8..bca4ea01b 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -87,7 +87,6 @@ اثر متقابل صفحه اولیه، بازخورد لمسی زبان ها - انگلیسی، چینی و غیره کمک در ترجمه استفاده از زبان دستگاه نکات و پشتیبانی diff --git a/app/src/main/res/values-fil/strings.xml b/app/src/main/res/values-fil/strings.xml index 22cc36f61..ef3642aab 100644 --- a/app/src/main/res/values-fil/strings.xml +++ b/app/src/main/res/values-fil/strings.xml @@ -62,7 +62,6 @@ Pag-interact Nangungunang pahina, haptic feedback Mga Wika - Ingles, Chinese, marami pa Tumulong magsalin Gamitin ang wika ng device Mga tip at support diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index c7e1b72fb..ffda82357 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -102,7 +102,6 @@ Comportement Page de démarrage, retour haptique Langues - Français, anglais et plus Aidez-nous à traduire Utiliser la langue système Aide et assistance diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index 968cc25e8..33948e69c 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -99,7 +99,6 @@ प्रभाव प्रारंभिक पृष्ठ, हैप्टिक फीडबैक भाषाएं - अंग्रेजी , चीनी भाषा, और भी अनुवाद में सहायता करें डिवाइस भाषा का उपयोग करें सुझाव और सहायता diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index d8d6d622c..9638d735a 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -144,7 +144,6 @@ Téma, színstílus, betűméret Interakció Nyelvek - Angol, kínai és továbbiak Segítsen a fordításban Eszköz nyelvének használata Tippek és támogatás diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml index 7780e1529..6fc0eb5dd 100644 --- a/app/src/main/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-in-rID/strings.xml @@ -99,7 +99,6 @@ Interaksi Halaman awal, getaran haptik Bahasa - Inggris, Mandarin, dll Bantu terjemahkan Gunakan bahasa perangkat Tips dan Bantuan diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index b00b05c78..a2dd4a96f 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -102,7 +102,6 @@ Interazione Pagina iniziale, feedback aptico Lingue - Inglese, Cinese, altre Aiuta a tradurre Usa la lingua del dispositivo Note e supporto diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 994083bf9..6bd044b51 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -38,7 +38,6 @@ אינטראקציה עמוד ראשוני, משוב ברטט שפות - אנגלית, עברית ועוד עזרה בתרגום להשתמש בשפת המכשיר עצות ותמיכה diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 8c18c1a90..18aabca56 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -33,7 +33,6 @@ 操作 起動時のページ、触覚フィードバック 言語 - 英語、中国語、その他 翻訳を手伝う ようこそ 利用規約 diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml index 1f7f3fbce..f1709f664 100644 --- a/app/src/main/res/values-kn/strings.xml +++ b/app/src/main/res/values-kn/strings.xml @@ -92,7 +92,6 @@ ಹೊಸ ಆವೃತ್ತಿ %1$s ಲಭ್ಯವಿದೆ ಬಣ್ಣ ಮತ್ತು ಶೈಲಿ ಭಾಷೆಗಳು - ಇಂಗ್ಲೀಷ್, ಚೈನೀಸ್, ಹೆಚ್ಚು ಅನುವಾದಿಸಲು ಸಹಾಯ ಮಾಡಿ ಸಲಹೆಗಳು ಮತ್ತು ಬೆಂಬಲ ಕುರಿತು, ಮುಕ್ತ ಮೂಲ ಪರವಾನಗಿಗಳು diff --git a/app/src/main/res/values-lzh/strings.xml b/app/src/main/res/values-lzh/strings.xml index ad8e7e11b..c49c38c96 100644 --- a/app/src/main/res/values-lzh/strings.xml +++ b/app/src/main/res/values-lzh/strings.xml @@ -42,7 +42,6 @@ 预置 已选取 告知往来 - 英语、简体中文、更多 罗列 更多 增添 diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 5536fb59c..7799a525e 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -15,7 +15,6 @@ Marker som stjernemerket Kontoer Drakt, fargestil, skriftstørrelse - Engelsk, kinesisk, med mer Tjenestevilkår Mørk drakt Bruk enhetsdrakten diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 914bdcf03..54ce4eb9d 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -116,7 +116,6 @@ Ontvang nieuwe updates Binnenkort beschikbaar Talen - Engels, Chinees, meer Help met vertalen Tips & ondersteuning Basiskleuren diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index 50b615d61..44ea98407 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -102,7 +102,6 @@ Interakcje Strona startowa, reakcja na dotyk Język - Angielski, Chiński i więcej Pomóż w tłumaczeniu Zgodny z systemem Porady i wsparcie diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 2385ad778..a52356fb5 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -81,7 +81,6 @@ Interação Página Inicial, Feedback Tátil Idiomas - Português, Inglês, Chinês, mais Ajude a traduzir Usar o idioma do dispositivo Bem-vindo diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 2342069aa..d774c859b 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -108,7 +108,6 @@ Tema, estilo de cores e tamanho da letra Interação Idiomas - Português, Inglês, Chinês, e mais Ajude a traduzir Utilizar o idioma do sistema Dicas e apoio diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 994ffd4df..8fbce0e79 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -3,7 +3,6 @@ Limbi Răsfoiți Termenii și condițiile și Politica de confidențialitate 3z - Română, Engleză, etc Culoare primară Pictograme și etichete Culori de fundal diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index 65aad57bb..24e54b704 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -87,7 +87,6 @@ Взаимодействие При запуске, тактильная обратная связь Локализация - Английский, Китайский, и прочие Цвет & стиль Подзаголовок Использовать тему устройства diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index d19bf6984..9c2eed539 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -70,7 +70,6 @@ Miestne, FreshRSS Farba a štýl Téma, farebný štýl, veľkosť písma - Angličtina, čínština a ďalšie Jazyky Pomôžte s prekladom Použiť jazyk zariadenia diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 5df657fe4..d37563cf9 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -164,7 +164,6 @@ Včeraj Dodaj med priljubljene Odjavite se od \"%1$s\" in izbrišite vse arhivirane novice iz tega vira - angleščina, kitajščina, več Naslednje možnosti veljajo za vse vire v tej skupini Dobrodošli Označi kot prebrano diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 55698102b..dcde5381f 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -3,7 +3,6 @@ Језици Погледајте Услове коришћења и Политику приватности - енглески, кинески, остали Примарне боје Иконице и ознаке Боје позадине diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 912d140c8..b3858e554 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -185,7 +185,6 @@ Rensa alla arkiverade artiklar i gruppen \"%1$s\". Råd & hjälp Hämta nya uppdateringar - Engelska, Kinesiska, ytterligare Om, öppen källkodlicenser Använd enhetens språk Tjänstevillkor diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 2d3abd78e..883856622 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -170,7 +170,6 @@ Cihaz temasını kullan İlk sayfa, haptik geribildirim #666666 veya 666666 gibi - İngilizce, Çince, daha fazlası Çeviriye yardım et Ana Renk Güncelle diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 7e1e47a54..3f02dc9fe 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -74,7 +74,6 @@ Позначити як Обране Позначити як прочитане більше 1 дня Позначити як прочитане більше 7 днів тому - Англійська, Китайська, інші Ласкаво Просимо Про застосунок, ліцензії з відкритим кодом Будь ласка, прочитайте та прийміть Умови надання послуг та Політику конфіденційності, щоб продовжити. diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 3408d987b..61c3c803a 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -81,7 +81,6 @@ Sẽ sớm ra mắt Tài khoản Điện thoại, FreshRSS - Anh, Việt, Trung và hơn nữa Giúp dịch Dùng ngôn ngữ thiết bị Mẹo & hỗ trợ diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index dfaea2d55..0157cde2e 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -97,7 +97,6 @@ 交互 初始页面、触感反馈 语言 - 英语、简体中文、更多 跟随系统设置 帮助我们翻译 提示和支持 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 991cfd42e..ce3aebf4b 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -96,7 +96,6 @@ 互動 起始頁面、觸覺回饋 語言 - 英文、中文、更多 使用裝置語言 協助翻譯 提示和支援 diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 0b29d6ca7..000000000 --- a/build.gradle +++ /dev/null @@ -1,56 +0,0 @@ -buildscript { - ext { -// https://developer.android.com/jetpack/androidx/releases/compose-ui -// compose = '1.2.0-beta02' - // https://developer.android.com/jetpack/compose/bom - composeBom = '2024.05.00' - // https://github.com/google/accompanist/releases - accompanist = '0.34.0' - // https://developer.android.com/jetpack/androidx/releases/compose-material3 -// material3 = '1.2.0-rc01' - // https://developer.android.com/jetpack/androidx/releases/lifecycle - lifecycle = '2.8.1' - // https://developer.android.com/jetpack/androidx/releases/navigation - navigation = '2.7.7' - // https://developer.android.com/jetpack/androidx/releases/paging - paging = '3.3.0' - // https://developer.android.com/jetpack/androidx/releases/room - room = '2.6.1' - // https://developer.android.com/jetpack/androidx/releases/datastore - datastore = '1.1.1' - // https://developer.android.com/jetpack/androidx/releases/work - work = '2.9.0' - // https://developer.android.com/jetpack/androidx/releases/profileinstaller - profileinstaller = '1.3.1' - // https://square.github.io/okhttp/changelogs/changelog/ - okhttp = '5.0.0-alpha.12' - retrofit2 = '2.9.0' - // https://coil-kt.github.io/coil/changelog/ - coil = '2.5.0' - // https://mvnrepository.com/artifact/com.rometools/rome - rome = '1.18.0' - // https://github.com/dankito/Readability4J - readability4j = '1.0.8' - // https://github.com/mdewilde/opml-parser - opmlParser = '3.1.0' - // http://bigbadaboom.github.io/androidsvg/release_notes.html - androidSVG = '1.4' - // https://github.com/mikepenz/AboutLibraries/releases - aboutLibsRelease = '11.1.1' - } - - dependencies { - classpath 'com.google.dagger:hilt-android-gradle-plugin:2.50' - } -} - -plugins { - id 'com.android.application' version '8.2.1' apply false - id 'com.android.library' version '8.2.1' apply false - id 'org.jetbrains.kotlin.android' version '1.9.22' apply false - id 'com.mikepenz.aboutlibraries.plugin' version "${aboutLibsRelease}" apply false -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 000000000..a7ce84225 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,13 @@ +plugins { + alias(libs.plugins.android.application) apply false + alias(libs.plugins.android.library) apply false + alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.ksp) apply false + alias(libs.plugins.aboutlibraries) apply false + alias(libs.plugins.room) apply false + alias(libs.plugins.hilt) apply false +} + +tasks.register("clean") { + delete(rootProject.layout.buildDirectory) +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index a77285de8..81acb424c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 -XX:+UseParallelGC org.gradle.parallel=true +android.buildConfig = true android.useAndroidX=true -android.defaults.buildfeatures.buildconfig=true -android.nonTransitiveRClass=false -android.nonFinalResIds=false +android.nonTransitiveRClass=true +android.nonFinalResIds=true android.enableR8.fullMode=false \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 000000000..f2a74521f --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,134 @@ +[versions] +# Android Gradle Plugin +androidGradlePlugin = "8.2.1" + +# Kotlin +kotlin = "1.9.22" +ksp = "1.9.22-1.0.17" + +# AboutLibraries +aboutLibsRelease = "11.1.1" + +# Accompanist +accompanist = "0.34.0" + +# AndroidX +activityCompose = "1.9.0" +appcompat = "1.7.0" +browser = "1.8.0" +coreKtx = "1.13.1" +datastore = "1.1.1" +espresso = "3.5.1" +lifecycle = "2.8.1" +navigation = "2.7.7" +paging = "3.3.0" +profileinstaller = "1.3.1" +room = "2.6.1" +work = "2.9.0" + +# Compose +composeBom = "2024.05.00" +composeCompiler = "1.5.8" +composeHtml = "1.0.2" + +# Coil +coil = "2.5.0" + +# Hilt +hiltAndroid = "2.50" +hiltCompiler = "1.1.0" +hiltNavigationCompose = "1.1.0" +hiltWork = "1.1.0" + +# Miscellaneous Libraries +androidSVG = "1.4" +junit = "4.13.2" +junitExt = "1.1.5" +mockitoCore = "5.11.0" +mockitoJUnitJupiter = "5.11.0" +mockitoKotlin = "5.2.1" +okhttp = "5.0.0-alpha.12" +opmlParser = "3.1.0" +readability4j = "1.0.8" +retrofit2 = "2.9.0" +rome = "1.18.0" +telephoto = "0.7.1" + +[libraries] +# AboutLibraries +aboutlibraries-core = { group = "com.mikepenz", name = "aboutlibraries-core", version.ref = "aboutLibsRelease" } +aboutlibraries-compose = { group = "com.mikepenz", name = "aboutlibraries-compose-m3", version.ref = "aboutLibsRelease" } + +# Compose +compose-html = { group = "com.github.ireward", name = "compose-html", version.ref = "composeHtml" } +compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } +compose-animation-graphics = { group = "androidx.compose.animation", name = "animation-graphics" } +compose-ui = { group = "androidx.compose.ui", name = "ui" } +compose-ui-util = { group = "androidx.compose.ui", name = "ui-util" } +compose-material = { group = "androidx.compose.material", name = "material" } +compose-material-icons-extended = { group = "androidx.compose.material", name = "material-icons-extended" } +compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } +compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } +compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } +compose-material3 = { group = "androidx.compose.material3", name = "material3" } + +# Accompanist +accompanist-swiperefresh = { group = "com.google.accompanist", name = "accompanist-swiperefresh", version.ref = "accompanist" } + +# Coil +coil-base = { group = "io.coil-kt", name = "coil-base", version.ref = "coil" } +coil-compose = { group = "io.coil-kt", name = "coil-compose", version.ref = "coil" } +coil-svg = { group = "io.coil-kt", name = "coil-svg", version.ref = "coil" } +coil-gif = { group = "io.coil-kt", name = "coil-gif", version.ref = "coil" } + +# Hilt +hilt-work = { group = "androidx.hilt", name = "hilt-work", version.ref = "hiltWork" } +hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hiltAndroid" } +hilt-android-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "hiltAndroid" } +hilt-compiler = { group = "androidx.hilt", name = "hilt-compiler", version.ref = "hiltCompiler" } +hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "hiltNavigationCompose" } + +# AndroidX +android-svg = { group = "com.caverock", name = "androidsvg-aar", version.ref = "androidSVG" } +opml-parser = { group = "be.ceau", name = "opml-parser", version.ref = "opmlParser" } +readability4j = { group = "net.dankito.readability4j", name = "readability4j", version.ref = "readability4j" } +rome = { group = "com.rometools", name = "rome", version.ref = "rome" } +telephoto = { group = "me.saket.telephoto", name = "zoomable", version.ref = "telephoto" } +okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" } +okhttp-coroutines = { group = "com.squareup.okhttp3", name = "okhttp-coroutines-jvm", version.ref = "okhttp" } +retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit2" } +retrofit-gson = { group = "com.squareup.retrofit2", name = "converter-gson", version.ref = "retrofit2" } +profileinstaller = { group = "androidx.profileinstaller", name = "profileinstaller", version.ref = "profileinstaller" } +work-runtime-ktx = { group = "androidx.work", name = "work-runtime-ktx", version.ref = "work" } +datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "datastore" } +room-paging = { group = "androidx.room", name = "room-paging", version.ref = "room" } +room-common = { group = "androidx.room", name = "room-common", version.ref = "room" } +room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" } +room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" } +paging-common-ktx = { group = "androidx.paging", name = "paging-common-ktx", version.ref = "paging" } +paging-runtime-ktx = { group = "androidx.paging", name = "paging-runtime-ktx", version.ref = "paging" } +paging-compose = { group = "androidx.paging", name = "paging-compose", version.ref = "paging" } +browser = { group = "androidx.browser", name = "browser", version.ref = "browser" } +navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigation" } +lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycle" } +lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycle" } +core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } +activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } +appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } + +# Testing +junit = { group = "junit", name = "junit", version.ref = "junit" } +junit-ext = { group = "androidx.test.ext", name = "junit", version.ref = "junitExt" } +espresso = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso" } +mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockitoCore" } +mockito-junit-jupiter = { group = "org.mockito", name = "mockito-junit-jupiter", version.ref = "mockitoJUnitJupiter" } +mockito-kotlin = { group = "org.mockito.kotlin", name = "mockito-kotlin", version.ref = "mockitoKotlin" } + +[plugins] +android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } +android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } +aboutlibraries = { id = "com.mikepenz.aboutlibraries.plugin", version.ref = "aboutLibsRelease" } +room = { id = "androidx.room", version.ref = "room" } +hilt = { id = "com.google.dagger.hilt.android", version.ref = "hiltAndroid" } \ No newline at end of file diff --git a/settings.gradle b/settings.gradle.kts similarity index 81% rename from settings.gradle rename to settings.gradle.kts index efa8c3962..421184d26 100644 --- a/settings.gradle +++ b/settings.gradle.kts @@ -5,13 +5,15 @@ pluginManagement { mavenCentral() } } + dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() - maven { url 'https://jitpack.io' } + maven { url = uri("https://jitpack.io") } } } + rootProject.name = "Reader" -include ':app' +include(":app")