From e5d4f1d40dbc59de3632a9c9c3ddecc5ab19a4ea Mon Sep 17 00:00:00 2001 From: klaus Date: Wed, 17 Jun 2026 18:46:50 +0900 Subject: [PATCH] =?UTF-8?q?feat(creator):=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=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 --- .../sodalive/v2/common/data/ContentSort.kt | 9 +++++++++ .../creator/channel/data/CreatorChannelApi.kt | 12 ++++++++++++ .../channel/data/CreatorChannelHomeModels.kt | 5 ++++- .../channel/data/CreatorChannelRepository.kt | 15 +++++++++++++++ .../live/data/CreatorChannelLiveTabResponse.kt | 18 ++++++++++++++++++ 5 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/v2/common/data/ContentSort.kt create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/data/CreatorChannelLiveTabResponse.kt diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/common/data/ContentSort.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/common/data/ContentSort.kt new file mode 100644 index 00000000..74988772 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/common/data/ContentSort.kt @@ -0,0 +1,9 @@ +package kr.co.vividnext.sodalive.v2.common.data + +enum class ContentSort { + LATEST, + POPULAR, + OWNED, + PRICE_HIGH, + PRICE_LOW +} 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 a802213b..aea7cb68 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 @@ -2,9 +2,12 @@ package kr.co.vividnext.sodalive.v2.creator.channel.data import io.reactivex.rxjava3.core.Single import kr.co.vividnext.sodalive.common.ApiResponse +import kr.co.vividnext.sodalive.v2.common.data.ContentSort +import kr.co.vividnext.sodalive.v2.creator.channel.live.data.CreatorChannelLiveTabResponse import retrofit2.http.GET import retrofit2.http.Header import retrofit2.http.Path +import retrofit2.http.Query interface CreatorChannelApi { @GET("/api/v2/creator-channels/{creatorId}/home") @@ -12,4 +15,13 @@ interface CreatorChannelApi { @Path("creatorId") creatorId: Long, @Header("Authorization") authHeader: String ): Single> + + @GET("/api/v2/creator-channels/{creatorId}/live") + fun getLive( + @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/CreatorChannelHomeModels.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/data/CreatorChannelHomeModels.kt index 9d8a28c0..c96aa102 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/data/CreatorChannelHomeModels.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/data/CreatorChannelHomeModels.kt @@ -54,7 +54,10 @@ data class CreatorChannelAudioContentResponse( @SerializedName("isPointAvailable") val isPointAvailable: Boolean, @SerializedName("isFirstContent") val isFirstContent: Boolean, @SerializedName("seriesName") val seriesName: String?, - @SerializedName("isOriginalSeries") val isOriginalSeries: Boolean? + @SerializedName("isOriginalSeries") val isOriginalSeries: Boolean?, + @SerializedName("isAdult") val isAdult: Boolean = false, + @SerializedName("isOwned") val isOwned: Boolean = false, + @SerializedName("isRented") val isRented: Boolean = false ) @Keep 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 da37c5bf..dd38605c 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 @@ -8,6 +8,7 @@ import kr.co.vividnext.sodalive.report.ReportRepository import kr.co.vividnext.sodalive.report.ReportRequest import kr.co.vividnext.sodalive.report.ReportType import kr.co.vividnext.sodalive.user.UserRepository +import kr.co.vividnext.sodalive.v2.common.data.ContentSort class CreatorChannelRepository( private val api: CreatorChannelApi, @@ -21,6 +22,20 @@ class CreatorChannelRepository( authHeader = token ) + fun getLive( + creatorId: Long, + page: Int, + size: Int, + sort: ContentSort, + token: String + ) = api.getLive( + 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/live/data/CreatorChannelLiveTabResponse.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/data/CreatorChannelLiveTabResponse.kt new file mode 100644 index 00000000..4a2c57bd --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/data/CreatorChannelLiveTabResponse.kt @@ -0,0 +1,18 @@ +package kr.co.vividnext.sodalive.v2.creator.channel.live.data + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName +import kr.co.vividnext.sodalive.v2.common.data.ContentSort +import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelAudioContentResponse +import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelLiveResponse + +@Keep +data class CreatorChannelLiveTabResponse( + @SerializedName("liveReplayContentCount") val liveReplayContentCount: Int, + @SerializedName("currentLive") val currentLive: CreatorChannelLiveResponse?, + @SerializedName("liveReplayContents") val liveReplayContents: List, + @SerializedName("sort") val sort: ContentSort, + @SerializedName("page") val page: Int, + @SerializedName("size") val size: Int, + @SerializedName("hasNext") val hasNext: Boolean +)