Skip to content

Commit

Permalink
Merge pull request #37 from depromeet/feature/#31-viewfinder-api
Browse files Browse the repository at this point in the history
[BSVR-126/FEAT] 시야 찾기 서버 통신 2차 구현
  • Loading branch information
Jokwanhee authored Jul 29, 2024
2 parents dd6a588 + fb16299 commit b1c187e
Show file tree
Hide file tree
Showing 52 changed files with 2,010 additions and 743 deletions.
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -91,5 +91,8 @@
android:scheme="kakao${kakaoApiKey}" />
</intent-filter>
</activity>
<activity android:name="com.depromeet.presentation.viewfinder.WebViewActivity"
android:exported="false"
android:screenOrientation="portrait"/>
</application>
</manifest>
10 changes: 9 additions & 1 deletion app/src/main/java/com/depromeet/spot/di/RetrofitModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,14 @@ object RetrofitModule {
.addInterceptor(authInterceptor)
.addInterceptor(loggingInterceptor).build()

@WebSvg
@Provides
@Singleton
fun provideWebSvgOkHttpClient(
loggingInterceptor: Interceptor
): OkHttpClient = OkHttpClient.Builder()
.addInterceptor(loggingInterceptor).build()

@Provides
@Singleton
fun provideRetrofit(
Expand All @@ -76,7 +84,7 @@ object RetrofitModule {
@Provides
@Singleton
fun provideWebSvgRetrofit(
client: OkHttpClient,
@WebSvg client: OkHttpClient,
factory: Factory
): Retrofit =
Retrofit.Builder().baseUrl(SVG_BASE_URL).client(client).addConverterFactory(factory).build()
Expand Down
3 changes: 2 additions & 1 deletion buildSrc/src/main/kotlin/Dependencies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ object AndroidXDependencies {
"org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.coroutinesAndroidVersion}"
const val workManager = "androidx.work:work-runtime-ktx:${Versions.workManagerVersion}"
const val hiltWorkManager = "androidx.hilt:hilt-work:1.0.0"
const val pagingCommon = "androidx.paging:paging-common:${Versions.pagingVersion}"
}

object TestDependencies {
Expand Down Expand Up @@ -105,7 +106,7 @@ val Compose = listOf(
"androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1",
"androidx.lifecycle:lifecycle-runtime-compose:2.6.2",
"androidx.hilt:hilt-navigation-compose:1.0.0",
"androidx.paging:paging-compose:1.0.0-alpha14",
"androidx.paging:paging-compose:${Versions.pagingVersion}",
"io.coil-kt:coil-compose:2.6.0"
)

Expand Down
2 changes: 1 addition & 1 deletion buildSrc/src/main/kotlin/Versions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ object Versions {
const val activityKtxVersion = "1.7.2"
const val fragmentKtxVersion = "1.5.7"
const val coroutinesAndroidVersion = "1.7.1"
const val pagingVersion = "3.1.1"
const val pagingVersion = "3.3.0"
const val securityVersion = "1.1.0-alpha06"
const val lifecycleVersion = "2.6.1"
const val ossPluginVersion = "0.10.4"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class SpotTeamLabel @JvmOverloads constructor(
"히어로즈" -> {
setTeamColor(R.color.color_heroes, R.color.color_heroes_font)
}
"kt" -> {
"KT" -> {
setTeamColor(R.color.color_kt, R.color.color_kt_font)
}
"롯데" -> {
Expand All @@ -48,6 +48,9 @@ class SpotTeamLabel @JvmOverloads constructor(
"한화" -> {
setTeamColor(R.color.color_hanwha, R.color.color_hanwha_font)
}
"NC" -> {
setTeamColor(R.color.color_nc, R.color.color_nc_font)
}
}
binding.tvTeam.text = value
field = value
Expand Down
2 changes: 2 additions & 0 deletions core/designsystem/src/main/res/values/colors.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
<color name="color_kt">#000000</color>
<color name="color_lotte">#0A1E40</color>
<color name="color_hanwha">#EE6F2E</color>
<color name="color_nc">#071B3A</color>

<!-- 야구장 팀 글씨 색상 -->
<color name="color_lg_font">#FFFFFF</color>
Expand All @@ -24,6 +25,7 @@
<color name="color_kt_font">#FFFFFF</color>
<color name="color_lotte_font">#DB3B48</color>
<color name="color_hanwha_font">#000000</color>
<color name="color_nc_font">#C09B75</color>

<!-- 투명도 -->
<color name="black_alpha60">#99000000</color>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
package com.depromeet.data.datasource

import com.depromeet.data.model.request.viewfinder.BlockReviewRequestQueryDto
import com.depromeet.data.model.response.viewfinder.BlockReviewResponseDto
import com.depromeet.data.model.response.viewfinder.BlockRowResponseDto
import com.depromeet.data.model.response.viewfinder.StadiumResponseDto
import com.depromeet.data.model.response.viewfinder.StadiumsResponseDto

interface ViewfinderDataSource {
suspend fun getStadiums(): List<StadiumsResponseDto>
suspend fun getStadium(id: Int): StadiumResponseDto
suspend fun getBlockReviews(stadiumId: Int, blockId: String): BlockReviewResponseDto
suspend fun getBlockReviews(
stadiumId: Int,
blockCode: String,
queryParam: BlockReviewRequestQueryDto
): BlockReviewResponseDto
suspend fun getBlockRow(stadiumId: Int, blockCode: String): BlockRowResponseDto
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
package com.depromeet.data.datasource.remote

import com.depromeet.data.datasource.ViewfinderDataSource
import com.depromeet.data.model.request.viewfinder.BlockReviewRequestQueryDto
import com.depromeet.data.model.response.viewfinder.BlockReviewResponseDto
import com.depromeet.data.model.response.viewfinder.BlockRowResponseDto
import com.depromeet.data.model.response.viewfinder.StadiumResponseDto
import com.depromeet.data.model.response.viewfinder.StadiumsResponseDto
import com.depromeet.data.remote.ViewfinderService
import javax.inject.Inject

class ViewfinderDataSourceImpl @Inject constructor(
private val viewfinderService: ViewfinderService
): ViewfinderDataSource {
) : ViewfinderDataSource {
override suspend fun getStadiums(): List<StadiumsResponseDto> {
return viewfinderService.getStadiums()
}
Expand All @@ -18,7 +20,24 @@ class ViewfinderDataSourceImpl @Inject constructor(
return viewfinderService.getStadium(id)
}

override suspend fun getBlockReviews(stadiumId: Int, blockId: String): BlockReviewResponseDto {
return viewfinderService.getBlockReviews(stadiumId, blockId)
override suspend fun getBlockReviews(
stadiumId: Int,
blockCode: String,
queryParam: BlockReviewRequestQueryDto
): BlockReviewResponseDto {
return viewfinderService.getBlockReviews(
stadiumId,
blockCode,
queryParam.rowNumber,
queryParam.seatNumber,
queryParam.year,
queryParam.month,
queryParam.page,
queryParam.size
)
}

override suspend fun getBlockRow(stadiumId: Int, blockCode: String): BlockRowResponseDto {
return viewfinderService.getBlockRow(stadiumId, blockCode)
}
}
79 changes: 49 additions & 30 deletions data/src/main/java/com/depromeet/data/mapper/ViewfinderMapper.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package com.depromeet.data.mapper

import com.depromeet.data.model.request.viewfinder.BlockReviewRequestQueryDto
import com.depromeet.data.model.response.viewfinder.BlockReviewResponseDto
import com.depromeet.data.model.response.viewfinder.BlockRowResponseDto
import com.depromeet.data.model.response.viewfinder.StadiumResponseDto
import com.depromeet.data.model.response.viewfinder.StadiumsResponseDto
import com.depromeet.domain.entity.request.viewfinder.BlockReviewRequestQuery
import com.depromeet.domain.entity.response.viewfinder.BlockReviewResponse
import com.depromeet.domain.entity.response.viewfinder.BlockRowResponse
import com.depromeet.domain.entity.response.viewfinder.StadiumResponse
import com.depromeet.domain.entity.response.viewfinder.StadiumsResponse

Expand Down Expand Up @@ -35,53 +39,68 @@ fun StadiumResponseDto.toStadiumResponse() = StadiumResponse(
stadiumUrl = seatChartWithLabel
)


fun BlockReviewResponseDto.toBlockReviewResponse() = BlockReviewResponse(
location = location?.toLocationResponse() ?: BlockReviewResponse.LocationResponse(),
keywords = keywords.map { it.toKeywordResponse() },
reviews = reviews.map { it.toReviewResponse() },
totalCount = totalCount,
filteredCount = filteredCount,
offset = offset,
limit = limit,
hasMore = hasMore,
topReviewImages = topReviewImages.map { it.toTopReviewImagesResponse() },
totalElements = totalElements,
totalPages = totalPages,
number = number,
size = size,
first = first,
last = last,
filter = filter.toReviewFilterResponse()
)

fun BlockReviewResponseDto.KeywordResponseDto.toKeywordResponse() =
BlockReviewResponse.KeywordResponse(
content = content,
count = count
count = count,
isPositive = isPositive
)

fun BlockReviewResponseDto.ReviewResponseDto.toReviewResponse() =
BlockReviewResponse.ReviewResponse(
id = id,
userId = userId,
blockId = blockId,
seatId = seatId,
rowId = rowId,
seatNumber = seatNumber,
date = date,
content = content,
createdAt = createdAt,
updatedAt = updatedAt,
images = images.map { it.toReviewImageResponse() },
keywords = keywords.map { it.toReviewKeywordResponse() }
fun BlockReviewResponseDto.TopReviewImagesResponseDto.toTopReviewImagesResponse() =
BlockReviewResponse.TopReviewImagesResponse(
url = url,
reviewId = reviewId,
blockCode = blockCode,
rowNumber = rowNumber,
seatNumber = seatNumber
)

fun BlockReviewResponseDto.ReviewFilterResponseDto.toReviewFilterResponse() =
BlockReviewResponse.ReviewFilterResponse(
rowId = rowId,
seatNumber = seatNumber
rowNumber = rowNumber ?: 0, seatNumber = seatNumber ?: 0, year = year ?: 0, month = month ?: 0
)

fun BlockReviewResponseDto.ReviewResponseDto.ReviewImageResponseDto.toReviewImageResponse() =
BlockReviewResponse.ReviewResponse.ReviewImageResponse(
fun BlockReviewResponseDto.ReviewResponseDto.toReviewResponse() =
BlockReviewResponse.ReviewResponse(
id = id,
url = url
member = member.toReviewMemberResponse(),
stadium = stadium.toReviewStadiumResponse(),
section = section.toReviewSectionResponse(),
block = block.toReviewBlockResponse(),
row = row.toReviewRowResponse(),
seat = seat.toReviewSeatResponse(),
dateTime = dateTime,
content = content ?: "",
images = images.map { it.toReviewImageResponse() },
keywords = keywords.map { it.toReviewKeywordResponse() }
)

fun BlockReviewResponseDto.ReviewResponseDto.ReviewKeywordResponseDto.toReviewKeywordResponse() =
BlockReviewResponse.KeywordResponse(
content = content,
isPositive = isPositive,
)
fun BlockRowResponseDto.toBlockRowResponse() = BlockRowResponse(
id = id,
code = code,
rowInfo = rowInfo.map { it.toRowInfoResponse() }
)

fun BlockReviewRequestQuery.toBlockReviewRequestQueryDto() = BlockReviewRequestQueryDto(
rowNumber = rowNumber,
seatNumber = seatNumber,
year = year,
month = month,
page = page,
size = size
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.depromeet.data.model.request.viewfinder

data class BlockReviewRequestQueryDto(
val rowNumber: Int? = null,
val seatNumber: Int? = null,
val year: Int? = null,
val month: Int? = null,
val page: Int = 0,
val size: Int = 20
)
Loading

0 comments on commit b1c187e

Please sign in to comment.