Skip to content
Open
Show file tree
Hide file tree
Changes from 3 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
9 changes: 1 addition & 8 deletions feature/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,14 @@
android:supportsRtl="true"
android:theme="@style/Theme.NOWSOPTAndroid">
<activity
android:name="com.sopt.now.feature.auth.LoginActivity"
android:name="com.sopt.now.feature.MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.sopt.now.feature.auth.SignUpActivity"
android:exported="false"
android:windowSoftInputMode="adjustResize" />
<activity
android:name="com.sopt.now.feature.MainActivity"
android:exported="false" />
</application>

</manifest>
10 changes: 10 additions & 0 deletions feature/src/main/java/com/sopt/now/feature/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.sopt.now.feature

import android.view.MotionEvent
import android.view.View
import android.view.inputmethod.InputMethodManager
import androidx.activity.OnBackPressedCallback
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
Expand Down Expand Up @@ -33,6 +35,7 @@ class MainActivity : BindingActivity<ActivityMainBinding>(R.layout.activity_main
(supportFragmentManager.findFragmentById(R.id.fcv_home) as NavHostFragment)
.findNavController()
binding.bnvHome.setupWithNavController(navController)
navController.navigate(R.id.fragment_login)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MainActivity에서 자동로그인 여부를 판단하고 로그인 화면으로 넘기는게 나을 것 같습니다!
지금은 무조건 로그인으로 넘어가고 로그인에서 자동로그인 여부를 판단하는데 불필요한 작업인것 같아서요!

로그인에서 옵저빙 하는 코드를 그대로 메인액티비티로 옮기시면 될것 같습니다!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스택 관리에 조금 더 효율적일 것 같아서요!

doubleBackPressedOnHomeTab(navController)
setBottomNavigationVisibility(navController)
}
Expand Down Expand Up @@ -82,4 +85,11 @@ class MainActivity : BindingActivity<ActivityMainBinding>(R.layout.activity_main
snackBar(binding.root, getString(R.string.main_back_once_pressed_exit))
}
}

override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
val imm: InputMethodManager =
getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(currentFocus?.windowToken, 0)
return super.dispatchTouchEvent(ev)
}
}
101 changes: 0 additions & 101 deletions feature/src/main/java/com/sopt/now/feature/auth/LoginActivity.kt

This file was deleted.

70 changes: 70 additions & 0 deletions feature/src/main/java/com/sopt/now/feature/auth/LoginFragment.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.sopt.now.feature.auth

import androidx.fragment.app.viewModels
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import com.sopt.now.core.base.BindingFragment
import com.sopt.now.core.util.fragment.snackBar
import com.sopt.now.core.util.fragment.toast
import com.sopt.now.core.view.UiState
import com.sopt.now.feature.R
import com.sopt.now.feature.databinding.FragmentLoginBinding
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach

@AndroidEntryPoint
class LoginFragment : BindingFragment<FragmentLoginBinding>(R.layout.fragment_login) {
private val viewModel by viewModels<LoginViewModel>()

override fun initView() {
initAutoLoginStateObserve()
initBtnClickListener()
initSignUpStateObserve()
}

private fun initAutoLoginStateObserve() {
viewModel.autoLoginState.flowWithLifecycle(lifecycle).onEach { isAutoLogin ->
when (isAutoLogin) {
true -> findNavController().navigate(R.id.fragment_home)
false -> return@onEach
}
}.launchIn(lifecycleScope)
}

private fun initBtnClickListener() {
initLoginBtnClickListener()
initSignUpBtnClickListener()
}

private fun initLoginBtnClickListener() = with(binding) {
btnLogin.setOnClickListener {
viewModel.setLogin(
id = etLoginId.text.toString(),
pwd = etLoginPwd.text.toString()
)
}
}

private fun initSignUpBtnClickListener() {
binding.tvLoginSignUp.setOnClickListener {
findNavController().navigate(R.id.fragment_sign_up)
}
}

private fun initSignUpStateObserve() {
viewModel.loginState.flowWithLifecycle(lifecycle).onEach { state ->
when (state) {
is UiState.Success -> {
toast(getString(R.string.login_completed, getString(R.string.login)))
viewModel.saveCheckLoginSharedPreference(true)
findNavController().navigate(R.id.fragment_home)
}

is UiState.Failure -> snackBar(binding.root, state.errorMessage)
else -> Unit
}
}.launchIn(lifecycleScope)
}
}
Original file line number Diff line number Diff line change
@@ -1,25 +1,22 @@
package com.sopt.now.feature.auth

import android.content.Intent
import android.view.MotionEvent
import android.view.inputmethod.InputMethodManager
import androidx.activity.viewModels
import androidx.fragment.app.viewModels
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import com.sopt.now.core.base.BindingActivity
import com.sopt.now.core.util.context.snackBar
import com.sopt.now.core.util.context.toast
import androidx.navigation.fragment.findNavController
import com.sopt.now.core.base.BindingFragment
import com.sopt.now.core.util.fragment.snackBar
import com.sopt.now.core.util.fragment.toast
import com.sopt.now.core.view.UiState
import com.sopt.now.feature.R
import com.sopt.now.feature.databinding.ActivitySignUpBinding
import com.sopt.now.feature.databinding.FragmentSignUpBinding
import com.sopt.now.feature.model.User
import com.sopt.now.feature.util.KeyStorage
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach

@AndroidEntryPoint
class SignUpActivity : BindingActivity<ActivitySignUpBinding>(R.layout.activity_sign_up) {
class SignUpFragment : BindingFragment<FragmentSignUpBinding>(R.layout.fragment_sign_up) {
private val viewModel by viewModels<SignUpViewModel>()

override fun initView() {
Expand Down Expand Up @@ -50,7 +47,7 @@ class SignUpActivity : BindingActivity<ActivitySignUpBinding>(R.layout.activity_
is UiState.Success -> {
toast(getString(R.string.login_completed, getString(R.string.sign_up)))
viewModel.saveUserInfoSharedPreference(state.data.toUserEntity())
navigateToLoginActivity(state.data)
findNavController().navigate(R.id.fragment_login)
}

is UiState.Failure -> {
Expand All @@ -62,19 +59,4 @@ class SignUpActivity : BindingActivity<ActivitySignUpBinding>(R.layout.activity_
}.launchIn(lifecycleScope)
}

private fun navigateToLoginActivity(userInputData: User) {
Intent().apply {
putExtra(KeyStorage.USER_INPUT, userInputData)
}.also {
setResult(RESULT_OK, it)
finish()
}
}

override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
val imm: InputMethodManager =
getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(currentFocus?.windowToken, 0)
return super.dispatchTouchEvent(ev)
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package com.sopt.now.feature.mypage

import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.sopt.now.core.base.BindingFragment
import com.sopt.now.core.util.fragment.toast
import com.sopt.now.core.util.intent.navigateTo
import com.sopt.now.feature.R
import com.sopt.now.feature.auth.LoginActivity
import com.sopt.now.feature.databinding.FragmentMyPageBinding
import dagger.hilt.android.AndroidEntryPoint

Expand All @@ -26,7 +25,7 @@ class MyPageFragment : BindingFragment<FragmentMyPageBinding>(R.layout.fragment_
binding.tvMainSignOut.setOnClickListener {
viewModel.updateCheckLoginState(false)
toast(getString(R.string.login_completed, getString(R.string.main_logout_under_bar)))
navigateTo<LoginActivity>(requireContext())
findNavController().navigate(R.id.fragment_login)
}
}

Expand All @@ -39,7 +38,7 @@ class MyPageFragment : BindingFragment<FragmentMyPageBinding>(R.layout.fragment_
getString(R.string.main_clear_user_under_bar)
)
)
navigateTo<LoginActivity>(requireContext())
findNavController().navigate(R.id.fragment_login)
}
}

Expand Down
10 changes: 10 additions & 0 deletions feature/src/main/res/navigation/nav_graph.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,14 @@
android:name="com.sopt.now.feature.home.HomeDetailFragment"
android:label="HomeDetailFragment"
tools:layout="@layout/fragment_my_page" />
<fragment
android:id="@+id/fragment_login"
android:name="com.sopt.now.feature.auth.LoginFragment"
android:label="LoginFragment"
tools:layout="@layout/fragment_login" />
<fragment
android:id="@+id/fragment_sign_up"
android:name="com.sopt.now.feature.auth.SignUpFragment"
android:label="SignUpFragment"
tools:layout="@layout/fragment_sign_up" />
</navigation>