Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
a2bef59
:recycle: :: Component ν™”
kimjeakwan Feb 19, 2025
ed2e9bf
:recycle: :: onErrorToast μΆ”κ°€
kimjeakwan Feb 19, 2025
b83c572
:recycle: :: typography μΆ”κ°€
kimjeakwan Feb 19, 2025
7be860e
:recycle: :: typography μΆ”κ°€
kimjeakwan Feb 19, 2025
da8c735
:recycle: :: down ν™œμ‚¬ν‘œ μΆ”κ°€
kimjeakwan Feb 19, 2025
33b969f
:recycle: :: List μ‚­μ œ
kimjeakwan Feb 19, 2025
9e592b7
:recycle: :: List μ‚­μ œ
kimjeakwan Feb 19, 2025
eb8e3bf
:recycle: :: List μ‚­μ œ
kimjeakwan Feb 19, 2025
309d1e1
:recycle: :: List μ‚­μ œ
kimjeakwan Feb 19, 2025
8216bc5
:recycle: :: List μ‚­μ œ
kimjeakwan Feb 19, 2025
e7eb368
:recycle: :: List μ‚­μ œ
kimjeakwan Feb 19, 2025
dca1cc4
:recycle: :: fail 은 dataclass 둜 λ³€κ²½
kimjeakwan Feb 19, 2025
b6d8b16
:recycle: :: Component ν™”
kimjeakwan Feb 19, 2025
b2f26d8
:recycle: :: Component ν™”
kimjeakwan Feb 19, 2025
e3b8c20
:recycle: :: Component ν™”
kimjeakwan Feb 19, 2025
7632cc5
:recycle: :: onErrorToast λ³€κ²½
kimjeakwan Feb 19, 2025
13ffa41
:recycle: :: roomNum μΆ”κ°€
kimjeakwan Feb 19, 2025
9319785
:recycle: :: roomNum μΆ”κ°€
kimjeakwan Feb 19, 2025
2495c19
:recycle: :: roomNum μΆ”κ°€
kimjeakwan Feb 19, 2025
44532c1
:recycle: :: roomNum μΆ”κ°€
kimjeakwan Feb 19, 2025
ff4b7a9
:recycle: :: roomNum μΆ”κ°€
kimjeakwan Feb 19, 2025
685574e
:recycle: :: roomNum μΆ”κ°€
kimjeakwan Feb 19, 2025
5508290
:recycle: :: uq ν™”μ‚΄ν‘œμΆ”κ°€
kimjeakwan Feb 19, 2025
053c19d
:recycle: :: fail에 exception μΆ”κ°€
kimjeakwan Feb 19, 2025
f8deea6
:recycle: :: κ³΅λ°±μ‚­μ œ
kimjeakwan Feb 19, 2025
1c71ea9
Merge branch 'develop' into feature/55-mypage-network
kimjeakwan Feb 19, 2025
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
7 changes: 5 additions & 2 deletions app/src/main/java/DMNavHost.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.rememberNavController
import view.Mypage.navigation.MyScreen
import view.Mypage.navigation.navGationToMyPage
import view.login.navigation.LoginScreen
import view.login.navigation.navigateToLogin

Expand All @@ -20,11 +19,15 @@ fun DMNavHost(
startDestination: String
){


NavHost(navController = navController,
startDestination =startDestination ){
LoginScreen(navigateToHome = navController::navigateToLogin)


MyScreen(navGationToMyPage = navController::popBackStack)
MyScreen(
navigationBack = navController::popBackStack,
onErrorToast = { throwable, message ->}
)
Comment on lines +28 to +31
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ› οΈ Refactor suggestion

MyScreen μ»΄ν¬λ„ŒνŠΈμ˜ λ§€κ°œλ³€μˆ˜κ°€ κ°œμ„ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

였λ₯˜ 처리λ₯Ό μœ„ν•œ onErrorToast 콜백이 μΆ”κ°€λ˜μ–΄ μ‚¬μš©μž κ²½ν—˜μ΄ ν–₯μƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ ν˜„μž¬ κ΅¬ν˜„μ—μ„œλŠ” 콜백이 아무 λ™μž‘λ„ μˆ˜ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ‹€μ œ 였λ₯˜ λ©”μ‹œμ§€λ₯Ό ν‘œμ‹œν•˜λŠ” ν† μŠ€νŠΈ κ΅¬ν˜„μ„ μΆ”κ°€ν•˜λŠ” 것이 μ’‹κ² μŠ΅λ‹ˆλ‹€. μ˜ˆμ‹œ κ΅¬ν˜„μ„ μ›ν•˜μ‹œλ‚˜μš”?

}
}
2 changes: 1 addition & 1 deletion data/src/main/java/remote/api/auth/UsersAPi.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ interface UsersAPi {
@GET("/{user_id}/profile")
suspend fun getUsers(
@Path("user_id") userId: UUID
): List<UsersResponse>
): UsersResponse



Expand Down
4 changes: 2 additions & 2 deletions data/src/main/java/remote/datasource/users/UsersDataSource.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ import remote.dto.users.response.UsersResponse
import java.util.UUID

interface UsersDataSource {
fun getUsers( userId: UUID): Flow<List<UsersResponse>>
}
fun getUsers( userId: UUID): Flow<UsersResponse>
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ class UsersDataSourceImpl @Inject constructor(
private val usersService: UsersAPi
): UsersDataSource
{
override fun getUsers(userId: UUID): Flow<List<UsersResponse>> =
performApiRequest { usersService.getUsers(userId = userId) }
override fun getUsers(
userId: UUID
): Flow<UsersResponse> =
performApiRequest { usersService.getUsers( userId = userId) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ data class MyRankResponse (
@Json(name = "userId") val userId: UUID,
@Json(name = "rank") val rank: Int,
@Json(name = "profileImage") val profileImage: String,
@Json(name = "roomNum") val roomNum: Int,
@Json(name = "name") val name: String,
@Json(name = "penaltyPoint") val penaltyPoint: Int,
)
Expand All @@ -21,6 +22,7 @@ fun MyRankResponse.toModel() = MyRankResponseModel(
rank = rank,
profileImage = profileImage,
name = name,
penaltyPoint = penaltyPoint
penaltyPoint = penaltyPoint,
roomNum = roomNum
)

4 changes: 3 additions & 1 deletion data/src/main/java/remote/dto/rank/response/RankResponse.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,13 @@ data class RankResponse(
@Json(name = "rank") val rank: Int,
@Json(name = "name") val name: String,
@Json(name = "penaltyPoint") val penaltyPoint: Int,
@Json(name = "roomNum") val roomNum: Int,
)

fun RankResponse.toModel() = RankResponseModel(
userId = userId,
rank = rank,
name = name,
penaltyPoint = penaltyPoint
penaltyPoint = penaltyPoint,
roomNum = roomNum
)
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ data class UsersResponse (
@Json(name = "myBecause") val myBecause: String,
@Json(name = "because") val because: String,
@Json(name = "Point-List") val pointList: Int,
@Json(name = "roomNum") val roomNum: Int,
)

fun UsersResponse.toModel() = UsersResponseModel(
Expand All @@ -25,5 +26,6 @@ fun UsersResponse.toModel() = UsersResponseModel(
penaltyPoint = penaltyPoint,
myBecause = myBecause,
because = because,
pointList = pointList
pointList = pointList,
roomNum = roomNum
)
7 changes: 3 additions & 4 deletions data/src/main/java/repoistory/UsersRepositoryImpl.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ import javax.inject.Inject
class UsersRepositoryImpl @Inject constructor(
private val usersDataSource: UsersDataSource
): UsersRepository {
override suspend fun getUsers(userId: UUID): Flow<List<UsersResponseModel>> {
return usersDataSource.getUsers(userId = userId).map { list -> list.map { it.toModel() } }

override suspend fun getUsers(userId: UUID): Flow<UsersResponseModel> {
return usersDataSource.getUsers(userId = userId).map { it.toModel() } }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ data class MyRankResponseModel(
val name: String,
val penaltyPoint: Int,
val profileImage: String,
val roomNum: Int,
)
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ data class RankResponseModel(
val rank: Int,
val name: String,
val penaltyPoint: Int,
val roomNum: Int,
)
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ data class UsersResponseModel (
val myBecause: String,
val because: String,
val pointList: Int,
val roomNum: Int,
)
4 changes: 2 additions & 2 deletions domain/src/main/java/reopoistory/UsersRepository.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ import model.users.response.UsersResponseModel
import java.util.UUID

interface UsersRepository {
suspend fun getUsers(userId: UUID): Flow<List<UsersResponseModel>>

suspend fun getUsers(userId: UUID): Flow<UsersResponseModel>
}
2 changes: 1 addition & 1 deletion domain/src/main/java/usecase/Users/GetUsersUseCase.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ import javax.inject.Inject
class GetUsersUseCase @Inject constructor(
private val usersRepository: UsersRepository
){
suspend operator fun invoke(userId: UUID): Flow<List<UsersResponseModel>> =
suspend operator fun invoke(userId: UUID): Flow<UsersResponseModel> =
usersRepository.getUsers(userId = userId)
}
187 changes: 80 additions & 107 deletions presentation/src/main/java/view/Mypage/Screen/MyPage.kt
Original file line number Diff line number Diff line change
@@ -1,140 +1,113 @@
package view.Mypage.Screen

import androidx.activity.ComponentActivity
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import model.users.response.UsersResponseModel
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import view.Mypage.component.DemeritList
import view.Mypage.component.MyDemeritList
import view.Mypage.component.MyClean
import viewmodel.users.UsersViewModel
import viewmodel.users.uistate.UsersUiState
import java.util.UUID

@Composable
internal fun MyPageRoute(
modifier: Modifier = Modifier,
onErrorToast: (throwable: Throwable?, message: Int?) -> Unit,
viewModel: UsersViewModel = hiltViewModel(LocalContext.current as ComponentActivity),
navigateToBack: () -> Unit,
) {
val usersUiState by viewModel.usersUiState.collectAsStateWithLifecycle()

MyPage(
modifier = modifier,
onErrorToast = onErrorToast,
navigateToBack = navigateToBack,
usersUiState = usersUiState,
getUserCallBack = viewModel::getUsers,
)

}

@Composable
fun MyPage(
modifier: Modifier = Modifier,
data:UsersResponseModel
onErrorToast: (throwable: Throwable?, message: Int?) -> Unit,
navigateToBack: () -> Unit,
usersUiState: UsersUiState,
getUserCallBack: (UUID) -> Unit,
) {
val scrollState = rememberScrollState()
var uuid by remember { mutableStateOf(UUID.randomUUID()) }

) {
LaunchedEffect(Unit) {
getUserCallBack(uuid)
}
Column(
modifier = modifier
.fillMaxSize()
.verticalScroll(scrollState)
.background(color = Color(0xFF1E1E1E))
) {
Column(
modifier = Modifier.fillMaxWidth(),
verticalArrangement = Arrangement.Top,
modifier = Modifier
.fillMaxWidth()
.padding(
horizontal = 20.dp,
vertical = 16.dp,
),
verticalArrangement = Arrangement.spacedBy(10.dp, Alignment.Top),
horizontalAlignment = Alignment.Start,
) {
Column(
modifier = Modifier
.fillMaxWidth()
.padding(start = 20.dp, end = 235.dp),
horizontalAlignment = Alignment.Start,
) {
Text(
text = "μ•ˆλ…•ν•˜μ„Έμš”", style = TextStyle(
fontSize = 20.sp,
fontWeight = FontWeight(600),
color = Color(0xFFFFFFFF),
)
)
Text(
text = AnnotatedString.Builder("${data.name}λ‹˜").apply {
addStyle(
style = SpanStyle(
color = Color(0xFF9BFFA6), fontSize = 27.sp // 이산 λΆ€λΆ„μ˜ κΈ€μž 크기 μ„€μ •
),
start = 0, end = 2
)
}.
toAnnotatedString(), style = TextStyle(
fontSize = 22.sp, // κΈ°λ³Έ κΈ€μž 크기
fontWeight = FontWeight(900),
color = Color(0xFFFFFFFF),
textAlign = TextAlign.Start
)
)
}
Column(
modifier = Modifier
.fillMaxWidth()
.padding(
horizontal = 20.dp,
vertical = 16.dp,
),
verticalArrangement = Arrangement.spacedBy(10.dp, Alignment.Top),
horizontalAlignment = Alignment.Start,
) {
MyClean(
modifier = modifier,
data.todayClean,
data.penaltyPoint,
data.cleanPoint,
)

}
Column(
modifier = Modifier
.fillMaxWidth()
.padding(start = 20.dp, end = 20.dp, bottom = 16.dp),
verticalArrangement = Arrangement.spacedBy(10.dp, Alignment.Top),
horizontalAlignment = Alignment.Start,
) {
MyDemeritList(
modifier = modifier,
data.myBecause,
data.penaltyPoint,
)
}
Column(
modifier = Modifier
.fillMaxWidth()
.padding(start = 20.dp, end = 20.dp),
verticalArrangement = Arrangement.spacedBy(10.dp, Alignment.Top),
horizontalAlignment = Alignment.Start,
) {
DemeritList(
modifier = modifier,
data.because,
data.pointList,
)
}
MyClean(
usersUiState = usersUiState,
onErrorToast = onErrorToast,
modifier = modifier,
)
}
Column(
modifier = Modifier
.fillMaxWidth()
.padding(start = 20.dp, end = 20.dp, bottom = 16.dp),
verticalArrangement = Arrangement.spacedBy(10.dp, Alignment.Top),
horizontalAlignment = Alignment.Start,
) {
MyDemeritList(
usersUiState = usersUiState,
onErrorToast = onErrorToast,
modifier = modifier,
)
}
Column(
modifier = Modifier
.fillMaxWidth()
.padding(start = 20.dp, end = 20.dp),
verticalArrangement = Arrangement.spacedBy(10.dp, Alignment.Top),
horizontalAlignment = Alignment.Start,
) {
DemeritList(
usersUiState = usersUiState,
onErrorToast = onErrorToast,
)
}
}
}

@Composable
@Preview
fun PreviewMyPage() {
MyPage(
data = UsersResponseModel(
because = "λ…ΈνŠΈλΆ",
cleanPoint = 3,
myBecause = "λ…ΈνŠΈλΆ",
pointList = 3,
name = "이산",
penaltyPoint = 1,
todayClean = "ν™”μž₯μ‹€",
userId = UUID.randomUUID(),



)
)
}
Loading
Loading