Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion app/src/main/java/com/whyranoid/walkie/KoinModules.kt
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ import com.whyranoid.domain.usecase.GetUserPostsUseCase
import com.whyranoid.domain.usecase.GetUserUseCase
import com.whyranoid.domain.usecase.LikePostUseCase
import com.whyranoid.domain.usecase.RequestLoginUseCase
import com.whyranoid.domain.usecase.SetUserBadgesUseCase
import com.whyranoid.domain.usecase.SignOutUseCase
import com.whyranoid.domain.usecase.StartChallengeUseCase
import com.whyranoid.domain.usecase.UploadPostUseCase
Expand Down Expand Up @@ -153,7 +154,7 @@ val viewModelModule =
viewModel { CommunityScreenViewModel(get(), get(), get(), get(), get(), get(), get()) }
viewModel { FollowingViewModel(get(), get(), get(), get(), get(), get()) }
viewModel { SettingViewModel(get(), get()) }
viewModel { TotalBadgeViewModel(get(), get()) }
viewModel { TotalBadgeViewModel(get(), get(), get()) }
viewModel { UserPostsViewModel(get(), get()) }
}

Expand Down Expand Up @@ -196,6 +197,7 @@ val useCaseModule =
single { DeletePostUseCase(get(), get()) }
single { GetUserPostPreviewsUseCase(get()) }
single { GetUserBadgesUseCase(get()) }
single { SetUserBadgesUseCase(get()) }
single { GetUserDetailUseCase(get(), get()) }
single { GetRunningFollowerUseCase(get(), get()) }
single { RunningFinishUseCase(get(), get()) }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.whyranoid.data.datasource.challenge

import com.whyranoid.data.getResult
import com.whyranoid.data.model.challenge.BadgeRequest
import com.whyranoid.data.model.challenge.request.ChallengeChangeStatusRequest
import com.whyranoid.data.model.challenge.request.ChallengeStartRequest
import com.whyranoid.domain.datasource.ChallengeDataSource
Expand Down Expand Up @@ -66,6 +67,17 @@ class ChallengeDataSourceImpl(
}
}

override suspend fun setUserBadges(uid: Long, badges: List<Badge>): Result<Unit> {
return runCatching {
challengeService.setBadgeList(
BadgeRequest(
walkieId = uid,
badgeIdList = badges.map { it.id }
)
)
}
}

override suspend fun startChallenge(uid: Int, challengeId: Int): Result<Unit> {
return runCatching {
challengeService.startChallenge(ChallengeStartRequest(uid, challengeId))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.whyranoid.data.datasource.challenge

import com.whyranoid.data.API
import com.whyranoid.data.model.StatusWithMessage
import com.whyranoid.data.model.challenge.BadgeRequest
import com.whyranoid.data.model.challenge.BadgeResponse
import com.whyranoid.data.model.challenge.ChallengeDetailResponse
import com.whyranoid.data.model.challenge.ChallengeResponse
Expand Down Expand Up @@ -48,6 +49,11 @@ interface ChallengeService {
@Query("walkieId") uid: Long
): Response<List<BadgeResponse>>

@POST(API.BadgeAPI.UPDATE_BADGE_INDICES)
suspend fun setBadgeList(
@Body badges: BadgeRequest
): Response<Unit>

@POST(API.CHALLENGE_CHANGE_STATUS)
suspend fun changeChallengeStatus(
@Body changeChallengeStatusRequest: ChallengeChangeStatusRequest
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.whyranoid.data.model.account

data class ChangeMyInfoResponse (
val nickName: String,
val profileUrl: String?
val nickname: String,
val name: String,
val profileImg: String?
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.whyranoid.data.model.challenge

data class BadgeRequest (
val walkieId: Long,
val badgeIdList: List<Long>,
)
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
package com.whyranoid.data.model.challenge

import com.whyranoid.domain.model.challenge.Badge

data class BadgeResponse(
val badgeId: Int,
val badgeId: Long,
val badgeImg: String,
val badgeFailureImg: String? = null,
val badgeName: String,
val failureImg: String? = null,
val img: String
val receivedAt: String,
val isRep: Boolean,
val walkieId: Long,
val badgeIdList: List<Long>? = null,
) {
fun toBadge(): com.whyranoid.domain.model.challenge.Badge {
return com.whyranoid.domain.model.challenge.Badge(
id = badgeId.toLong(),
fun toBadge(): Badge {
return Badge(
id = badgeId,
imageUrl = badgeImg,
failureImageUrl = badgeFailureImg,
name = badgeName,
imageUrl = img,
failureImageUrl = failureImg
isRepresentative = isRep,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ class ChallengeRepositoryImpl(
return challengeDataSource.getUserBadges(uid)
}

override suspend fun setUserBadges(uid: Long, badges: List<Badge>): Result<Unit> {
return challengeDataSource.setUserBadges(uid, badges)
}

override suspend fun startChallenge(uid: Int, challengeId: Int): Result<Unit> {
return challengeDataSource.startChallenge(uid, challengeId)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ interface ChallengeDataSource {

suspend fun getUserBadges(uid: Long): Result<List<Badge>>

suspend fun setUserBadges(uid: Long, badges: List<Badge>): Result<Unit>

suspend fun startChallenge(uid: Int, challengeId: Int): Result<Unit>

suspend fun changeChallengeStatus(challengeId: Int, status: String, walkieId: Int): Result<Unit>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.whyranoid.domain.model.challenge
data class Badge(
val id: Long,
val name: String,
val isRepresentative: Boolean,
val imageUrl: String,
val failureImageUrl: String? = null,
) {
}
)

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ interface ChallengeRepository {

suspend fun getUserBadges(uid: Long): Result<List<Badge>>

suspend fun setUserBadges(uid: Long, badges:List<Badge>): Result<Unit>

suspend fun startChallenge(uid: Int, challengeId: Int): Result<Unit>

suspend fun changeChallengeStatus(challengeId: Int, status: String, walkieId: Int): Result<Unit>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.whyranoid.domain.usecase

import com.whyranoid.domain.model.challenge.Badge
import com.whyranoid.domain.repository.ChallengeRepository

class SetUserBadgesUseCase(
private val challengeRepository: ChallengeRepository,
) {
suspend operator fun invoke(uid: Long, badges: List<Badge>): Result<Unit> {
return challengeRepository.setUserBadges(uid, badges)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ fun BadgePlaceHolder(
.background(WalkieColor.GrayDisable)
) {
val pxValue = LocalDensity.current.run { 2.dp.toPx() }
Canvas(modifier = modifier.size(48.dp)) {
Canvas(modifier = Modifier.size(48.dp)) {
drawCircle(
color = Color.Gray.copy(alpha = 0.3f),
style = Stroke(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.whyranoid.presentation.reusable

import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
Expand All @@ -12,19 +11,16 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.whyranoid.domain.model.challenge.BadgeInfo
import com.whyranoid.presentation.R
import com.whyranoid.presentation.theme.WalkieTheme
import coil.compose.AsyncImage
import com.whyranoid.domain.model.challenge.Badge
import com.whyranoid.presentation.theme.WalkieTypography

@Composable
fun BadgeItem(
badgeInfo: BadgeInfo
badgeInfo: Badge
) {
Column(
horizontalAlignment = Alignment.CenterHorizontally
Expand All @@ -34,8 +30,8 @@ fun BadgeItem(
.size(54.dp)
.align(Alignment.CenterHorizontally)
) {
Image(
painter = painterResource(badgeInfo.image),
AsyncImage(
model = badgeInfo.imageUrl,
contentDescription = null
)
}
Expand All @@ -48,25 +44,11 @@ fun BadgeItem(
text = badgeInfo.name,
textAlign = TextAlign.Center,
maxLines = 2,
overflow = TextOverflow.Ellipsis,
overflow = TextOverflow.Visible,
style = WalkieTypography.Body2,
modifier = Modifier
.widthIn(max = 62.dp)
.heightIn(max = 24.dp)
)
}
}

@Preview
@Composable
private fun BadgePreview() {
WalkieTheme {
BadgeItem(
BadgeInfo(
1,
R.drawable.badge_test_2,
"test"
)
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ fun <T> DragTarget(
) {
var currentPosition by remember { mutableStateOf(Offset.Zero) }
var isDragging by remember { mutableStateOf(false) }
Log.d("sm.shin", "dragtarget: $dataToDrop")
currentState.dataToDrop = dataToDrop

Box(
Expand All @@ -46,7 +45,6 @@ fun <T> DragTarget(
.pointerInput(Unit) {
detectDragGesturesAfterLongPress(
onDragStart = {
Log.d("sm.shin", "onDragStart: $dataToDrop")
currentState.isDragging = true
currentState.dragPosition = currentPosition
currentState.draggableComposable = content
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.whyranoid.presentation.reusable

import android.util.Log
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
Expand All @@ -13,17 +12,16 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import com.whyranoid.domain.model.challenge.BadgeInfo
import coil.compose.AsyncImage
import com.whyranoid.domain.model.challenge.Badge
import com.whyranoid.presentation.component.badge.BadgePlaceHolder

@Composable
fun MainBadgeItem(
badgeInfo: BadgeInfo,
badgeInfo: Badge,
currentState: DragTargetInfo
) {
Log.d("sm.shin", "mainbadgeInfo: $badgeInfo")
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier
Expand All @@ -34,7 +32,7 @@ fun MainBadgeItem(
.size(54.dp)
.align(Alignment.CenterHorizontally)
) {
if (badgeInfo.image == null) {
if (badgeInfo.imageUrl == null) {
BadgePlaceHolder(
modifier = Modifier
.size(45.dp)
Expand All @@ -49,8 +47,8 @@ fun MainBadgeItem(
dataToDrop = badgeInfo,
currentState = currentState,
content = {
Image(
painter = painterResource(id = badgeInfo.image),
AsyncImage(
model = badgeInfo.imageUrl,
contentDescription = null,
modifier = Modifier.size(54.dp)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -295,18 +295,20 @@ fun UserPageContent(
Spacer(Modifier.height(12.dp))
}

val badgeList = state.userBadgesState.getDataOrNull() ?: emptyList()
val badgeList =
state.userBadgesState.getDataOrNull()?.filter { it.isRepresentative } ?: emptyList()

Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween,
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 20.dp)
.padding(horizontal = 16.dp)
.clip(RoundedCornerShape(12.dp))
.background(WalkieColor.GrayBackground)
.padding(12.dp)
) {
Spacer(modifier = Modifier.width(13.dp))

repeat(minOf(badgeList.size, 5)) {
AsyncImage(
model = badgeList[it].imageUrl,
Expand All @@ -317,7 +319,11 @@ fun UserPageContent(
.size(56.dp),
)
}
repeat(5 - badgeList.size) { BadgePlaceHolder() }
repeat(5 - badgeList.size) {
BadgePlaceHolder(modifier = Modifier.padding(vertical = 12.dp))
}

Spacer(modifier = Modifier.width(13.dp))
}

// 마이페이지인 경우
Expand All @@ -327,9 +333,9 @@ fun UserPageContent(
Box(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 20.dp)
.padding(horizontal = 16.dp)
.clip(RoundedCornerShape(12.dp))
.clickable(enabled = true) {
.clickable(enabled = badgeList.size >= 5) {
onTotalBadgePageClicked()
}
.background(WalkieColor.GrayBackground)
Expand Down
Loading
Loading