Skip to content

Commit 0a86701

Browse files
authored
Merge pull request #116 from Stack-Knowledge/feature/96-bottom-navigation-refactoring
🔀 :: (#116) - role injection to bottom navigation
2 parents 3331a09 + ceab773 commit 0a86701

File tree

7 files changed

+16
-5
lines changed

7 files changed

+16
-5
lines changed

build-logic/convention/src/main/java/com/convention/AndroidFeatureConventionPlugin.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class AndroidFeatureConventionPlugin : Plugin<Project> {
1717
dependencies {
1818
add("implementation", project(":core:common"))
1919
add("implementation", project(":core:model"))
20+
add("implementation", project(":core:data"))
2021
add("implementation", project(":core:ui"))
2122
add("implementation", project(":core:design-system"))
2223
add("implementation", project(":core:domain"))

core/data/src/main/kotlin/com/stackknowledge/repository/auth/AuthRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,7 @@ interface AuthRepository {
1111

1212
suspend fun saveToken(token: LoginResponseModel)
1313

14+
fun getRole(): Flow<String>
15+
1416
fun logout(): Flow<Unit>
1517
}

core/data/src/main/kotlin/com/stackknowledge/repository/auth/AuthRepositoryImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ class AuthRepositoryImpl @Inject constructor(
3232
}
3333
}
3434

35+
override fun getRole(): Flow<String> {
36+
return localDataSource.getAuthorityInfo()
37+
}
38+
3539
override fun logout(): Flow<Unit> {
3640
return authDataSource.logout()
3741
}

core/datastore/src/main/java/com/stackknowledge/datastore/LocalAuthDataSource.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,5 @@ interface LocalAuthDataSource {
3434
// Authority
3535
suspend fun setAuthorityInfo(authority: String)
3636

37-
suspend fun getAuthorityInfo(): Flow<String>
37+
fun getAuthorityInfo(): Flow<String>
3838
}

core/datastore/src/main/java/com/stackknowledge/datastore/LocalAuthDataSourceImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class LocalAuthDataSourceImpl @Inject constructor(
7575
}
7676
}
7777

78-
override suspend fun getAuthorityInfo(): Flow<String> = dataStore.data.map {
78+
override fun getAuthorityInfo(): Flow<String> = dataStore.data.map {
7979
it[AuthPreferenceKey.AUTHORITY] ?: ""
8080
}
8181

feature/main/src/main/java/com/stackknowledge/main/MainPageScreen.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,15 @@ internal fun MainPageRoute(
4141
onNavigate: (Authority, String, Int?) -> Unit,
4242
viewModel: MainViewModel = hiltViewModel()
4343
) {
44-
var role by remember { mutableStateOf(Authority.ROLE_TEACHER) } //로그인 로직 적용후 변경
44+
val role by viewModel.role.collectAsStateWithLifecycle(initialValue = "")
4545
val getMissionUiState by viewModel.getMissionUiState.collectAsStateWithLifecycle()
4646
val getRankingUiState by viewModel.getRankingUiState.collectAsStateWithLifecycle()
4747

4848
MainPageScreen(
49-
role = role,
49+
role = if (role.isNotBlank()) Authority.valueOf(role) else Authority.ROLE_TEACHER,
5050
getMissionUiState = getMissionUiState,
5151
getRankingUiState = getRankingUiState,
52-
onNavigate = { navType, index -> onNavigate(role, navType, index) },
52+
onNavigate = { navType, index -> onNavigate(Authority.valueOf(role), navType, index) },
5353
initMain = {
5454
with(viewModel) {
5555
getMission()

feature/main/src/main/java/com/stackknowledge/main/viewModel/MainViewModel.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import com.example.common.result.Result
77
import com.example.common.result.asResult
88
import com.stackknowledge.main.viewModel.uistate.GetMissionUiState
99
import com.stackknowledge.main.viewModel.uistate.GetRankingUiState
10+
import com.stackknowledge.repository.auth.AuthRepository
1011
import com.stackknowledge.usecase.mission.GetMissionUseCase
1112
import com.stackknowledge.usecase.student.GetStudentPointRankingUseCase
1213
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -20,12 +21,15 @@ import javax.inject.Inject
2021
class MainViewModel @Inject constructor(
2122
private val getMissionUseCase: GetMissionUseCase,
2223
private val getStudentPointRankingUseCase: GetStudentPointRankingUseCase,
24+
private val authRepository: AuthRepository
2325
): ViewModel() {
2426
private val _getMissionUiState = MutableStateFlow<GetMissionUiState>(GetMissionUiState.Loading)
2527
internal val getMissionUiState = _getMissionUiState.asStateFlow()
2628

2729
private val _getRankingUiState = MutableStateFlow<GetRankingUiState>(GetRankingUiState.Loading)
2830
internal val getRankingUiState = _getRankingUiState.asStateFlow()
31+
32+
internal val role = authRepository.getRole()
2933
internal fun getMission() = viewModelScope.launch {
3034
getMissionUseCase()
3135
.asResult()

0 commit comments

Comments
 (0)