Browse Source

Migrate "room" from "kapt" to "ksp" (#3777)

- Add ksp plugin
- Switch room to use ksp instead of kapt
- `ArrayList` -> `List` in a few places to fix errors about unbound generics
Nik Clayton 10 months ago
parent
commit
25376170c2

+ 5 - 6
app/build.gradle

@@ -1,5 +1,6 @@
 plugins {
     alias(libs.plugins.android.application)
+    alias(libs.plugins.google.ksp)
     alias(libs.plugins.kotlin.android)
     alias(libs.plugins.kotlin.kapt)
     alias(libs.plugins.kotlin.parcelize)
@@ -113,11 +114,9 @@ android {
     }
 }
 
-kapt {
-    arguments {
-        arg("room.schemaLocation", "$projectDir/schemas")
-        arg("room.incremental", "true")
-    }
+ksp {
+    arg("room.schemaLocation", "$projectDir/schemas")
+    arg("room.incremental", "true")
 }
 
 configurations {
@@ -134,7 +133,7 @@ dependencies {
 
     implementation libs.bundles.androidx
     implementation libs.bundles.room
-    kapt libs.androidx.room.compiler
+    ksp libs.androidx.room.compiler
 
     implementation libs.android.material
 

+ 1 - 1
app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationEntity.kt

@@ -89,7 +89,7 @@ data class ConversationStatusEntity(
     val bookmarked: Boolean,
     val sensitive: Boolean,
     val spoilerText: String,
-    val attachments: ArrayList<Attachment>,
+    val attachments: List<Attachment>,
     val mentions: List<Status.Mention>,
     val tags: List<HashTag>?,
     val showingHiddenContent: Boolean,

+ 2 - 2
app/src/main/java/com/keylesspalace/tusky/db/Converters.kt

@@ -102,8 +102,8 @@ class Converters @Inject constructor(
     }
 
     @TypeConverter
-    fun jsonToAttachmentList(attachmentListJson: String?): ArrayList<Attachment>? {
-        return gson.fromJson(attachmentListJson, object : TypeToken<ArrayList<Attachment>>() {}.type)
+    fun jsonToAttachmentList(attachmentListJson: String?): List<Attachment>? {
+        return gson.fromJson(attachmentListJson, object : TypeToken<List<Attachment>>() {}.type)
     }
 
     @TypeConverter

+ 1 - 2
app/src/main/java/com/keylesspalace/tusky/entity/DeletedStatus.kt

@@ -16,7 +16,6 @@
 package com.keylesspalace.tusky.entity
 
 import com.google.gson.annotations.SerializedName
-import java.util.ArrayList
 import java.util.Date
 
 data class DeletedStatus(
@@ -25,7 +24,7 @@ data class DeletedStatus(
     @SerializedName("spoiler_text") val spoilerText: String,
     val visibility: Status.Visibility,
     val sensitive: Boolean,
-    @SerializedName("media_attachments") val attachments: ArrayList<Attachment>?,
+    @SerializedName("media_attachments") val attachments: List<Attachment>?,
     val poll: Poll?,
     @SerializedName("created_at") val createdAt: Date,
     val language: String?

+ 1 - 2
app/src/main/java/com/keylesspalace/tusky/entity/Status.kt

@@ -19,7 +19,6 @@ import android.text.SpannableStringBuilder
 import android.text.style.URLSpan
 import com.google.gson.annotations.SerializedName
 import com.keylesspalace.tusky.util.parseAsMastodonHtml
-import java.util.ArrayList
 import java.util.Date
 
 data class Status(
@@ -42,7 +41,7 @@ data class Status(
     val sensitive: Boolean,
     @SerializedName("spoiler_text") val spoilerText: String,
     val visibility: Visibility,
-    @SerializedName("media_attachments") val attachments: ArrayList<Attachment>,
+    @SerializedName("media_attachments") val attachments: List<Attachment>,
     val mentions: List<Mention>,
     val tags: List<HashTag>?,
     val application: Application?,

+ 1 - 0
build.gradle

@@ -1,5 +1,6 @@
 plugins {
     alias(libs.plugins.android.application) apply false
+    alias(libs.plugins.google.ksp) apply false
     alias(libs.plugins.kotlin.android) apply false
     alias(libs.plugins.kotlin.kapt) apply false
     alias(libs.plugins.kotlin.parcelize) apply false

+ 1 - 0
gradle/libs.versions.toml

@@ -57,6 +57,7 @@ xmlwriter = "1.0.4"
 
 [plugins]
 android-application = { id = "com.android.application", version.ref = "agp" }
+google-ksp = "com.google.devtools.ksp:1.8.22-1.0.11"
 kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
 kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }
 kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }