Skip to content

๐Ÿ”€ :: (#34) Google OAuth ๊ตฌํ˜„ #115

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

Merged
merged 94 commits into from
Jul 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
b8c9663
:sparkles: :: add auth data
yeongun130 May 13, 2024
df63498
:memo: :: add version
yeongun130 May 13, 2024
96ecaac
:memo: :: add auth navigation
yeongun130 May 13, 2024
f75771e
:memo: :: add permission
yeongun130 May 13, 2024
580f341
:sparkles: :: add auth DataStore
yeongun130 May 13, 2024
ba18632
:memo: :: add onClick
yeongun130 May 13, 2024
4978d30
:memo: :: add string check role
yeongun130 May 13, 2024
afb9742
:sparkles: :: add auth usecase
yeongun130 May 13, 2024
54734be
:sparkles: :: add exception
yeongun130 May 13, 2024
221cd41
:sparkles: :: add auth model
yeongun130 May 13, 2024
a08084b
:sparkles: :: add auth network
yeongun130 May 13, 2024
593b478
:sparkles: :: add login
yeongun130 May 13, 2024
6225c34
:memo: :: add hilt ์–ด๋…ธํ…Œ์ด์…˜
yeongun130 May 14, 2024
28e3934
:recycler: :: scope ์ˆ˜์ •
yeongun130 May 14, 2024
74d669b
:recycle: :: modify url scope
yeongun130 May 15, 2024
818ebc1
:memo: :: add common module
yeongun130 Jun 24, 2024
5f968cb
:memo: :: modify intent filtter
yeongun130 Jun 24, 2024
927c907
:memo: :: modify files
yeongun130 Jun 24, 2024
85a5da6
:fire: :: delete import
yeongun130 Jun 24, 2024
0bce90f
:memo: :: add role check
yeongun130 Jun 26, 2024
a7248c0
:memo: :: add common module
yeongun130 Jun 26, 2024
bb69cd2
:memo: :: login ์š”์ฒญ ๋ฐฉ์‹ ๋ณ€๊ฒฝ
yeongun130 Jun 26, 2024
88b33e7
:lipstick: :: add button onclick
yeongun130 Jun 26, 2024
cbaced3
:memo: :: add strings
yeongun130 Jun 26, 2024
50d1bc2
:listick: :: publishing roleCheckScreen
yeongun130 Jun 26, 2024
d02723f
:memo: :: modify function name
yeongun130 Jun 26, 2024
e9bb30b
:sparkle: :: add user role check
yeongun130 Jun 26, 2024
6e42435
:sparkle: :: google oauth
yeongun130 Jun 26, 2024
39d7155
:bug: :: Fix Conflict
Chaejongin12 Jun 27, 2024
0bd77db
:twisted_rightwards_arrows: :: Stash Commit
Chaejongin12 Jun 27, 2024
00902b2
๐Ÿ”ฅ:: FeatureConvention data, dataStore ์˜์กด์„ฑ ์‚ญ
Chaejongin12 Jul 1, 2024
b4061e2
๐Ÿ”ฅ:: Kotlin์ด ์•„๋‹Œ Java Build Package์—์„œ Error๋ฅผ ์•ผ๊ธฐํ•˜๋˜ ํŒŒ์ผ๋“ค ์ „๋ถ€ ์‚ญ์ œ
Chaejongin12 Jul 1, 2024
58f1ed5
๐Ÿ”ฅ:: feature:login build.gradle.kts BuildConfig getํ•จ์ˆ˜ ์‚ญ
Chaejongin12 Jul 1, 2024
d02ba12
๐Ÿ”ฅ:: LoginRequest ์‚ญ์ œ
Chaejongin12 Jul 1, 2024
3e471bc
โœจ:: BuildConfig Hilt์— ๋“ฑ๋กํ•˜์—ฌ ์„ ์–ธํ•ด ์‚ฌ์šฉ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•˜
Chaejongin12 Jul 1, 2024
e848151
โœจ:: Local Auth์ž‘์—…
Chaejongin12 Jul 1, 2024
da55bcf
:bug: :: ksp -> implementation์œผ๋กœ ksp์—๋Ÿฌ fix
Chaejongin12 Jul 1, 2024
17ed1be
:bug: :: Conflict Fix
Chaejongin12 Jul 10, 2024
5956027
โœจ:: google-services.json ์ถ”๊ฐ€
Chaejongin12 Jul 11, 2024
9329a1f
โœจ:: LoginResponse ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ LoginUiState ์ถ”๊ฐ€
Chaejongin12 Jul 11, 2024
4dff910
โœจ:: LoginResponseModel ์ƒ์„ฑ
Chaejongin12 Jul 11, 2024
23c740a
โœจ:: LoginResponseMapper ์ƒ์„ฑ
Chaejongin12 Jul 11, 2024
3c4222f
โœจ:: LoginResponse Moshi ์ง๋ ฌํ™” ์ถ”๊ฐ€
Chaejongin12 Jul 11, 2024
7230590
โœจ:: LoginRequestModel ์ƒ์„ฑ
Chaejongin12 Jul 11, 2024
22ff254
โœจ:: LoginRequestMapper ์ƒ์„ฑ
Chaejongin12 Jul 11, 2024
cc2db79
โœจ:: MainActivity GoogleSignIn ํ•จ์ˆ˜ ์ถ”๊ฐ€ ๋ฐ app ๋ฆฌํŒจํ‚ค์ง•
Chaejongin12 Jul 11, 2024
e202f41
โœจ:: app ๋‚ด๋ถ€ file ๋ฆฌํŒจํ‚ค์ง•
Chaejongin12 Jul 11, 2024
4f57712
โœจ:: LoginRequest ์ƒ์„ฑ
Chaejongin12 Jul 11, 2024
7e1b911
๐Ÿ”ฅ:: ์ค‘๋ณต๋œ enum ๊ด€๋ฆฌ ํŒจํ‚ค์ง€ ์‚ญ์ œ
Chaejongin12 Jul 11, 2024
8ced411
๐Ÿ”ฅ:: sessions ์‚ญ์ œ
Chaejongin12 Jul 11, 2024
2014057
๐Ÿ”ฅ:: LoginActivity ์‚ญ์ œ
Chaejongin12 Jul 11, 2024
fe05c84
๐Ÿ”ฅ:: ๊ตฌ๋ฒ„์ „ MainActivity ์‚ญ์ œ
Chaejongin12 Jul 11, 2024
391d22c
๐Ÿ”ฅ:: ๊ตฌ๋ฒ„์ „ MainActivity ์‚ญ์ œ
Chaejongin12 Jul 11, 2024
6190fac
๐Ÿ”ฅ:: ๊ตฌ๋ฒ„์ „ TopLevelDestination ์‚ญ์ œ
Chaejongin12 Jul 11, 2024
64f4ae5
๐Ÿ›:: conflict ์—๋Ÿฌ ํ•ด๊ฒฐ
Chaejongin12 Jul 11, 2024
f04ddc3
โ™ป๏ธ:: ์ค‘๋ณต Authority ์‚ญ์ œ์— ๋”ฐ๋ฅธ import ๋ณ€๊ฒฝ
Chaejongin12 Jul 11, 2024
f176c2c
โ™ป๏ธ:: ์ค‘๋ณต Authority ์‚ญ์ œ์— ๋”ฐ๋ฅธ import ๋ณ€๊ฒฝ
Chaejongin12 Jul 11, 2024
b4ca573
โ™ป๏ธ:: SaveTokenUseCase ํŒŒ๋ผ๋ฏธํ„ฐ LoginResponseModel๋กœ ํƒ€์ž… ๋ณ€๊ฒฝ
Chaejongin12 Jul 11, 2024
8e75021
โ™ป๏ธ:: LoginTeacherUseCase ํŒŒ๋ผ๋ฏธํ„ฐ, ๋ฆฌํ„ด Model๋กœ ํƒ€์ž… ๋ณ€๊ฒฝ
Chaejongin12 Jul 11, 2024
7bfe154
โ™ป๏ธ:: LoginStudentUseCase ํŒŒ๋ผ๋ฏธํ„ฐ, ๋ฆฌํ„ด Model๋กœ ํƒ€์ž… ๋ณ€๊ฒฝ
Chaejongin12 Jul 11, 2024
25d52a4
โ™ป๏ธ:: LoginNavigation ๋„ค์ด๋ฐ ๋ฐ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋™์ž‘ ๋กœ์ง ์ˆ˜์ •
Chaejongin12 Jul 11, 2024
f6f244b
โ™ป๏ธ:: AuthRepository ํŒŒ๋ผ๋ฏธํ„ฐ, ๋ฆฌํ„ด dto ์ ์šฉ
Chaejongin12 Jul 11, 2024
cada931
โ™ป๏ธ:: AuthRepository ํŒŒ๋ผ๋ฏธํ„ฐ, ๋ฆฌํ„ด dto ์ ์šฉ
Chaejongin12 Jul 11, 2024
3033230
โ™ป๏ธ:: ViewModel Login ๊ด€๋ จ ํ•จ์ˆ˜ app๋ชจ๋“ˆ ๋‹จ ์ ‘๊ทผ์„ ์œ„ํ•ด ์ ‘๊ทผ์ œ์–ด ํ•ด์ œ ๋ฐ UiState ์ 
Chaejongin12 Jul 11, 2024
94ec5ef
๐Ÿ”ฅ:: MissionResponse ๋ถˆํ•„์š”ํ•œ import์‚ญ์ œ
Chaejongin12 Jul 11, 2024
65329ef
๐Ÿ”ฅ:: CreateMissionScreen ๋ถˆํ•„์š”ํ•œ import์‚ญ์ œ
Chaejongin12 Jul 11, 2024
2365323
โ™ป๏ธ:: ViewModel ํ•„๋“œ ์ ‘๊ทผ์ œ์–ด ๋ฐ UiState ์ ์šฉ
Chaejongin12 Jul 11, 2024
c7c847d
โ™ป๏ธ:: AndroidManifest ํŒŒ์ผ Google API Console๊ณผ์˜ ํŒจํ‚ค์ง€ ์ด๋ฆ„ ๋™๊ธฐํ™” ๋ฐ LoginActiviโ€ฆ
Chaejongin12 Jul 11, 2024
ae095d5
โ™ป๏ธ:: AndroidApplicationConventionPlugin ํŒŒ์ผ Google API Console๊ณผ์˜ ํŒจํ‚ค์ง€ ์ดโ€ฆ
Chaejongin12 Jul 11, 2024
590b259
๐Ÿ”ฅ:: build.gradles.kts ๋ถˆํ•„์š”ํ•œ import๋ฌธ ์‚ญ์ œ
Chaejongin12 Jul 11, 2024
5f914ee
โ™ป๏ธ:: google service version ์—…๊ทธ๋ ˆ์ด๋“œ
Chaejongin12 Jul 11, 2024
6ed2051
โ™ป๏ธ:: ์ง๋ ฌํ™” ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด KotlinJsonAdapterFactory ์ถ”๊ฐ€
Chaejongin12 Jul 11, 2024
fa67ca4
โ™ป๏ธ:: RoleCheckScreen isTeacher, isStudent Boolean ๊ฐ’ ์„ค์ • ๋กœ์ง์œผ๋กœ ๋ณ€
Chaejongin12 Jul 11, 2024
88436f3
โ™ป๏ธ:: RoleCheckScreen isTeacher, isStudent Boolean ๊ฐ’ ์„ค์ • ๋กœ์ง์œผ๋กœ ๋ณ€๊ฒฝ
Chaejongin12 Jul 11, 2024
8287603
โœจ:: LoginScreen GoogleOAuth ๊ธฐ๋Šฅ ๊ตฌ
Chaejongin12 Jul 11, 2024
5363b18
๏ธ๐Ÿ”ฅ:: AuthDataSourceImpl ๊ฐœํ–‰ ์‚ญ์ œ
Chaejongin12 Jul 11, 2024
19c9053
โœจ:: app๋‹จ build.gradle.kts google service dependencies ์ถ”๊ฐ€
Chaejongin12 Jul 11, 2024
432e390
โœจ:: core/data๋‹จ build.gradle.kts moshi ์ถ”๊ฐ€
Chaejongin12 Jul 11, 2024
e228c08
โœจ:: core/network๋‹จ build.gradle.kts moshi ์ถ”๊ฐ€
Chaejongin12 Jul 11, 2024
afcea9c
:bug: :: conflict fix
Chaejongin12 Jul 11, 2024
154dd92
โ™ป๏ธ:: Event, errorHandling common๋ชจ๋“ˆ๋กœ import
Chaejongin12 Jul 11, 2024
cde5fbd
๐Ÿ”ฅ:: MainActivity ๋กœ๊ทธ ์‚ญ
Chaejongin12 Jul 11, 2024
72de909
๐Ÿ”ฅ:: AuthViewModel Login ํ•จ์ˆ˜ ๋กœ๊ทธ ์‚ญ์ œ
Chaejongin12 Jul 11, 2024
fdbd9c2
โ™ป๏ธ:: network gradle getApiKey ํ•จ์ˆ˜ null ์ฒดํฌ
Chaejongin12 Jul 11, 2024
4bad5d7
๐Ÿ”ฅ:: AndroidManifest DEFAULT, BROWSABLE category ํƒœ๊ทธ ์‚ญ์ œ
Chaejongin12 Jul 12, 2024
b8d98fa
๐Ÿ”ฅ:: GoogleButtonClickEvent Log ์‚ญ
Chaejongin12 Jul 12, 2024
d6f85c6
๐Ÿ”ฅ:: GoogleLogin Success Log ์‚ญ์ œ
Chaejongin12 Jul 12, 2024
dc5c094
โ™ป๏ธ:: LogoutUseCase kotlin ์ ‘๊ทผ ์ถ”๊ฐ€
Chaejongin12 Jul 12, 2024
398a183
โ™ป๏ธ:: LogoutUseCase kotlin ์ ‘๊ทผ ์ถ”๊ฐ€
Chaejongin12 Jul 12, 2024
3d179ab
โ™ป๏ธ:: LoginResponseMapper this ์ ‘๊ทผ ์ถ”๊ฐ€
Chaejongin12 Jul 12, 2024
328c0b2
โ™ป๏ธ:: LoginResponse ๋งˆ์ง€๋ง‰ ํ•„๋“œ , ์ถ”๊ฐ€
Chaejongin12 Jul 12, 2024
0fa43ff
โ™ป๏ธ:: LoginRequest ๋งˆ์ง€๋ง‰ ํ•„๋“œ , ์ถ”๊ฐ€
Chaejongin12 Jul 12, 2024
8800de7
โ™ป๏ธ:: Authority ๋งˆ์ง€๋ง‰ ํ•„๋“œ , ์ถ”๊ฐ€
Chaejongin12 Jul 12, 2024
2585147
โ™ป๏ธ:: MainActivity Toast ์ƒ์„ฑ ์‹œ makeToast ํ•จ์ˆ˜ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์˜์กด์„ฑ ์ถ”๊ฐ€ ๋ฐ makeToast์ 
Chaejongin12 Jul 12, 2024
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
3 changes: 3 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ dependencies {
implementation(project(":core:design-system"))
implementation(project(":core:ui"))
implementation(project(":core:model"))
implementation(project(":core:common"))

implementation(project(":feature:login"))
implementation(project(":feature:main"))
Expand All @@ -27,5 +28,7 @@ dependencies {
implementation(project(":feature:score-mission"))
implementation(project(":feature:shop"))
implementation(libs.junit)
implementation(libs.google.services)
implementation(libs.play.services.auth)
androidTestImplementation(libs.androidx.test.ext)
}
29 changes: 29 additions & 0 deletions app/google-services.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "322299804217",
"project_id": "stack-knowledge-v2",
"storage_bucket": "stack-knowledge-v2.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:322299804217:android:e15d7c6ad9b47cc65e2be8",
"android_client_info": {
"package_name": "com.kdn.stack_knowledge"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyBxMjD7Mg9vzfBiuZVBzyR12Ubr-uEZ_hQ"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}
8 changes: 5 additions & 3 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<uses-permission android:name="android.permission.INTERNET" />

<application
android:name="com.stackknowledge.StackKnowledgeApplication"
android:name="com.kdn.stack_knowledge.StackKnowledgeApplication"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
Expand All @@ -15,8 +15,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.StackKnowledge"
tools:targetApi="31">

<activity
android:name="com.stackknowledge.MainActivity"
android:name="com.kdn.stack_knowledge.MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.StackKnowledge">
Expand All @@ -26,6 +27,7 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

</application>

</manifest>
</manifest>
121 changes: 121 additions & 0 deletions app/src/main/java/com/kdn/stack_knowledge/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
package com.kdn.stack_knowledge

import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.setContent
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
import androidx.compose.runtime.CompositionLocalProvider
import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
import com.example.common.toast.makeToast
import com.google.android.gms.auth.api.signin.GoogleSignIn
import com.google.android.gms.auth.api.signin.GoogleSignInAccount
import com.google.android.gms.auth.api.signin.GoogleSignInClient
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
import com.google.android.gms.common.api.ApiException
import com.google.android.gms.common.api.Scope
import com.google.android.gms.tasks.Task
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
import com.stackknowledge.login.viewmodel.AuthViewModel
import com.kdn.stack_knowledge.ui.StackKnowledgeApp
import com.stackknowledge.user.R
import dagger.hilt.android.AndroidEntryPoint
import remote.request.auth.LoginRequestModel
import javax.inject.Inject
import javax.inject.Named

@AndroidEntryPoint
class MainActivity : ComponentActivity() {

@Inject
@Named("GOOGLE_CLIENT_ID")
lateinit var googleClientId: String

@Inject
@Named("SCOPE")
lateinit var scope: String

private val viewModel by viewModels<AuthViewModel>()

private val googleSignInClient: GoogleSignInClient by lazy { getGoogleClient() }

private val googleSignInLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
val task: Task<GoogleSignInAccount> =
GoogleSignIn.getSignedInAccountFromIntent(result.data)
handleGoogleSignInResult(task)
}

private var doubleBackToExitPressedOnce = false

private var backPressedTimestamp = 0L

private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
controlTheStackWhenBackPressed()
}
}

@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
this.onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
setContent {
CompositionLocalProvider(LocalViewModelStoreOwner provides this) {
StackKnowledgeAndroidTheme { _, _ ->
StackKnowledgeApp(
windowSizeClass = calculateWindowSizeClass(this@MainActivity),
onLoginButtonClick = {
googleSocialLogin()
}
)
}
}
}
}

private fun controlTheStackWhenBackPressed() {
val currentTime = System.currentTimeMillis()
if (doubleBackToExitPressedOnce && currentTime - backPressedTimestamp <= 2000) {
finishAffinity()
} else {
doubleBackToExitPressedOnce = true
backPressedTimestamp = currentTime
makeToast(this, getString(R.string.close_app), Toast.LENGTH_SHORT)
}
}

private fun googleSocialLogin() {
googleSignInClient.signOut().addOnCompleteListener {
val signInIntent = googleSignInClient.signInIntent
googleSignInLauncher.launch(signInIntent)
}
}

private fun getGoogleClient(): GoogleSignInClient {
val googleSignInOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(Scope(scope))
.requestServerAuthCode(googleClientId)
.requestEmail()
.build()

return GoogleSignIn.getClient(this@MainActivity, googleSignInOptions)
}

private fun handleGoogleSignInResult(task: Task<GoogleSignInAccount>) {
val account = task.getResult(ApiException::class.java)

with(viewModel) {
if (isStudent.value) {
loginStudent(body = LoginRequestModel(code = account.serverAuthCode.toString()))
} else {
loginTeacher(body = LoginRequestModel(code = account.serverAuthCode.toString()))
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.stackknowledge
package com.kdn.stack_knowledge

import android.app.Application
import dagger.hilt.android.HiltAndroidApp

@HiltAndroidApp
class StackKnowledgeApplication : Application()
class StackKnowledgeApplication : Application()
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.stackknowledge.navigation
package com.kdn.stack_knowledge.navigation

import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
Expand All @@ -8,10 +8,9 @@ import com.stackknowledge.login.navigation.loginScreen
import com.stackknowledge.login.navigation.navigateToLogin
import com.stackknowledge.login.navigation.roleCheckRoute
import com.stackknowledge.login.navigation.roleCheckScreen
import com.stackknowledge.main.navigation.mainPageRoute
import com.stackknowledge.main.navigation.mainScreen
import com.stackknowledge.main.navigation.navigateToMain
import com.stackknowledge.navigation.util.bottomNavigationNavigate
import com.kdn.stack_knowledge.navigation.util.bottomNavigationNavigate
import com.stackknowledge.ranking.navigation.navigateToRanking
import com.stackknowledge.ranking.navigation.navigateToTeacherRanking
import com.stackknowledge.ranking.navigation.rankingScreen
Expand All @@ -24,21 +23,20 @@ import com.stackknowledge.shop.navigation.shopRoute
import com.stackknowledge.shop.navigation.shopScreen
import com.stackknowledge.shop.navigation.teacherShopRoute
import com.stackknowledge.shop.navigation.teacherShopScreen
import com.stackknowledge.ui.StackKnowledgeAppState
import com.stackkowledge.mission.navigation.createMissionRoute
import com.kdn.stack_knowledge.ui.StackKnowledgeAppState
import com.stackkowledge.mission.navigation.createMissionScreen
import com.stackkowledge.mission.navigation.entireMissionRoute
import com.stackkowledge.mission.navigation.entireMissionScreen
import com.stackkowledge.mission.navigation.navigateToEntireMission
import com.stackkowledge.mission.navigation.navigateToResolveMission
import com.stackkowledge.mission.navigation.resolveMissionScreen
import enumdatatype.Authority
import enumdata.Authority

@Composable
fun StackKnowledgeNavHost(
appState: StackKnowledgeAppState,
modifier: Modifier = Modifier,
startDestination: String = roleCheckRoute,
modifier: Modifier = Modifier,
onLoginButtonClick: () -> Unit = {},
) {
val navController = appState.navController

Expand All @@ -47,9 +45,12 @@ fun StackKnowledgeNavHost(
startDestination = startDestination,
modifier = modifier
) {
loginScreen()
loginScreen(
onSuccess = navController::navigateToMain,
onLoginButtonClick = onLoginButtonClick
)
roleCheckScreen(
onRoleClick = navController::navigateToLogin
onRoleButtonClick = navController::navigateToLogin
)
mainScreen(
onNavigate = { role, navType, index ->
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.kdn.stack_knowledge.navigation

enum class TopLevelDestination {
ROLE_CHECK,
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.stackknowledge.navigation.util
package com.kdn.stack_knowledge.navigation.util

import androidx.navigation.NavController
import androidx.navigation.NavGraph.Companion.findStartDestination
Expand All @@ -12,7 +12,7 @@ import com.stackknowledge.shop.navigation.navigateToShop
import com.stackknowledge.shop.navigation.navigateToTeacherShop
import com.stackkowledge.mission.navigation.navigateToCreateMission
import com.stackkowledge.mission.navigation.navigateToEntireMission
import enumdatatype.Authority
import enumdata.Authority

fun bottomNavigationNavigate(
role: Authority,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
package com.stackknowledge.ui
package com.kdn.stack_knowledge.ui

import androidx.compose.material3.windowsizeclass.WindowSizeClass
import androidx.compose.runtime.Composable
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
import com.stackknowledge.navigation.StackKnowledgeNavHost
import com.kdn.stack_knowledge.navigation.StackKnowledgeNavHost

@Composable
fun StackKnowledgeApp(
windowSizeClass: WindowSizeClass,
appState: StackKnowledgeAppState = rememberStackKnowledgeAppState(
windowSizeClass = windowSizeClass
),
onLoginButtonClick: () -> Unit = {},
) {
StackKnowledgeAndroidTheme { _, _ ->
StackKnowledgeNavHost(
appState = appState,
//startDestination = "" <- auth ์ž‘์—…ํ›„์— ์ถ”๊ฐ€
)
StackKnowledgeNavHost(
appState = appState,
onLoginButtonClick = onLoginButtonClick
)
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package com.stackknowledge.ui
package com.kdn.stack_knowledge.ui

import androidx.compose.material3.windowsizeclass.WindowSizeClass
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.navigation.NavController
import androidx.navigation.NavDestination
import androidx.navigation.NavHostController
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import com.stackknowledge.navigation.TopLevelDestination
import com.kdn.stack_knowledge.navigation.TopLevelDestination
import com.stackknowledge.login.navigation.roleCheckRoute
import kotlinx.coroutines.CoroutineScope

@Composable
Expand Down Expand Up @@ -45,7 +45,7 @@ class StackKnowledgeAppState(

val currentTopLevelDestination: TopLevelDestination?
@Composable get() = when(currentDestination?.route) {
// loginRoute ์ž‘์„ฑ
roleCheckRoute -> TopLevelDestination.ROLE_CHECK
else -> null
}

Expand Down
Loading
Loading