From 185c92e9afb391327b2366c344fa5020f7fb8ca7 Mon Sep 17 00:00:00 2001 From: klaus Date: Sat, 20 Jun 2026 02:53:16 +0900 Subject: [PATCH] =?UTF-8?q?feat(creator):=20=EC=8B=9C=EB=A6=AC=EC=A6=88=20?= =?UTF-8?q?=ED=83=AD=20API=20=EA=B3=84=EC=95=BD=EC=9D=84=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../creator/channel/data/CreatorChannelApi.kt | 10 +++++++ .../channel/data/CreatorChannelRepository.kt | 14 +++++++++ .../data/CreatorChannelSeriesTabResponse.kt | 30 +++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/series/data/CreatorChannelSeriesTabResponse.kt diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/data/CreatorChannelApi.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/data/CreatorChannelApi.kt index 562991a2..f28be282 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/data/CreatorChannelApi.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/data/CreatorChannelApi.kt @@ -5,6 +5,7 @@ import kr.co.vividnext.sodalive.common.ApiResponse import kr.co.vividnext.sodalive.v2.common.data.ContentSort import kr.co.vividnext.sodalive.v2.creator.channel.audio.data.CreatorChannelAudioTabResponse import kr.co.vividnext.sodalive.v2.creator.channel.live.data.CreatorChannelLiveTabResponse +import kr.co.vividnext.sodalive.v2.creator.channel.series.data.CreatorChannelSeriesTabResponse import retrofit2.http.GET import retrofit2.http.Header import retrofit2.http.Path @@ -35,4 +36,13 @@ interface CreatorChannelApi { @Query("themeId") themeId: Long?, @Header("Authorization") authHeader: String ): Single> + + @GET("/api/v2/creator-channels/{creatorId}/series") + fun getSeries( + @Path("creatorId") creatorId: Long, + @Query("page") page: Int, + @Query("size") size: Int, + @Query("sort") sort: ContentSort, + @Header("Authorization") authHeader: String + ): Single> } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/data/CreatorChannelRepository.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/data/CreatorChannelRepository.kt index 976ee7b9..bca71aec 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/data/CreatorChannelRepository.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/data/CreatorChannelRepository.kt @@ -52,6 +52,20 @@ class CreatorChannelRepository( authHeader = token ) + fun getSeries( + creatorId: Long, + page: Int, + size: Int, + sort: ContentSort, + token: String + ) = api.getSeries( + creatorId = creatorId, + page = page, + size = size, + sort = sort, + authHeader = token + ) + fun followCreator( creatorId: Long, follow: Boolean, diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/series/data/CreatorChannelSeriesTabResponse.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/series/data/CreatorChannelSeriesTabResponse.kt new file mode 100644 index 00000000..f9cb2930 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/series/data/CreatorChannelSeriesTabResponse.kt @@ -0,0 +1,30 @@ +package kr.co.vividnext.sodalive.v2.creator.channel.series.data + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kr.co.vividnext.sodalive.v2.common.data.ContentSort + +@Keep +data class CreatorChannelSeriesTabResponse( + @SerializedName("seriesCount") val seriesCount: Int, + @SerializedName("series") val series: List, + @SerializedName("sort") val sort: ContentSort, + @SerializedName("page") val page: Int, + @SerializedName("size") val size: Int, + @SerializedName("hasNext") val hasNext: Boolean +) + +@Keep +data class CreatorChannelSeriesResponse( + @SerializedName("seriesId") val seriesId: Long, + @SerializedName("title") val title: String, + @SerializedName("coverImageUrl") val coverImageUrl: String?, + @SerializedName("publishedDaysOfWeek") val publishedDaysOfWeek: String?, + @SerializedName("contentCount") val contentCount: Int, + @SerializedName("isProceeding") val isProceeding: Boolean, + @SerializedName("isOriginal") val isOriginal: Boolean, + @SerializedName("isAdult") val isAdult: Boolean, + @SerializedName("purchasedContentCount") val purchasedContentCount: Int?, + @SerializedName("paidContentCount") val paidContentCount: Int?, + @SerializedName("purchasedPaidContentRate") val purchasedPaidContentRate: Double? +)