Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
a061195
rename : 클래스명 좀 더 명확하게 변경 #136
theBettor May 2, 2025
8b6dd2f
Merge remote-tracking branch 'origin/develop' into refactor/onboardin…
theBettor May 7, 2025
c1f9572
test
theBettor May 7, 2025
0d43734
test
theBettor May 8, 2025
e8089c9
1. 왜자꾸 NavHost에서 파라미터를 요구하는지 이해할 수가 없었다. GraphBuilder에서 Screen이 아닌 Ro…
theBettor May 8, 2025
c851fbd
Merge branch 'refactor/test-onboarding' into refactor/onboarding_fini…
theBettor May 8, 2025
30147f3
refactor: 프로필 세팅화면 끼워넣기 #157
theBettor May 9, 2025
00710aa
feat: 기기 내의 이미지를 선택하면 바로 UI에 반영 그 과정에 Route를 만들고 다음 화면에 넘기기 #134
theBettor May 9, 2025
f02b20e
refactor: 저장된 uri 다른 뷰모델로 보내서 화면에 띄우기 #133
theBettor May 11, 2025
0a374d7
Merge branch 'refactor/0510_onboarding' into refactor/onboarding_fini…
theBettor May 11, 2025
0434cc8
fix: textfield placeholder:할머니 제거 #168
theBettor May 15, 2025
4ca914b
refactor: 초대코드공유화면 순서변경 #132
theBettor May 15, 2025
4cf9d7e
refactor: 이미지 처리된 Layout 수정(SpeechBubble 구조변경) #117
theBettor May 15, 2025
1c6d068
fix: 테스트 코드 삭제
theBettor May 15, 2025
6bcbb01
Merge remote-tracking branch 'origin/refactor/onboarding_finishing' i…
theBettor May 15, 2025
7f91cb1
revert: unintended change of SocialLoginHelper.kt
theBettor May 15, 2025
b0b1e09
Merge remote-tracking branch 'origin/develop' into refactor/onboardin…
theBettor May 15, 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
33 changes: 27 additions & 6 deletions app/src/main/java/com/teampatch/harmony/MainNavHost.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.teampatch.harmony

import android.net.Uri
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
Expand All @@ -21,8 +22,12 @@ import com.teampatch.feature.memorycard.registration.addMemoryCardRegistrationSc
import com.teampatch.feature.memorycard.registration.navigateToMemoryCardRegistrationScreen
import com.teampatch.feature.memorystorage.addMemoryStorageScreen
import com.teampatch.feature.onboarding.enter.addOnboardingEnterInvitationCodeScreen
import com.teampatch.feature.onboarding.enter.addOnboardingEnterProfileSettingsScreen
import com.teampatch.feature.onboarding.enter.addOnboardingEnterRelationScreen
import com.teampatch.feature.onboarding.enter.addOnboardingEnterSpaceScreen
import com.teampatch.feature.onboarding.enter.navigateToEnterInvitationCodeScreen
import com.teampatch.feature.onboarding.enter.navigateToEnterProfileSettingsScreen
import com.teampatch.feature.onboarding.enter.navigateToEnterRelationScreen
import com.teampatch.feature.onboarding.enter.navigateToEnterSpaceScreen
import com.teampatch.feature.onboarding.login.ui.OnboardingRoute
import com.teampatch.feature.onboarding.login.ui.OnboardingStartRoute
Expand All @@ -31,12 +36,14 @@ import com.teampatch.feature.onboarding.login.ui.addOnboardingScreen
import com.teampatch.feature.onboarding.login.ui.addOnboardingStartScreen
import com.teampatch.feature.onboarding.login.ui.navigateToPermissionNotificationScreen
import com.teampatch.feature.onboarding.login.ui.navigateToStartScreen
import com.teampatch.feature.onboarding.make.addOnboardingMakeInviteGrandParentsScreen
import com.teampatch.feature.onboarding.make.addOnboardingMakeParentsNameScreen
import com.teampatch.feature.onboarding.make.addOnboardingMakeProfileSettingsScreen
import com.teampatch.feature.onboarding.make.addOnboardingMakeRelationScreen
import com.teampatch.feature.onboarding.make.navigateToMakeGroupScreen
import com.teampatch.feature.onboarding.make.navigateToMakeProfileSettingsScreen
import com.teampatch.feature.onboarding.make.navigateToMakeRelationScreen
import com.teampatch.feature.onboarding.make.navigateToShareInvitationScreen
import com.teampatch.feature.profile.edit.addProfileEditScreen
import com.teampatch.feature.profile.edit.navigateToProfileEditScreen
import com.teampatch.feature.question.addQuestionScreen
Expand Down Expand Up @@ -104,17 +111,17 @@ fun MainNavHost(
onShareInvitationScreenRequest = navController::navigateToMakeRelationScreen
)

// addOnboardingMakeInviteGrandParentsScreen(
// onBackRequest = navController::navigateUp,
// onRelationScreenRequest = { navController.navigateToMakeRelationScreen() }
// )

addOnboardingMakeRelationScreen(
onBackRequest = navController::navigateUp,
onProfileSettingsScreenRequest = navController::navigateToMakeProfileSettingsScreen
)

addOnboardingMakeProfileSettingsScreen(
onBackRequest = navController::navigateUp,
onHomeRouteRequest = { navController.navigateToShareInvitationScreen() }
)

addOnboardingMakeInviteGrandParentsScreen(
onBackRequest = navController::navigateUp,
onHomeRouteRequest = { navController.navigateToHomeScreen() }
)
Expand All @@ -123,7 +130,21 @@ fun MainNavHost(

addOnboardingEnterInvitationCodeScreen(
onBackRequest = navController::navigateUp,
onEnterSpaceScreenRequest = { navController.navigateToEnterSpaceScreen() }
onEnterRelationScreenRequest = navController::navigateToEnterRelationScreen
)

addOnboardingEnterRelationScreen(
onBackRequest = navController::navigateUp,
onEnterProfileSettingsScreenRequest = navController::navigateToEnterProfileSettingsScreen
)

addOnboardingEnterProfileSettingsScreen(
onBackRequest = navController::navigateUp,
onEnterSpaceScreenRequest = { uris: List<Uri> ->
// uris는 List<Uri> 타입
val uriStrings = uris.map { it.toString() } // List<Uri> -> List<String>
navController.navigateToEnterSpaceScreen(urisAsStrings = uriStrings) // 수정된 함수 호출
}
)

addOnboardingEnterSpaceScreen(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.drawBehind
import androidx.compose.ui.geometry.CornerRadius
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Path
import androidx.compose.ui.graphics.drawscope.Stroke
import androidx.compose.ui.text.TextStyle
Expand All @@ -31,6 +32,8 @@ import com.teampatch.core.designsystem.theme.PretendardFontFamily
@Composable
fun SpeechBubble(
modifier: Modifier = Modifier,
backgroundColor: Color = G1,
borderColor: Color = G3,
contentAlignment: Alignment = Alignment.Center,
propagateMinConstraints: Boolean = false,
content: @Composable (BoxScope.() -> Unit),
Expand All @@ -43,12 +46,12 @@ fun SpeechBubble(
.padding(top = 32.dp, start = 20.dp, end = 20.dp)
.drawBehind {
drawRoundRect(
color = G1,
color = backgroundColor,
size = size,
cornerRadius = CornerRadius(20.dp.toPx())
)
drawRoundRect(
color = G3,
color = borderColor,
size = size,
cornerRadius = CornerRadius(20.dp.toPx()),
style = Stroke(1.dp.toPx())
Expand All @@ -60,16 +63,16 @@ fun SpeechBubble(
lineTo((size.width / 2) - 24.dp.toPx(), size.height - 20.dp.toPx())
close()
},
color = G1
color = backgroundColor
)
drawLine(
color = G3,
color = borderColor,
start = Offset(size.width / 2, size.height + 20.dp.toPx()),
end = Offset((size.width / 2) + 12.dp.toPx(), size.height),
strokeWidth = 1.dp.toPx()
)
drawLine(
color = G3,
color = borderColor,
start = Offset(size.width / 2, size.height + 20.dp.toPx()),
end = Offset((size.width / 2) - 12.dp.toPx(), size.height),
strokeWidth = 1.dp.toPx()
Expand Down
2 changes: 2 additions & 0 deletions feature/onboarding-enter/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ dependencies {
implementation(libs.androidx.paging.runtime)
implementation(libs.androidx.paging.compose)

implementation(libs.coil.compose)

testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ private const val MAX_LENGTH = 5
@Composable
internal fun OnboardingEnterInvitationCodeRoute(
onBackRequest: () -> Unit,
onEnterSpaceScreenRequest: () -> Unit,
onEnterRelationScreenRequest: () -> Unit,
viewModel: OnboardingEnterInvitationCodeViewModel = hiltViewModel(),
) {
val lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current
Expand All @@ -70,7 +70,7 @@ internal fun OnboardingEnterInvitationCodeRoute(

OnboardingEnterInvitationCodeScreen(
onBackRequest = onBackRequest,
onEnterSpaceScreenRequest = { viewModel.joinGroup() },
onEnterSpaceScreenRequest = onEnterRelationScreenRequest,
onInviteCodeChange = viewModel::updateInviteCode,
uiState = uiState
)
Expand All @@ -85,7 +85,7 @@ internal fun OnboardingEnterInvitationCodeRoute(
}

OnboardingEnterInvitationCodeEvent.Success -> {
onEnterSpaceScreenRequest()
onEnterRelationScreenRequest()
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.teampatch.feature.onboarding.enter

import android.net.Uri
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
Expand All @@ -19,32 +20,86 @@ fun NavController.navigateToEnterInvitationCodeScreen(

fun NavGraphBuilder.addOnboardingEnterInvitationCodeScreen(
onBackRequest: () -> Unit,
onEnterSpaceScreenRequest: () -> Unit,
onEnterRelationScreenRequest: () -> Unit,
) {
composable<OnboardingEnterInvitationCodeRoute> {
OnboardingEnterInvitationCodeRoute(
onBackRequest = onBackRequest,
onEnterSpaceScreenRequest = onEnterSpaceScreenRequest
onEnterRelationScreenRequest = onEnterRelationScreenRequest
)
}
}

@Serializable
data object OnboardingEnterRelationRoute

fun NavController.navigateToEnterRelationScreen(
navOptions: NavOptions? = null,
navigatorExtras: Navigator.Extras? = null,
) {
navigate(OnboardingEnterRelationRoute, navOptions, navigatorExtras)
}

fun NavGraphBuilder.addOnboardingEnterRelationScreen(
onBackRequest: () -> Unit,
onEnterProfileSettingsScreenRequest: () -> Unit,
) {
composable<OnboardingEnterRelationRoute> {
OnboardingEnterRelationRoute(
onBackRequest = onBackRequest,
onEnterProfileSettingsScreenRequest = onEnterProfileSettingsScreenRequest
)
}
}

@Serializable
data object OnboardingEnterSpaceRoute
data object OnboardingEnterProfileSettingsRoute // 기존과 동일

fun NavController.navigateToEnterProfileSettingsScreen(
navOptions: NavOptions? = null,
navigatorExtras: Navigator.Extras? = null,
) {
navigate(OnboardingEnterProfileSettingsRoute, navOptions, navigatorExtras)
}

// OnboardingEnterSpaceRoute 수정: data object -> data class
@Serializable
data class OnboardingEnterSpaceRoute(
val profileImageUrisAsStrings: List<String>, // Uri 문자열 리스트를 저장할 프로퍼티
)

// navigateToEnterSpaceScreen 함수 시그니처 및 호출 방식 수정
fun NavController.navigateToEnterSpaceScreen(
urisAsStrings: List<String>, // List<String>을 파라미터로 받도록 변경
navOptions: NavOptions? = null,
navigatorExtras: Navigator.Extras? = null,
) {
navigate(OnboardingEnterSpaceRoute, navOptions, navigatorExtras)
// 수정된 Route 객체를 생성하여 navigate 호출
navigate(OnboardingEnterSpaceRoute(profileImageUrisAsStrings = urisAsStrings), navOptions, navigatorExtras)
}

// NavGraphBuilder 확장 함수들은 시그니처 변경 없이 내부 로직은 그대로 유지될 수 있습니다.
// 타입 추론에 의해 composable<T>의 T가 data class로 변경됩니다.

fun NavGraphBuilder.addOnboardingEnterProfileSettingsScreen(
onBackRequest: () -> Unit,
onEnterSpaceScreenRequest: (List<Uri>) -> Unit, // 이 콜백은 List<Uri>를 전달
) {
composable<OnboardingEnterProfileSettingsRoute> {
OnboardingEnterProfileSettingsRoute( // 이 Composable 내부에서 onEnterSpaceScreenRequest 호출
onBackRequest = onBackRequest,
onEnterSpaceScreenRequest = onEnterSpaceScreenRequest
)
}
}

fun NavGraphBuilder.addOnboardingEnterSpaceScreen(
onBackRequest: () -> Unit,
onHomeRouteRequest: () -> Unit,
) {
composable<OnboardingEnterSpaceRoute> {
OnboardingEnterSpaceScreen(
// T가 OnboardingEnterSpaceRoute (data class)로 변경됨
OnboardingEnterSpaceRoute( // 이 Composable 내부의 ViewModel이 SavedStateHandle을 통해 인자를 받음
onBackRequest = onBackRequest,
onHomeRouteRequest = onHomeRouteRequest
)
Expand Down
Loading