Skip to content

Commit

Permalink
Merge pull request #179 from terrakok/dev
Browse files Browse the repository at this point in the history
Gson -> Kotlinx.serialization
  • Loading branch information
Hiebeler authored Feb 3, 2025
2 parents 6d3cfb0 + 908c33e commit 04c8d1d
Show file tree
Hide file tree
Showing 51 changed files with 495 additions and 372 deletions.
3 changes: 1 addition & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,9 @@ dependencies {


implementation(libs.volley)
implementation(libs.gson)

implementation(libs.retrofit)
implementation(libs.converter.gson)
implementation(libs.retrofit.json)
implementation(libs.logging.interceptor)

implementation(libs.androidx.runtime.livedata)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package com.daniebeler.pfpixelix.data.remote.dto

import com.daniebeler.pfpixelix.domain.model.AccessToken
import com.google.gson.annotations.SerializedName
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class AccessTokenDto(
@SerializedName("access_token") val accessToken: String,
@SerializedName("created_at") val createdAt: String
@SerialName("access_token") val accessToken: String,
@SerialName("created_at") val createdAt: String
) : DtoInterface<AccessToken> {
override fun toModel(): AccessToken {
return AccessToken(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,47 +3,50 @@ package com.daniebeler.pfpixelix.data.remote.dto

import com.daniebeler.pfpixelix.domain.model.Account
import com.daniebeler.pfpixelix.utils.HtmlToText.htmlToText
import com.google.gson.annotations.SerializedName
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonElement

@Serializable
data class AccountDto(
@SerializedName("acct") val acct: String,
@SerializedName("avatar") val avatar: String,
@SerializedName("created_at") val createdAt: String,
@SerializedName("discoverable") val discoverable: Boolean,
@SerializedName("display_name") val displayName: String?,
@SerializedName("followers_count") val followersCount: Int,
@SerializedName("following_count") val followingCount: Int,
@SerializedName("header_bg") val headerBg: Any,
@SerializedName("id") val id: String,
@SerializedName("is_admin") val isAdmin: Boolean,
@SerializedName("last_fetched_at") val lastFetchedAt: String,
@SerializedName("local") val local: Boolean,
@SerializedName("location") val location: Any,
@SerializedName("locked") val locked: Boolean,
@SerializedName("note") val note: String,
@SerializedName("note_text") val noteText: String?,
@SerializedName("pronouns") val pronouns: List<String>?,
@SerializedName("statuses_count") val statusesCount: Int,
@SerializedName("url") val url: String,
@SerializedName("username") val username: String,
@SerializedName("website") val website: String
@SerialName("acct") val acct: String?,
@SerialName("avatar") val avatar: String?,
@SerialName("created_at") val createdAt: String?,
@SerialName("discoverable") val discoverable: Boolean?,
@SerialName("display_name") val displayName: String?,
@SerialName("followers_count") val followersCount: Int?,
@SerialName("following_count") val followingCount: Int?,
@SerialName("header_bg") val headerBg: JsonElement?,
@SerialName("id") val id: String?,
@SerialName("is_admin") val isAdmin: Boolean?,
@SerialName("last_fetched_at") val lastFetchedAt: String?,
@SerialName("local") val local: Boolean?,
@SerialName("location") val location: JsonElement?,
@SerialName("locked") val locked: Boolean?,
@SerialName("note") val note: String?,
@SerialName("note_text") val noteText: String?,
@SerialName("pronouns") val pronouns: List<String>?,
@SerialName("statuses_count") val statusesCount: Int?,
@SerialName("url") val url: String?,
@SerialName("username") val username: String?,
@SerialName("website") val website: String?
) : DtoInterface<Account> {
override fun toModel(): Account {
return Account(
id = id,
username = username,
acct = acct,
displayname = displayName,
avatar = avatar,
followersCount = followersCount,
followingCount = followingCount,
postsCount = statusesCount,
website = website,
note = htmlToText(note),
url = url,
locked = locked,
createdAt = createdAt,
isAdmin = isAdmin,
id = id ?: "",
username = username?: "",
acct = acct ?: "",
displayname = displayName ?: "",
avatar = avatar ?: "",
followersCount = followersCount ?: 0,
followingCount = followingCount ?: 0,
postsCount = statusesCount ?: 0,
website = website ?: "",
note = htmlToText(note.orEmpty()),
url = url ?: "",
locked = locked ?: false,
createdAt = createdAt ?: "",
isAdmin = isAdmin ?: false,
pronouns = pronouns ?: emptyList()
)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.daniebeler.pfpixelix.data.remote.dto

import com.google.gson.annotations.SerializedName
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class ApiReplyElementDto(
@SerializedName("data") val data: List<ReplyDto>
@SerialName("data") val data: List<ReplyDto>
)
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,26 @@ package com.daniebeler.pfpixelix.data.remote.dto


import com.daniebeler.pfpixelix.domain.model.Application
import com.google.gson.annotations.SerializedName
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonElement

@Serializable
data class ApplicationDto(
@SerializedName("name") val name: String,
@SerializedName("website") val website: Any,
@SerializedName("id") val id: String,
@SerializedName("redirect_uri") val redirectUri: String,
@SerializedName("client_id") val clientId: String,
@SerializedName("client_secret") val clientSecret: String
@SerialName("name") val name: String?,
@SerialName("website") val website: JsonElement?,
@SerialName("id") val id: String?,
@SerialName("redirect_uri") val redirectUri: String?,
@SerialName("client_id") val clientId: String?,
@SerialName("client_secret") val clientSecret: String?
) : DtoInterface<Application> {
override fun toModel(): Application {
return Application(
name = name,
id = id,
redirectUri = redirectUri,
clientId = clientId,
clientSecret = clientSecret
name = name ?: "",
id = id ?: "",
redirectUri = redirectUri ?: "",
clientId = clientId ?: "",
clientSecret = clientSecret ?: ""
)
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package com.daniebeler.pfpixelix.data.remote.dto

import com.daniebeler.pfpixelix.domain.model.Chat
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonElement

@Serializable
data class ChatDto(
val avatar: String,
val domain: Any,
val domain: JsonElement?,
val id: String,
val isLocal: Boolean,
val messages: List<MessageDto>,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
package com.daniebeler.pfpixelix.data.remote.dto

import com.daniebeler.pfpixelix.domain.model.Collection
import com.google.gson.annotations.SerializedName
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class CollectionDto(
@SerializedName("avatar") val avatar: String,
@SerializedName("description") val description: String?,
@SerializedName("id") val id: String,
@SerializedName("pid") val pid: String,
@SerializedName("post_count") val postCount: Int,
@SerializedName("published_at") val publishedAt: String,
@SerializedName("thumb") val thumb: String,
@SerializedName("title") val title: String?,
@SerializedName("updated_at") val updatedAt: String,
@SerializedName("url") val url: String,
@SerializedName("username") val username: String,
@SerializedName("visibility") val visibility: String
@SerialName("avatar") val avatar: String?,
@SerialName("description") val description: String?,
@SerialName("id") val id: String,
@SerialName("pid") val pid: String?,
@SerialName("post_count") val postCount: Int,
@SerialName("published_at") val publishedAt: String?,
@SerialName("thumb") val thumb: String,
@SerialName("title") val title: String?,
@SerialName("updated_at") val updatedAt: String?,
@SerialName("url") val url: String,
@SerialName("username") val username: String,
@SerialName("visibility") val visibility: String
) : DtoInterface<Collection> {
override fun toModel(): Collection {
return Collection(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.daniebeler.pfpixelix.data.remote.dto

import com.daniebeler.pfpixelix.domain.model.Configuration
import com.google.gson.annotations.SerializedName
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
class ConfigurationDto(
@SerializedName("media_attachments") val mediaAttachmentsConfigurations: MediaAttachmentConfigurationDto
@SerialName("media_attachments") val mediaAttachmentsConfigurations: MediaAttachmentConfigurationDto
) : DtoInterface<Configuration> {
override fun toModel(): Configuration {
return Configuration(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package com.daniebeler.pfpixelix.data.remote.dto

import com.daniebeler.pfpixelix.domain.model.Conversation
import com.google.gson.annotations.SerializedName
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class ConversationDto(
val id: Int,
val unread: Boolean,
val accounts: List<AccountDto>,
@SerializedName("last_status") val lastPost: PostDto
@SerialName("last_status") val lastPost: PostDto
) : DtoInterface<Conversation> {
override fun toModel(): Conversation {
return Conversation(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.daniebeler.pfpixelix.data.remote.dto

import kotlinx.serialization.Serializable

@Serializable
data class CreateMessageDto(
val to_id: String,
val message: String,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.daniebeler.pfpixelix.data.remote.dto

import kotlinx.serialization.Serializable

@Serializable
data class CreateReplyDto(
val status: String,
val in_reply_to_id: String
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package com.daniebeler.pfpixelix.data.remote.dto

import kotlinx.serialization.Serializable

@Serializable
data class DomainSoftwareDto(
val name: String, val version: String
val name: String,
val version: String?
) : DtoInterface<String> {
override fun toModel(): String {
return name
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.daniebeler.pfpixelix.data.remote.dto


import com.google.gson.annotations.SerializedName
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class FocusDto(
@SerializedName("x") val x: Int, @SerializedName("y") val y: Int
@SerialName("x") val x: Int,
@SerialName("y") val y: Int
)
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
package com.daniebeler.pfpixelix.data.remote.dto

import com.daniebeler.pfpixelix.domain.model.Instance
import com.google.gson.annotations.SerializedName
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class InstanceDto(
@SerializedName("uri") val domain: String,
@SerializedName("rules") val rules: List<RuleDto>,
@SerializedName("short_description") val shortDescription: String,
@SerializedName("description") val description: String,
@SerializedName("thumbnail") val thumbnailUrl: String,
@SerializedName("contact_account") val admin: AccountDto?,
@SerializedName("stats") val stats: InstanceStatsDto,
@SerializedName("version") val version: String,
@SerializedName("configuration") val configuration: ConfigurationDto
@SerialName("uri") val domain: String,
@SerialName("rules") val rules: List<RuleDto>,
@SerialName("short_description") val shortDescription: String,
@SerialName("description") val description: String,
@SerialName("thumbnail") val thumbnailUrl: String,
@SerialName("contact_account") val admin: AccountDto?,
@SerialName("stats") val stats: InstanceStatsDto,
@SerialName("version") val version: String,
@SerialName("configuration") val configuration: ConfigurationDto

) : DtoInterface<Instance> {
override fun toModel(): Instance {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.daniebeler.pfpixelix.data.remote.dto

import com.daniebeler.pfpixelix.domain.model.InstanceStats
import com.google.gson.annotations.SerializedName
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class InstanceStatsDto(
@SerializedName("user_count") val userCount: Int,
@SerializedName("status_count") val statusCount: Int,
@SerializedName("domain_count") val domainCount: Int
@SerialName("user_count") val userCount: Int,
@SerialName("status_count") val statusCount: Int,
@SerialName("domain_count") val domainCount: Int
) : DtoInterface<InstanceStats> {
override fun toModel(): InstanceStats {
return InstanceStats(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package com.daniebeler.pfpixelix.data.remote.dto


import com.google.gson.annotations.SerializedName
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class LabelDto(
@SerializedName("covid") val covid: Boolean
@SerialName("covid") val covid: Boolean?
)
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ package com.daniebeler.pfpixelix.data.remote.dto


import com.daniebeler.pfpixelix.domain.model.License
import com.google.gson.annotations.SerializedName
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class LicenseDto(
@SerializedName("id") val id: Int,
@SerializedName("title") val title: String,
@SerializedName("url") val url: String
@SerialName("id") val id: Int,
@SerialName("title") val title: String,
@SerialName("url") val url: String
) : DtoInterface<License> {
override fun toModel(): License {
return License(
Expand Down
Loading

0 comments on commit 04c8d1d

Please sign in to comment.