Skip to content

Commit

Permalink
fix(deps): update agp to v8.3.0, lint to 31.3.0 (#483)
Browse files Browse the repository at this point in the history
New lint rules highlighted a potential crash; the use of named match
groups (used here when extracting server versions) requires API >= 26 or
throws an exception.

Use the group numbers instead of names when extracting the value, but
keep the group names in the regular expressions for readability.
  • Loading branch information
nikclayton authored Mar 1, 2024
1 parent b9512e4 commit 72e5ca8
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 92 deletions.
24 changes: 23 additions & 1 deletion app/lint-baseline.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.2.2" type="baseline" client="gradle" dependencies="false" name="AGP (8.2.2)" variant="all" version="8.2.2">
<issues format="6" by="lint 8.3.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.3.0)" variant="all" version="8.3.0">

<issue
id="InvalidPackage"
Expand Down Expand Up @@ -51,6 +51,28 @@
column="9"/>
</issue>

<issue
id="SelectedPhotoAccess"
message="Your app is currently not handling Selected Photos Access introduced in Android 14+"
errorLine1=" &lt;uses-permission android:name=&quot;android.permission.READ_MEDIA_IMAGES&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="9"
column="36"/>
</issue>

<issue
id="SelectedPhotoAccess"
message="Your app is currently not handling Selected Photos Access introduced in Android 14+"
errorLine1=" &lt;uses-permission android:name=&quot;android.permission.READ_MEDIA_VIDEO&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="10"
column="36"/>
</issue>

<issue
id="UseAppTint"
message="Must use `app:tint` instead of `android:tint`"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
* Configure base Kotlin with Android options
*/
internal fun Project.configureKotlinAndroid(
commonExtension: CommonExtension<*, *, *, *, *>,
commonExtension: CommonExtension<*, *, *, *, *, *>,
) {
commonExtension.apply {
compileSdk = 34
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import com.android.build.api.dsl.ProductFlavor
@Suppress("EnumEntryName")
enum class FlavorDimension {
color,
store
store,
}

@Suppress("EnumEntryName")
Expand All @@ -47,12 +47,12 @@ enum class PachliFlavor(
),
fdroid(FlavorDimension.store),
github(FlavorDimension.store),
google(FlavorDimension.store)
google(FlavorDimension.store),
}

fun configureFlavors(
commonExtension: CommonExtension<*, *, *, *, *>,
flavorConfigurationBlock: ProductFlavor.(flavor: PachliFlavor) -> Unit = {}
commonExtension: CommonExtension<*, *, *, *, *, *>,
flavorConfigurationBlock: ProductFlavor.(flavor: PachliFlavor) -> Unit = {},
) {
commonExtension.apply {
flavorDimensions += FlavorDimension.color.name
Expand Down
2 changes: 1 addition & 1 deletion core/network/lint-baseline.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.2.2" type="baseline" client="gradle" dependencies="false" name="AGP (8.2.2)" variant="all" version="8.2.2">
<issues format="6" by="lint 8.3.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.3.0)" variant="all" version="8.3.0">

</issues>
15 changes: 10 additions & 5 deletions core/network/src/main/kotlin/app/pachli/core/network/Server.kt
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,8 @@ data class Server(
rx.find(version)
.toResultOr { UnparseableVersion(version, ParseException("unexpected null", 0)) }
.andThen {
val adjusted = "${it.groups["major"]?.value}.${it.groups["minor"]?.value}.${it.groups["patch"]?.value}"
// Fetching groups by name instead of index requires API >= 26
val adjusted = "${it.groups[1]?.value}.${it.groups[2]?.value}.${it.groups[3]?.value}"
runSuspendCatching { Version.parse(adjusted, strict = false) }
.mapError { UnparseableVersion(version, it) }
}
Expand All @@ -180,7 +181,8 @@ data class Server(
rx.find(version)
.toResultOr { UnparseableVersion(version, ParseException("unexpected null", 0)) }
.andThen {
val adjusted = "${it.groups["major"]?.value}.${it.groups["minor"]?.value}.0"
// Fetching groups by name instead of index requires API >= 26
val adjusted = "${it.groups[1]?.value}.${it.groups[2]?.value}.0"
runSuspendCatching { Version.parse(adjusted, strict = false) }
.mapError { UnparseableVersion(version, it) }
}
Expand Down Expand Up @@ -216,7 +218,8 @@ data class Server(
val rx = """^0*(?<major>\d+)\.0*(?<minor>\d+)\.0*(?<patch>\d+)""".toRegex()
rx.find(version).toResultOr { UnparseableVersion(version, ParseException("unexpected null", 0)) }
.andThen {
val adjusted = "${it.groups["major"]?.value}.${it.groups["minor"]?.value ?: 0}.${it.groups["patch"]?.value ?: 0}"
// Fetching groups by name instead of index requires API >= 26
val adjusted = "${it.groups[1]?.value}.${it.groups[2]?.value ?: 0}.${it.groups[3]?.value ?: 0}"
runSuspendCatching { Version.parse(adjusted, strict = false) }
.mapError { UnparseableVersion(adjusted, it) }
}
Expand All @@ -228,7 +231,8 @@ data class Server(
val rx = """Pleroma (?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)""".toRegex()
rx.find(version).toResultOr { UnparseableVersion(version, ParseException("unexpected null", 0)) }
.andThen {
val adjusted = "${it.groups["major"]?.value}.${it.groups["minor"]?.value}.${it.groups["patch"]?.value}"
// Fetching groups by name instead of index requires API >= 26
val adjusted = "${it.groups[1]?.value}.${it.groups[2]?.value}.${it.groups[3]?.value}"
runSuspendCatching { Version.parse(adjusted, strict = false) }
.mapError { UnparseableVersion(adjusted, it) }
}
Expand All @@ -240,7 +244,8 @@ data class Server(
val rx = """^(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)""".toRegex()
rx.find(version).toResultOr { UnparseableVersion(version, ParseException("unexpected null", 0)) }
.andThen {
val adjusted = "${it.groups["major"]?.value}.${it.groups["minor"]?.value}.${it.groups["patch"]?.value}"
// Fetching groups by name instead of index requires API >= 26
val adjusted = "${it.groups[1]?.value}.${it.groups[2]?.value}.${it.groups[3]?.value}"
runSuspendCatching { Version.parse(adjusted, strict = false) }
.mapError { UnparseableVersion(adjusted, it) }
}
Expand Down
79 changes: 1 addition & 78 deletions core/testing/lint-baseline.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.2.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.2.0)" variant="all" version="8.2.0">
<issues format="6" by="lint 8.3.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.3.0)" variant="all" version="8.3.0">

<issue
id="InvalidPackage"
Expand Down Expand Up @@ -71,81 +71,4 @@
file="$GRADLE_USER_HOME/caches/modules-2/files-2.1/org.robolectric/utils/4.11.1/12828864aac49e8ebcf2de03d3d33919ca8a1b01/utils-4.11.1.jar"/>
</issue>

<issue
id="NewApi"
message="Call requires API level 24 (current min is 23): `java.util.Collection#removeIf`"
errorLine1=" spans.removeIf { span -> span.span == what }"
errorLine2=" ~~~~~~~~">
<location
file="src/main/kotlin/app/pachli/core/testing/fakes/FakeSpannable.kt"
line="36"
column="15"/>
</issue>

<issue
id="NewApi"
message="Call requires API level 24 (current min is 23): `java.util.Map#getOrDefault`"
errorLine1=" override fun getString(key: String?, defValue: String?) = store.getOrDefault(key, defValue) as String?"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/app/pachli/core/testing/fakes/InMemorySharedPreferences.kt"
line="42"
column="69"/>
</issue>

<issue
id="NewApi"
message="Call requires API level 24 (current min is 23): `java.util.Map#getOrDefault`"
errorLine1=" override fun getStringSet(key: String?, defValues: MutableSet&lt;String>?) = store.getOrDefault(key, defValues) as MutableSet&lt;String>?"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/app/pachli/core/testing/fakes/InMemorySharedPreferences.kt"
line="44"
column="85"/>
</issue>

<issue
id="NewApi"
message="Call requires API level 24 (current min is 23): `java.util.Map#getOrDefault`"
errorLine1=" override fun getInt(key: String, defaultValue: Int) = store.getOrDefault(key, defaultValue) as Int"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/app/pachli/core/testing/fakes/InMemorySharedPreferences.kt"
line="46"
column="65"/>
</issue>

<issue
id="NewApi"
message="Call requires API level 24 (current min is 23): `java.util.Map#getOrDefault`"
errorLine1=" override fun getLong(key: String, defaultValue: Long) = store.getOrDefault(key, defaultValue) as Long"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/app/pachli/core/testing/fakes/InMemorySharedPreferences.kt"
line="48"
column="67"/>
</issue>

<issue
id="NewApi"
message="Call requires API level 24 (current min is 23): `java.util.Map#getOrDefault`"
errorLine1=" override fun getFloat(key: String, defaultValue: Float) = store.getOrDefault(key, defaultValue) as Float"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/app/pachli/core/testing/fakes/InMemorySharedPreferences.kt"
line="50"
column="69"/>
</issue>

<issue
id="NewApi"
message="Call requires API level 24 (current min is 23): `java.util.Map#getOrDefault`"
errorLine1=" override fun getBoolean(key: String, defaultValue: Boolean) = store.getOrDefault(key, defaultValue) as Boolean"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/app/pachli/core/testing/fakes/InMemorySharedPreferences.kt"
line="52"
column="73"/>
</issue>

</issues>
4 changes: 2 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[versions]
aboutlibraries = "10.10.0"
acra = "5.11.3"
agp = "8.2.2"
agp = "8.3.0"
androidx-activity = "1.8.2"
androidx-appcompat = "1.6.1"
androidx-browser = "1.7.0"
Expand Down Expand Up @@ -46,7 +46,7 @@ kotlin-result = "1.1.18"
ksp = "1.9.22-1.0.17"
image-cropper = "4.3.2"
leakcanary = "2.13"
lint = "31.2.2" # = agp + 23.0.0 (= 8.2.2), see https://github.com/googlesamples/android-custom-lint-rules#lint-version
lint = "31.3.0" # = agp + 23.0.0 (= 8.3.0), see https://github.com/googlesamples/android-custom-lint-rules#lint-version
material = "1.11.0"
material-drawer = "9.0.2"
material-typeface = "4.0.0.2-kotlin"
Expand Down

0 comments on commit 72e5ca8

Please sign in to comment.