diff --git a/app/src/main/java/com/stable/scoi/data/local/PreferenceManager.kt b/app/src/main/java/com/stable/scoi/data/local/PreferenceManager.kt index 89f8f20..15f0815 100644 --- a/app/src/main/java/com/stable/scoi/data/local/PreferenceManager.kt +++ b/app/src/main/java/com/stable/scoi/data/local/PreferenceManager.kt @@ -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() } diff --git a/app/src/main/java/com/stable/scoi/presentation/MainActivity.kt b/app/src/main/java/com/stable/scoi/presentation/MainActivity.kt index 1e5cc5b..6fcfe7a 100644 --- a/app/src/main/java/com/stable/scoi/presentation/MainActivity.kt +++ b/app/src/main/java/com/stable/scoi/presentation/MainActivity.kt @@ -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( @@ -22,6 +24,8 @@ class MainActivity : BaseActivity + SLOG.D("전송 성공!") val remainingSeconds = calculateRemainingSeconds(response.expiredAt) startTimer(remainingSeconds) @@ -53,6 +54,7 @@ class JoinViewModel @Inject constructor( emitEvent(JoinEvent.ShowError("인증번호가 발송되었습니다.")) } .onFailure { e -> + SLOG.D("전송 실패함 ㅋ") emitEvent(JoinEvent.ShowError(e.message ?: "전송 실패")) } } @@ -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) } + } + } + } } diff --git a/app/src/main/java/com/stable/scoi/presentation/ui/Auth/KeyFragment.kt b/app/src/main/java/com/stable/scoi/presentation/ui/Auth/KeyFragment.kt index 76e93d7..7520d59 100644 --- a/app/src/main/java/com/stable/scoi/presentation/ui/Auth/KeyFragment.kt +++ b/app/src/main/java/com/stable/scoi/presentation/ui/Auth/KeyFragment.kt @@ -78,8 +78,8 @@ class KeyFragment : BaseFragment "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) } } diff --git a/app/src/main/java/com/stable/scoi/presentation/ui/login/LoginFragment.kt b/app/src/main/java/com/stable/scoi/presentation/ui/login/LoginFragment.kt index d956ac9..9f676e1 100644 --- a/app/src/main/java/com/stable/scoi/presentation/ui/login/LoginFragment.kt +++ b/app/src/main/java/com/stable/scoi/presentation/ui/login/LoginFragment.kt @@ -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 @@ -38,6 +39,8 @@ class LoginFragment : BaseFragment(R.id.main).setBackgroundColor(white) // pinEditTexts.forEach { editText -> // editText.setOnFocusChangeListener { _, hasFocus -> diff --git a/app/src/main/java/com/stable/scoi/presentation/ui/login/LoginViewModel.kt b/app/src/main/java/com/stable/scoi/presentation/ui/login/LoginViewModel.kt index b9c73a1..b4b981d 100644 --- a/app/src/main/java/com/stable/scoi/presentation/ui/login/LoginViewModel.kt +++ b/app/src/main/java/com/stable/scoi/presentation/ui/login/LoginViewModel.kt @@ -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) } diff --git a/app/src/main/java/com/stable/scoi/presentation/ui/splash/SplashFragment.kt b/app/src/main/java/com/stable/scoi/presentation/ui/splash/SplashFragment.kt index 15dcf28..9cc18db 100644 --- a/app/src/main/java/com/stable/scoi/presentation/ui/splash/SplashFragment.kt +++ b/app/src/main/java/com/stable/scoi/presentation/ui/splash/SplashFragment.kt @@ -9,6 +9,7 @@ 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 @@ -16,8 +17,10 @@ import com.stable.scoi.util.SLOG class SplashFragment : BaseFragment( FragmentSplashBinding::inflate, ) { + private val preferenceManager: PreferenceManager by lazy { PreferenceManager(requireContext()) } override val viewModel: SplashViewModel by viewModels() + override fun initView() { binding.apply { requireActivity().findViewById(R.id.main).setBackgroundColor(ContextCompat.getColor(requireActivity(), R.color.active)) @@ -30,9 +33,14 @@ class SplashFragment : BaseFragment @@ -258,9 +258,6 @@ android:id="@+id/join_fragment" android:name="com.stable.scoi.presentation.ui.Auth.JoinFragment" tools:layout="@layout/fragment_join"> - @@ -319,9 +316,6 @@ - + + - - - - + \ No newline at end of file diff --git a/app/src/main/res/navigation/main_graph.xml b/app/src/main/res/navigation/main_graph.xml index dfcb4d0..ad0c51a 100644 --- a/app/src/main/res/navigation/main_graph.xml +++ b/app/src/main/res/navigation/main_graph.xml @@ -20,7 +20,7 @@ android:id="@+id/action_splash_fragment_to_join_auth_fragment" app:destination="@id/joinAuthFragment"/> @@ -485,6 +485,10 @@ +