Skip to content

Commit f2e785b

Browse files
authored
Merge pull request #124 from YAPP-Github/release/2.0.0
[Release/2.0.0] (main)
2 parents ab4bde7 + d4e63c4 commit f2e785b

File tree

378 files changed

+6679
-3950
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

378 files changed

+6679
-3950
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
tools:targetApi="31">
1818
<activity
1919
android:name=".MainActivity"
20+
android:windowSoftInputMode="adjustResize"
2021
android:exported="true"
2122
android:theme="@style/Theme.Bitnagil">
2223
<intent-filter>

app/src/main/java/com/threegap/bitnagil/MainActivity.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.activity.compose.setContent
99
import androidx.activity.enableEdgeToEdge
1010
import androidx.compose.foundation.layout.Box
1111
import androidx.compose.foundation.layout.fillMaxSize
12+
import androidx.compose.foundation.layout.navigationBarsPadding
1213
import androidx.compose.foundation.layout.padding
1314
import androidx.compose.runtime.LaunchedEffect
1415
import androidx.compose.ui.Alignment
@@ -53,7 +54,8 @@ class MainActivity : ComponentActivity() {
5354
state = globalToast,
5455
modifier = Modifier
5556
.align(Alignment.BottomCenter)
56-
.padding(bottom = 100.dp),
57+
.navigationBarsPadding()
58+
.padding(bottom = if (mainNavigator.hasBottomNavigationBarRoute()) 80.dp else 16.dp),
5759
)
5860
}
5961
}

app/src/main/java/com/threegap/bitnagil/MainNavHost.kt

Lines changed: 75 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,17 @@ import androidx.navigation.compose.composable
88
import androidx.navigation.toRoute
99
import com.threegap.bitnagil.navigation.home.HomeNavHost
1010
import com.threegap.bitnagil.presentation.emotion.EmotionScreenContainer
11-
import com.threegap.bitnagil.presentation.intro.IntroScreenContainer
11+
import com.threegap.bitnagil.presentation.guide.GuideScreenContainer
1212
import com.threegap.bitnagil.presentation.login.LoginScreenContainer
1313
import com.threegap.bitnagil.presentation.onboarding.OnBoardingScreenContainer
1414
import com.threegap.bitnagil.presentation.onboarding.OnBoardingViewModel
1515
import com.threegap.bitnagil.presentation.onboarding.model.navarg.OnBoardingScreenArg
16+
import com.threegap.bitnagil.presentation.routinelist.RoutineListScreenContainer
1617
import com.threegap.bitnagil.presentation.setting.SettingScreenContainer
1718
import com.threegap.bitnagil.presentation.splash.SplashScreenContainer
1819
import com.threegap.bitnagil.presentation.terms.TermsAgreementScreenContainer
1920
import com.threegap.bitnagil.presentation.webview.BitnagilWebViewScreen
21+
import com.threegap.bitnagil.presentation.withdrawal.WithdrawalScreenContainer
2022
import com.threegap.bitnagil.presentation.writeroutine.WriteRoutineScreenContainer
2123
import com.threegap.bitnagil.presentation.writeroutine.WriteRoutineViewModel
2224
import com.threegap.bitnagil.presentation.writeroutine.model.navarg.WriteRoutineScreenArg
@@ -33,8 +35,8 @@ fun MainNavHost(
3335
) {
3436
composable<Route.Splash> {
3537
SplashScreenContainer(
36-
navigateToIntro = {
37-
navigator.navController.navigate(Route.Intro) {
38+
navigateToLogin = {
39+
navigator.navController.navigate(Route.Login) {
3840
popUpTo<Route.Splash> { inclusive = true }
3941
}
4042
},
@@ -52,12 +54,6 @@ fun MainNavHost(
5254
)
5355
}
5456

55-
composable<Route.Intro> {
56-
IntroScreenContainer(
57-
navigateToLogin = { navigator.navController.navigate(Route.Login) },
58-
)
59-
}
60-
6157
composable<Route.Login> {
6258
LoginScreenContainer(
6359
navigateToHome = navigator::navigateToHomeAndClearStack,
@@ -84,7 +80,9 @@ fun MainNavHost(
8480
)
8581
},
8682
navigateToOnBoarding = {
87-
navigator.navController.navigate(Route.OnBoarding())
83+
navigator.navController.navigate(Route.OnBoarding()) {
84+
popUpTo(0) { inclusive = true }
85+
}
8886
},
8987
navigateToBack = {
9088
if (navigator.navController.previousBackStackEntry != null) {
@@ -118,15 +116,24 @@ fun MainNavHost(
118116
),
119117
)
120118
},
119+
navigateToGuide = {
120+
navigator.navController.navigate(Route.Guide) {
121+
launchSingleTop = true
122+
}
123+
},
121124
navigateToRegisterRoutine = { routineId ->
122125
navigator.navController.navigate(Route.WriteRoutine(routineId = routineId))
123126
},
124-
navigateToEditRoutine = { routineId ->
125-
navigator.navController.navigate(Route.WriteRoutine(routineId = routineId, isRegister = false))
126-
},
127127
navigateToEmotion = {
128128
navigator.navController.navigate(Route.Emotion)
129129
},
130+
navigateToRoutineList = { selectedDate ->
131+
navigator.navController.navigate(
132+
Route.RoutineList(selectedDate = selectedDate),
133+
) {
134+
launchSingleTop = true
135+
}
136+
},
130137
)
131138
}
132139

@@ -166,13 +173,16 @@ fun MainNavHost(
166173
),
167174
)
168175
},
169-
navigateToIntro = {
170-
navigator.navController.navigate(Route.Intro) {
176+
navigateToLogin = {
177+
navigator.navController.navigate(Route.Login) {
171178
popUpTo(0) {
172179
inclusive = true
173180
}
174181
}
175182
},
183+
navigateToWithdrawal = {
184+
navigator.navController.navigate(Route.Withdrawal)
185+
},
176186
)
177187
}
178188

@@ -204,7 +214,7 @@ fun MainNavHost(
204214
val writeScreenNavArg = if (arg.isRegister) {
205215
WriteRoutineScreenArg.Add(baseRoutineId = arg.routineId)
206216
} else {
207-
WriteRoutineScreenArg.Edit(routineId = arg.routineId!!)
217+
WriteRoutineScreenArg.Edit(routineId = arg.routineId!!, updateRoutineFromNowDate = arg.isUpdateRoutineFromNowDate)
208218
}
209219

210220
val viewModel = hiltViewModel<WriteRoutineViewModel, WriteRoutineViewModel.Factory> { factory ->
@@ -230,5 +240,54 @@ fun MainNavHost(
230240
},
231241
)
232242
}
243+
244+
composable<Route.Withdrawal> {
245+
WithdrawalScreenContainer(
246+
navigateToBack = {
247+
if (navigator.navController.previousBackStackEntry != null) {
248+
navigator.navController.popBackStack()
249+
}
250+
},
251+
navigateToLogin = {
252+
navigator.navController.navigate(Route.Login) {
253+
popUpTo(0) {
254+
inclusive = true
255+
}
256+
}
257+
},
258+
)
259+
}
260+
261+
composable<Route.RoutineList> {
262+
RoutineListScreenContainer(
263+
navigateToBack = {
264+
if (navigator.navController.previousBackStackEntry != null) {
265+
navigator.navController.popBackStack()
266+
}
267+
},
268+
navigateToAddRoutine = {
269+
navigator.navController.navigate(Route.WriteRoutine())
270+
},
271+
navigateToEditRoutine = { routineId, updateRoutineFromNowDate ->
272+
navigator.navController.navigate(
273+
Route.WriteRoutine(
274+
routineId = routineId,
275+
isRegister = false,
276+
isUpdateRoutineFromNowDate = updateRoutineFromNowDate,
277+
),
278+
)
279+
},
280+
)
281+
}
282+
283+
composable<Route.Guide> {
284+
GuideScreenContainer(
285+
navigateToBack = {
286+
if (navigator.navController.previousBackStackEntry != null) {
287+
navigator.navController.popBackStack()
288+
}
289+
},
290+
)
291+
}
233292
}
234293
}

app/src/main/java/com/threegap/bitnagil/MainNavigator.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,40 @@
11
package com.threegap.bitnagil
22

33
import androidx.compose.runtime.Composable
4+
import androidx.compose.runtime.getValue
45
import androidx.compose.runtime.remember
6+
import androidx.navigation.NavDestination
7+
import androidx.navigation.NavDestination.Companion.hasRoute
58
import androidx.navigation.NavHostController
9+
import androidx.navigation.compose.currentBackStackEntryAsState
610
import androidx.navigation.compose.rememberNavController
711

812
class MainNavigator(
913
val navController: NavHostController,
1014
) {
1115
val startDestination = Route.Splash
1216

17+
private val currentDestination: NavDestination?
18+
@Composable get() {
19+
val currentEntry by navController.currentBackStackEntryAsState()
20+
return currentEntry?.destination
21+
}
22+
1323
internal fun navigateToHomeAndClearStack() =
1424
navController.navigate(Route.Home) {
1525
popUpTo(0) {
1626
inclusive = true
1727
}
1828
}
29+
30+
@Composable
31+
internal fun hasBottomNavigationBarRoute(): Boolean {
32+
val destination = currentDestination
33+
return when {
34+
destination?.hasRoute<Route.Home>() == true -> true
35+
else -> false
36+
}
37+
}
1938
}
2039

2140
@Composable

app/src/main/java/com/threegap/bitnagil/MainScreen.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.threegap.bitnagil
22

33
import androidx.compose.foundation.layout.WindowInsets
4-
import androidx.compose.foundation.layout.WindowInsetsSides
4+
import androidx.compose.foundation.layout.exclude
55
import androidx.compose.foundation.layout.fillMaxSize
6-
import androidx.compose.foundation.layout.only
6+
import androidx.compose.foundation.layout.ime
7+
import androidx.compose.foundation.layout.navigationBars
78
import androidx.compose.foundation.layout.padding
8-
import androidx.compose.foundation.layout.systemBars
99
import androidx.compose.material3.Scaffold
1010
import androidx.compose.runtime.Composable
1111
import androidx.compose.ui.Modifier
@@ -18,7 +18,7 @@ fun MainScreen(
1818
) {
1919
Scaffold(
2020
modifier = modifier.fillMaxSize(),
21-
contentWindowInsets = WindowInsets.systemBars.only(WindowInsetsSides.Bottom),
21+
contentWindowInsets = WindowInsets.navigationBars.exclude(WindowInsets.ime),
2222
containerColor = BitnagilTheme.colors.white,
2323
) { innerPadding ->
2424
MainNavHost(

app/src/main/java/com/threegap/bitnagil/Route.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ sealed interface Route {
77
@Serializable
88
data object Splash : Route
99

10-
@Serializable
11-
data object Intro : Route
12-
1310
@Serializable
1411
data object TermsAgreement : Route
1512

@@ -37,8 +34,18 @@ sealed interface Route {
3734
data class WriteRoutine(
3835
val routineId: String? = null,
3936
val isRegister: Boolean = true,
37+
val isUpdateRoutineFromNowDate: Boolean = true,
4038
) : Route
4139

4240
@Serializable
4341
data object Emotion : Route
42+
43+
@Serializable
44+
data object Withdrawal : Route
45+
46+
@Serializable
47+
data class RoutineList(val selectedDate: String) : Route
48+
49+
@Serializable
50+
data object Guide : Route
4451
}

app/src/main/java/com/threegap/bitnagil/di/data/DataSourceModule.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import com.threegap.bitnagil.data.routine.datasource.RoutineRemoteDataSource
1414
import com.threegap.bitnagil.data.routine.datasourceImpl.RoutineRemoteDataSourceImpl
1515
import com.threegap.bitnagil.data.user.datasource.UserDataSource
1616
import com.threegap.bitnagil.data.user.datasourceImpl.UserDataSourceImpl
17+
import com.threegap.bitnagil.data.version.datasource.VersionDataSource
18+
import com.threegap.bitnagil.data.version.datasourceImpl.VersionDataSourceImpl
1719
import com.threegap.bitnagil.data.writeroutine.datasource.WriteRoutineDataSource
1820
import com.threegap.bitnagil.data.writeroutine.datasourceImpl.WriteRoutineDataSourceImpl
1921
import dagger.Binds
@@ -57,4 +59,8 @@ abstract class DataSourceModule {
5759
@Binds
5860
@Singleton
5961
abstract fun bindRecommendRoutineDataSource(recommendRoutineDataSourceImpl: RecommendRoutineDataSourceImpl): RecommendRoutineDataSource
62+
63+
@Binds
64+
@Singleton
65+
abstract fun bindVersionDataSource(versionDataSourceImpl: VersionDataSourceImpl): VersionDataSource
6066
}

app/src/main/java/com/threegap/bitnagil/di/data/RepositoryModule.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ import com.threegap.bitnagil.data.onboarding.repositoryImpl.OnBoardingRepository
66
import com.threegap.bitnagil.data.recommendroutine.repositoryImpl.RecommendRoutineRepositoryImpl
77
import com.threegap.bitnagil.data.routine.repositoryImpl.RoutineRepositoryImpl
88
import com.threegap.bitnagil.data.user.repositoryImpl.UserRepositoryImpl
9+
import com.threegap.bitnagil.data.version.repositoryImpl.VersionRepositoryImpl
910
import com.threegap.bitnagil.data.writeroutine.repositoryImpl.WriteRoutineRepositoryImpl
1011
import com.threegap.bitnagil.domain.auth.repository.AuthRepository
1112
import com.threegap.bitnagil.domain.emotion.repository.EmotionRepository
1213
import com.threegap.bitnagil.domain.onboarding.repository.OnBoardingRepository
1314
import com.threegap.bitnagil.domain.recommendroutine.repository.RecommendRoutineRepository
1415
import com.threegap.bitnagil.domain.routine.repository.RoutineRepository
1516
import com.threegap.bitnagil.domain.user.repository.UserRepository
17+
import com.threegap.bitnagil.domain.version.repository.VersionRepository
1618
import com.threegap.bitnagil.domain.writeroutine.repository.WriteRoutineRepository
1719
import dagger.Binds
1820
import dagger.Module
@@ -51,4 +53,8 @@ abstract class RepositoryModule {
5153
@Binds
5254
@Singleton
5355
abstract fun bindRecommendRoutineRepository(recommendRoutineRepositoryImpl: RecommendRoutineRepositoryImpl): RecommendRoutineRepository
56+
57+
@Binds
58+
@Singleton
59+
abstract fun bindVersionRepository(versionRepositoryImpl: VersionRepositoryImpl): VersionRepository
5460
}

app/src/main/java/com/threegap/bitnagil/di/data/ServiceModule.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.threegap.bitnagil.data.onboarding.service.OnBoardingService
66
import com.threegap.bitnagil.data.recommendroutine.service.RecommendRoutineService
77
import com.threegap.bitnagil.data.routine.service.RoutineService
88
import com.threegap.bitnagil.data.user.service.UserService
9+
import com.threegap.bitnagil.data.version.service.VersionService
910
import com.threegap.bitnagil.data.writeroutine.service.WriteRoutineService
1011
import com.threegap.bitnagil.di.core.Auth
1112
import com.threegap.bitnagil.di.core.NoneAuth
@@ -60,4 +61,9 @@ object ServiceModule {
6061
@Singleton
6162
fun provideRecommendRoutineService(@Auth retrofit: Retrofit): RecommendRoutineService =
6263
retrofit.create(RecommendRoutineService::class.java)
64+
65+
@Provides
66+
@Singleton
67+
fun provideVersionService(@NoneAuth retrofit: Retrofit): VersionService =
68+
retrofit.create(VersionService::class.java)
6369
}

0 commit comments

Comments
 (0)