Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feat] 전체적인 네비게이션 연결 및 온보딩/앱 아이콘 그래픽 추가 #79

Merged
merged 13 commits into from
Jan 24, 2025
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: 2 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:icon="@drawable/img_app_icon"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:roundIcon="@drawable/img_app_icon"
android:supportsRtl="true"
android:theme="@style/Theme.BBANGZIP"
android:usesCleartextTraffic="true"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ data class ResponseExamNameDto(
@SerialName("examDday")
val examDday: Int,
@SerialName("motivationMessage")
val motivationMessage: String,
val motivationMessage: String?,
@SerialName("studyList")
val studyList: List<StudyInfo>,
) {
fun toSubjectDetailInfoEntity() =
SubjectDetailInfoEntity(
examDate = examDate,
examDday = examDday,
motivationMessage = motivationMessage,
motivationMessage = motivationMessage ?: "",
todoList = studyList.map { it.toToDoCardEntity() },
)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.android.bbangzip.data.repositoryImpl.local

import kotlinx.coroutines.flow.Flow
import org.android.bbangzip.BadgeInfo
import org.android.bbangzip.OnboardingInfo
import org.android.bbangzip.UserPreferences
import org.android.bbangzip.data.datasource.local.UserLocalDataSource
Expand Down Expand Up @@ -103,4 +104,39 @@ class UserLocalRepositoryImpl
.build()
}
}

override suspend fun setIsBadgeAvailable(isBadgeAvailable: Boolean) {
userDataSource.updateUserPreferences { userData ->
userData.toBuilder()
.setIsBadgeAvailable(isBadgeAvailable)
.build()
}
}

override suspend fun setIsOnOnboardingDone(isOnboardingDone: Boolean) {
userDataSource.updateUserPreferences { userData ->
userData.toBuilder()
.setIsOnboardingDone(isOnboardingDone)
.build()
}
}

override suspend fun setBadgeInfo(
badgeName: String,
badgeImage: String,
hashTags: List<String>,
) {
userDataSource.updateUserPreferences { userData ->
val badgeInfo =
BadgeInfo.newBuilder()
.setBadgeName(badgeName)
.setBadgeImage(badgeImage)
.addAllHashTags(hashTags)
.build()

userData.toBuilder()
.addBadges(badgeInfo)
.build()
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.android.bbangzip.domain.model

import org.android.bbangzip.presentation.model.Badge

data class BadgeCardListEntity(
val badgeCardList: List<BadgeCardEntity>,
)
Expand All @@ -8,4 +10,11 @@ data class BadgeCardEntity(
val badgeImage: String,
val badgeName: String,
val hashTags: List<String>,
)
) {
fun toBadge() =
Badge(
badgeName = badgeName,
badgeImg = badgeImage,
hashTags = hashTags,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,14 @@ interface UserLocalRepository {
suspend fun setIsOnboardingCompleted(isOnboardingCompleted: Boolean)

suspend fun clearOnboardingInfo()

suspend fun setIsOnOnboardingDone(isOnboardingDone: Boolean)

suspend fun setIsBadgeAvailable(isBadgeAvailable: Boolean)

suspend fun setBadgeInfo(
badgeName: String,
badgeImage: String,
hashTags: List<String>,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
Expand All @@ -25,6 +26,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
Expand Down Expand Up @@ -220,7 +222,10 @@ private fun BadgeDetailContent(
.crossfade(enable = true)
.build(),
contentDescription = null,
modifier = Modifier.align(Alignment.CenterHorizontally),
modifier =
Modifier
.clip(shape = RoundedCornerShape(48.dp))
.align(Alignment.CenterHorizontally),
)

Spacer(modifier = Modifier.height(8.dp))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@ class LoginContract {
val isOnboardingCompleted: Boolean = false,
val onBoardingList: List<Int> =
immutableListOf(
R.drawable.img_login1,
R.drawable.img_login2,
R.drawable.img_login1,
R.drawable.img_onboarding_first,
R.drawable.img_onboarding_second,
),
val loginState: Boolean = false,
) : BaseContract.State, Parcelable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ import kotlinx.serialization.Serializable
fun NavController.navigateLogin() {
navigate(
route = LoginRoute,
)
) {
launchSingleTop = true
}
}

fun NavGraphBuilder.loginNavGraph(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import org.android.bbangzip.presentation.ui.my.bbangzipdetail.BbangZipDetailRout
fun NavController.navigateBbangZipDetail() {
navigate(
route = BbangZipDetailRoute,
)
) {
launchSingleTop = true
}
}

fun NavGraphBuilder.bbangZipDetailNavGraph(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ object MyBadgeCategoryRoute
fun NavController.navigateToMyBadgeCategory() {
navigate(
route = MyBadgeCategoryRoute,
)
) {
launchSingleTop = true
}
}

fun NavGraphBuilder.myBadgeCategoryNavGraph(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,12 @@ fun MainNavHost(

onboardingNavGraph(
navigateToOnboardingEnd = { navigator.navigateToOnboardingEnd() },
popBackStack = { navigator.popBackStackIfNotSubject() },
)

onboardingEndNavGraph(
navigateToSubject = { navigator.navigateToSubject() },
popBackStack = { navigator.popBackStackIfNotSubject() },
)

todoAddNavGraph(
Expand Down Expand Up @@ -115,6 +117,7 @@ fun MainNavHost(

addStudyNavGraph(
padding = padding,
popBackStack = { navigator.popBackStackIfNotSubject() },
navigateSplitStudy = { navigator.navigateToSplitStudy(it) },
)

Expand Down Expand Up @@ -142,9 +145,10 @@ fun MainNavHost(
navigateToAddToDo = { navigator.navigateToToDoAdd() },
navigateToAddPendingToDo = { navigator.navigateToToDoAddPending() },
)

subjectDetailNavGraph(
padding = padding,
navigateToBack = { navigator.popBackStackIfNotSubject() },
popBackStack = { navigator.popBackStackIfNotSubject() },
navigateToModifyMotivation = { id, name -> navigator.navigateToModifyMotivationMessage(id, name) },
navigateToModifySubjectName = { id, name -> navigator.navigateToModifySubjectName(id, name) },
navigateToAddStudy = { splitStudyData -> navigator.navigateToAddStudy(splitStudyData) },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import android.annotation.SuppressLint
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.navigation.NavDestination
import androidx.navigation.NavGraph.Companion.findStartDestination
import androidx.navigation.NavHostController
import androidx.navigation.NavOptions
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navOptions
Expand Down Expand Up @@ -62,7 +64,7 @@ class MainNavigator(
Timber.d("[navigation] restoreState -> $restoreState")
}.let { navOptions ->
when (bottomNavigationType) {
BottomNavigationType.SUBJECT -> navHostController.navigateSubject()
BottomNavigationType.SUBJECT -> navHostController.navigateSubject(navOptions)
BottomNavigationType.TODO -> navHostController.navigateTodo(navOptions)
BottomNavigationType.FRIEND -> navHostController.navigateFriend(navOptions)
BottomNavigationType.MY -> navHostController.navigateMy(navOptions)
Expand All @@ -82,8 +84,15 @@ class MainNavigator(
navHostController.navigateLogin()
}

fun navigateToSubject() {
navHostController.navigateSubject()
fun navigateToSubject(navOptions: NavOptions? = null) {
navHostController.navigateSubject(
navOptions ?: navOptions {
popUpTo(navHostController.graph.findStartDestination().id) {
inclusive = true
}
launchSingleTop = true
},
)
}

fun navigateToAddStudy(splitStudyData: SplitStudyData) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ class OnboardingContract {
}

sealed interface OnboardingEvent : BaseContract.Event {
data object Initialize : OnboardingEvent

data class OnChangeUserName(val userName: String) : OnboardingEvent

data class OnChangeUserNameFocused(val isFocused: Boolean) : OnboardingEvent
Expand All @@ -44,8 +46,12 @@ class OnboardingContract {

data object OnClickBackBtn : OnboardingEvent

data object OnClickBackFromEndBtn : OnboardingEvent

data object OnClickNextBtn : OnboardingEvent

data object OnClickOnboardingNextBtn : OnboardingEvent

data object OnClickFinishBtn : OnboardingEvent
}

Expand Down
Loading
Loading