Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,14 @@ class PreferenceManager @Inject constructor(

fun getSimplePassword(): String = prefs.getString("SIMPLE_PASSWORD", "") ?: ""

fun setJoinStatus(isJoined:Boolean){
prefs.edit().putBoolean("JOIN_STATUS", isJoined).apply()
}

fun getJoinStatus(): Boolean {
return prefs.getBoolean("JOIN_STATUS", false)
}

// 데이터 초기화
fun clear() {
prefs.edit().clear().apply()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@ import androidx.core.view.WindowInsetsControllerCompat
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.stable.scoi.R
import com.stable.scoi.data.local.PreferenceManager
import com.stable.scoi.databinding.ActivityMainBinding
import com.stable.scoi.extension.gone
import com.stable.scoi.extension.visible
import com.stable.scoi.presentation.base.BaseActivity
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import javax.inject.Inject

@AndroidEntryPoint
class MainActivity : BaseActivity<ActivityMainBinding, MainActivityUiState, MainActivityEvent, MainActivityViewModel>(
Expand All @@ -22,6 +24,8 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainActivityUiState, Main
override val viewModel: MainActivityViewModel by viewModels()
private lateinit var navController: NavController

@Inject lateinit var preferenceManager: PreferenceManager

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val controller = WindowInsetsControllerCompat(window, window.decorView)
Expand All @@ -42,7 +46,6 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainActivityUiState, Main
repeatOnStarted {
launch {
viewModel.uiEvent.collect{
// TODO 이벤트 처리
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,21 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.stable.scoi.R
import com.stable.scoi.data.local.PreferenceManager
import com.stable.scoi.databinding.FragmentRegCompleteBinding
import com.stable.scoi.presentation.MainActivity

class JoinCompleteFragment : Fragment() {

private val preferenceManager: PreferenceManager by lazy { PreferenceManager(requireContext()) }
private var _binding: FragmentRegCompleteBinding? = null
private val binding get() = _binding!!

private val viewModel: JoinViewModel by viewModels()


override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View {
Expand All @@ -40,18 +45,14 @@ class JoinCompleteFragment : Fragment() {
}
}

private fun navigateToMain() {
val intent = Intent(requireContext(), MainActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(intent)
}

override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun navigateToPin() {
findNavController().navigate(R.id.action_joinCompleteFragment_to_pinFragment)
preferenceManager.setJoinStatus(true)
findNavController().navigate(R.id.action_joinCompleteFragment_to_homeFragment)
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,15 @@ class JoinViewModel @Inject constructor(
viewModelScope.launch {
authRepository.sendSms(phone)
.onSuccess { response ->
SLOG.D("전송 성공!")
val remainingSeconds = calculateRemainingSeconds(response.expiredAt)
startTimer(remainingSeconds)

updateState { copy(isCodeSendEnabled = true) }
emitEvent(JoinEvent.ShowError("인증번호가 발송되었습니다."))
}
.onFailure { e ->
SLOG.D("전송 실패함 ㅋ")
emitEvent(JoinEvent.ShowError(e.message ?: "전송 실패"))
}
}
Expand Down Expand Up @@ -145,50 +147,50 @@ class JoinViewModel @Inject constructor(
}
}

// fun submitSignUp(exchange: String, apiKey: String, secretKey: String) {
// val currentState = uiState.value
// updateState { copy(isLoading = true) }
//
// viewModelScope.launch {
// try {
// val encryptedSecretKey = EncryptionUtil.encrypt(secretKey)
// val encryptedSimplePassword = EncryptionUtil.encrypt(currentState.simplePassword)
//
// SLOG.D(encryptedSimplePassword.toString())
//
// val newApiKey = ApiKeyInfo(
// exchangeType = exchange,
// publicKey = apiKey,
// secretKey = encryptedSecretKey
// )
//
// val request = SignUpRequest(
// koreanName = currentState.koreanName,
// englishName = currentState.englishName,
// residentNumber = currentState.residentNumber,
// phoneNumber = currentState.phoneNumber,
// simplePassword = encryptedSimplePassword,
// apiKeys = listOf(newApiKey),
// memberType = "INDIVIDUAL",
// isBioRegistered = currentState.isBioRegistered,
// verificationToken = currentState.verificationToken
// )
//
// authRepository.signUp(request)
// .onSuccess {
// preferenceManager.saveSimplePassword(currentState.simplePassword)
// emitEvent(JoinEvent.NavigateToRegDone)
// }
// .onFailure { e ->
// android.util.Log.e("JOIN_DEBUG", "회원가입 실패: ${e.message}")
// emitEvent(JoinEvent.ShowError(e.message ?: "회원가입 실패"))
// }
// } catch (e: Exception) {
// android.util.Log.e("JOIN_DEBUG", "암호화 중 오류 발생: ${e.message}")
// emitEvent(JoinEvent.ShowError("보안 처리 중 오류가 발생했습니다."))
// } finally {
// updateState { copy(isLoading = false) }
// }
// }
// }
fun submitSignUp(exchange: String, apiKey: String, secretKey: String) {
val currentState = uiState.value
updateState { copy(isLoading = true) }

viewModelScope.launch {
try {
val encryptedSecretKey = EncryptionUtil.encrypt(secretKey)
val encryptedSimplePassword = EncryptionUtil.encrypt(currentState.simplePassword)

SLOG.D(encryptedSimplePassword.toString())

val newApiKey = ApiKeyInfo(
exchangeType = exchange,
publicKey = apiKey,
secretKey = encryptedSecretKey
)

val request = SignUpRequest(
koreanName = currentState.koreanName,
englishName = currentState.englishName,
residentNumber = currentState.residentNumber,
phoneNumber = currentState.phoneNumber,
simplePassword = encryptedSimplePassword,
apiKeys = listOf(newApiKey),
memberType = "INDIVIDUAL",
isBioRegistered = currentState.isBioRegistered,
verificationToken = currentState.verificationToken
)

authRepository.signUp(request)
.onSuccess {
preferenceManager.saveSimplePassword(currentState.simplePassword)
emitEvent(JoinEvent.NavigateToRegDone)
}
.onFailure { e ->
android.util.Log.e("JOIN_DEBUG", "회원가입 실패: ${e.message}")
emitEvent(JoinEvent.ShowError(e.message ?: "회원가입 실패"))
}
} catch (e: Exception) {
android.util.Log.e("JOIN_DEBUG", "암호화 중 오류 발생: ${e.message}")
emitEvent(JoinEvent.ShowError("보안 처리 중 오류가 발생했습니다."))
} finally {
updateState { copy(isLoading = false) }
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,8 @@ class KeyFragment : BaseFragment<FragmentKeyBinding, JoinState, JoinEvent, JoinV
"업비트" -> "UPBIT"
else -> ""
}
// viewModel.submitSignUp(exchangeType, binding.apiKeyInputEt.text.toString(), binding.secretKeyInputEt.text.toString())
findNavController().navigate(R.id.action_KeyFragment_to_homeFragment)
viewModel.submitSignUp(exchangeType, binding.apiKeyInputEt.text.toString(), binding.secretKeyInputEt.text.toString())
findNavController().navigate(R.id.action_KeyFragment_to_joinCompleteFragment)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.text.method.PasswordTransformationMethod
import android.view.View
import android.view.WindowManager
import android.widget.EditText
import androidx.core.content.ContextCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.core.widget.doOnTextChanged
Expand Down Expand Up @@ -38,6 +39,8 @@ class LoginFragment : BaseFragment<FragmentLoginPinBinding, LoginState, LoginEve
binding.loginPin1Et, binding.loginPin2Et, binding.loginPin3Et,
binding.loginPin4Et, binding.loginPin5Et, binding.loginPin6Et
)
val white = ContextCompat.getColor(requireActivity(), R.color.white)
requireActivity().findViewById<View>(R.id.main).setBackgroundColor(white)

// pinEditTexts.forEach { editText ->
// editText.setOnFocusChangeListener { _, hasFocus ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class LoginViewModel @Inject constructor(
updateState { this.copy(isLoading = true) }

val savedPhoneNumber = preferenceManager.getPhoneNumber()
val currentToken = preferenceManager.getVerificationToken()
val currentToken = preferenceManager.getVerificationToken() // 원래는 null 값으로 되게끔 한다.

if (savedPhoneNumber.isEmpty()) {
updateState { this.copy(isLoading = false) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,18 @@ import com.stable.scoi.presentation.base.BaseFragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import com.stable.scoi.R
import com.stable.scoi.data.local.PreferenceManager
import com.stable.scoi.databinding.FragmentSplashBinding
import com.stable.scoi.util.SLOG

@AndroidEntryPoint
class SplashFragment : BaseFragment<FragmentSplashBinding, SplashUiState, SplashUiEvent, SplashViewModel>(
FragmentSplashBinding::inflate,
) {
private val preferenceManager: PreferenceManager by lazy { PreferenceManager(requireContext()) }
override val viewModel: SplashViewModel by viewModels()


override fun initView() {
binding.apply {
requireActivity().findViewById<View>(R.id.main).setBackgroundColor(ContextCompat.getColor(requireActivity(), R.color.active))
Expand All @@ -30,9 +33,14 @@ class SplashFragment : BaseFragment<FragmentSplashBinding, SplashUiState, Splash

override fun onAnimationEnd(animation: Animator) {
SLOG.D("하이?")
findNavController().navigate(R.id.action_splash_fragment_to_join_auth_fragment)
// findNavController().navigate(R.id.action_splash_fragment_to_loginFragment)
// findNavController().navigate(R.id.action_splash_fragment_to_joinFragment)
val isRegistered=preferenceManager.getJoinStatus()

if(isRegistered==true){
navigateToLogin()
}
else{
navigateToJoinAuth()
}
}

override fun onAnimationRepeat(animation: Animator) {
Expand Down Expand Up @@ -73,4 +81,10 @@ class SplashFragment : BaseFragment<FragmentSplashBinding, SplashUiState, Splash
private fun navigateToHome() {
findNavController().navigate(R.id.homeFragment)
}
private fun navigateToLogin(){
findNavController().navigate(R.id.action_splashFragment_to_loginFragment)
}
private fun navigateToJoinAuth(){
findNavController().navigate(R.id.action_splash_fragment_to_join_auth_fragment)
}
}
18 changes: 7 additions & 11 deletions app/src/main/res/navigation-v26/main_graph.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
android:id="@+id/action_splash_fragment_to_join_auth_fragment"
app:destination="@id/joinAuthFragment"/>
<action
android:id="@+id/action_splash_fragment_to_loginFragment"
android:id="@+id/action_splashFragment_to_loginFragment"
app:destination="@id/login_pin_fragment"/>
</fragment>

Expand Down Expand Up @@ -258,9 +258,6 @@
android:id="@+id/join_fragment"
android:name="com.stable.scoi.presentation.ui.Auth.JoinFragment"
tools:layout="@layout/fragment_join">
<action
android:id="@+id/action_joinFragment_to_joinAuthFragment"
app:destination="@id/joinAuthFragment" />
<action
android:id="@+id/action_joinFragment_to_loginRegFragment"
app:destination="@id/login_reg_fragment" />
Expand Down Expand Up @@ -319,9 +316,6 @@
<action
android:id="@+id/action_loginFragment_to_re_join_fragment"
app:destination="@id/re_join_auth_fragment"/>
<action
android:id="@+id/action_loginFragment_to_bioFragment"
app:destination="@id/bio_fragment"/>
</fragment>

<fragment
Expand Down Expand Up @@ -491,6 +485,10 @@
<action
android:id="@+id/action_joinCompleteFragment_to_pinFragment"
app:destination="@id/login_pin_fragment" />
<action
android:id="@+id/action_joinCompleteFragment_to_homeFragment"
app:destination="@id/homeFragment"
/>
</fragment>

<fragment
Expand Down Expand Up @@ -536,6 +534,7 @@
app:destination="@id/login_pin_fragment" />
</fragment>


<fragment
android:id="@+id/charge_pw_fragment"
android:name="com.stable.scoi.presentation.ui.charge.chart.ChargePwFragment"
Expand All @@ -546,7 +545,4 @@
app:destination="@id/chargeCompleteFragment"/>
</fragment>




</navigation>
</navigation>
6 changes: 5 additions & 1 deletion app/src/main/res/navigation/main_graph.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
android:id="@+id/action_splash_fragment_to_join_auth_fragment"
app:destination="@id/joinAuthFragment"/>
<action
android:id="@+id/action_splash_fragment_to_loginFragment"
android:id="@+id/action_splashFragment_to_loginFragment"
app:destination="@id/login_pin_fragment"/>
</fragment>

Expand Down Expand Up @@ -485,6 +485,10 @@
<action
android:id="@+id/action_joinCompleteFragment_to_pinFragment"
app:destination="@id/login_pin_fragment" />
<action
android:id="@+id/action_joinCompleteFragment_to_homeFragment"
app:destination="@id/homeFragment"
/>
</fragment>

<fragment
Expand Down