diff --git a/CHANGELOG.md b/CHANGELOG.md index 780a76cb..bafb4ff6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Change submitter text to 'authored' when applicable + ## [1.48.0] - 2024-06-05 ### Added diff --git a/api/src/main/kotlin/dev/msfjarvis/claw/api/converters/SearchConverter.kt b/api/src/main/kotlin/dev/msfjarvis/claw/api/converters/SearchConverter.kt index 000bf235..406f9aa0 100644 --- a/api/src/main/kotlin/dev/msfjarvis/claw/api/converters/SearchConverter.kt +++ b/api/src/main/kotlin/dev/msfjarvis/claw/api/converters/SearchConverter.kt @@ -32,6 +32,11 @@ object SearchConverter : Converter> { val tags = elem.select("span.tags > a").map(Element::text) val (commentCount, commentsUrl) = getCommentsData(elem.select("span.comments_label")) val submitter = elem.select("div.byline > a.u-author").text() + val userIsAuthor = + (elem.select("div.byline > span").first()?.text() ?: "").contains( + "authored", + ignoreCase = true, + ) return LobstersPost( shortId = shortId, title = title, @@ -43,6 +48,7 @@ object SearchConverter : Converter> { // The value of these fields is irrelevant for our use case createdAt = "", description = "", + userIsAuthor = userIsAuthor, ) } diff --git a/api/src/test/kotlin/dev/msfjarvis/claw/api/SearchApiTest.kt b/api/src/test/kotlin/dev/msfjarvis/claw/api/SearchApiTest.kt index 850c151b..74eebd59 100644 --- a/api/src/test/kotlin/dev/msfjarvis/claw/api/SearchApiTest.kt +++ b/api/src/test/kotlin/dev/msfjarvis/claw/api/SearchApiTest.kt @@ -40,6 +40,7 @@ class SearchApiTest { submitter = "xenodium", tags = listOf("ai", "emacs"), description = "", + userIsAuthor = true, ), LobstersPost( shortId = "astcqf", @@ -52,6 +53,7 @@ class SearchApiTest { submitter = "asteroid", tags = listOf("ai"), description = "", + userIsAuthor = false, ), ) } diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/LobstersCard.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/LobstersCard.kt index 35716e2b..990ebe62 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/LobstersCard.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/LobstersCard.kt @@ -133,7 +133,10 @@ fun PostDetails( TagRow(tags = post.tags.toImmutableList()) Spacer(Modifier.height(4.dp)) Submitter( - text = AnnotatedString("Submitted by ${post.submitter}"), + text = + AnnotatedString( + "${if (post.userIsAuthor) "Authored" else "Submitted"} by ${post.submitter}" + ), avatarUrl = "https://lobste.rs/avatars/${post.submitter}-100.png", contentDescription = "User avatar for ${post.submitter}", ) diff --git a/model/src/main/kotlin/dev/msfjarvis/claw/model/LobstersPost.kt b/model/src/main/kotlin/dev/msfjarvis/claw/model/LobstersPost.kt index 2eed02a7..a27611ee 100644 --- a/model/src/main/kotlin/dev/msfjarvis/claw/model/LobstersPost.kt +++ b/model/src/main/kotlin/dev/msfjarvis/claw/model/LobstersPost.kt @@ -29,5 +29,6 @@ class LobstersPost( val commentCount: Int, val commentsUrl: String, @SerialName("submitter_user") val submitter: String, + @SerialName("user_is_author") val userIsAuthor: Boolean, val tags: List, ) diff --git a/model/src/main/kotlin/dev/msfjarvis/claw/model/UIPost.kt b/model/src/main/kotlin/dev/msfjarvis/claw/model/UIPost.kt index a5ca91e2..0471e8f3 100644 --- a/model/src/main/kotlin/dev/msfjarvis/claw/model/UIPost.kt +++ b/model/src/main/kotlin/dev/msfjarvis/claw/model/UIPost.kt @@ -29,6 +29,7 @@ data class UIPost( val comments: List = emptyList(), val isSaved: Boolean = false, val isRead: Boolean = false, + val userIsAuthor: Boolean = false, ) { @KonvertFrom( value = SavedPost::class,