Skip to content

Commit

Permalink
fix : signup viewmodel #7
Browse files Browse the repository at this point in the history
  • Loading branch information
SeonHwan-Kim committed May 27, 2023
1 parent bf60800 commit 4a52710
Show file tree
Hide file tree
Showing 6 changed files with 227 additions and 173 deletions.
17 changes: 15 additions & 2 deletions app/src/main/java/org/android/go/sopt/data/remote/ApiFactory.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ package org.android.go.sopt.data.remote
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import kotlinx.serialization.json.Json
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import org.android.go.sopt.BuildConfig
import org.android.go.sopt.data.remote.interceptor.AuthInterceptor
import org.android.go.sopt.data.remote.service.HomeUserService
import org.android.go.sopt.data.remote.service.KakaoSearchService
import org.android.go.sopt.data.remote.service.SignInService
Expand All @@ -12,6 +15,16 @@ import retrofit2.Retrofit
import retrofit2.create

object ApiFactory {
private val client by lazy {
OkHttpClient.Builder()
.addInterceptor(AuthInterceptor())
.addInterceptor(
HttpLoggingInterceptor().apply {
level =
if (BuildConfig.DEBUG) HttpLoggingInterceptor.Level.BODY else HttpLoggingInterceptor.Level.NONE
},
).build()
}
val retrofit: Retrofit by lazy {
Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
Expand All @@ -34,7 +47,7 @@ object ReqresApiFactory {
inline fun <reified T> create(): T = retrofit.create<T>(T::class.java)
}

object KakaoApiFactory{
object KakaoApiFactory {
val retrofit: Retrofit by lazy {
val json = Json { ignoreUnknownKeys = true }
Retrofit.Builder()
Expand All @@ -51,4 +64,4 @@ object ServicePool {
val signInService = ApiFactory.create<SignInService>()
val getHomeUserService = ReqresApiFactory.create<HomeUserService>()
val kakaoSearchService = KakaoApiFactory.create<KakaoSearchService>()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.android.go.sopt.data.remote.interceptor

import okhttp3.Interceptor
import okhttp3.Response

class AuthInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val originRequest = chain.request()
val newRequest = originRequest.newBuilder()
.header(
"Authorization",
"hiihihiihhihiihihihi",
).build()
return chain.proceed(newRequest)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,14 @@ package org.android.go.sopt.presentation.login

import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.activity.result.ActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.ViewModel
import org.android.go.sopt.R
import org.android.go.sopt.databinding.ActivityLoginBinding
import org.android.go.sopt.presentation.main.MainActivity
import org.android.go.sopt.presentation.signup.SignUpActivity
import org.android.go.sopt.databinding.ActivityLoginBinding
import org.android.go.sopt.SoptApplication
import org.android.go.sopt.data.remote.ServicePool
import org.android.go.sopt.data.remote.model.RequestSignInDto
import org.android.go.sopt.data.remote.model.ResponseSignInDto
import org.android.go.sopt.data.remote.service.SignInService
import org.android.go.sopt.util.*
import retrofit2.Call
import retrofit2.Response


class LoginActivity : AppCompatActivity() {

Expand All @@ -47,23 +35,21 @@ class LoginActivity : AppCompatActivity() {
}

private fun onClickLogin() {
viewModel.onClickLogin()
viewModel.signIn.observe(this){ data ->
when(data){
viewModel.signIn.observe(this) { data ->
when (data) {
200 -> navigateToMainActivity()
else -> showShortToast("id 또는 password가 일치하지 않습니다.")
}
}
}

private fun navigateToMainActivity(){
private fun navigateToMainActivity() {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
showShortToast("로그인 성공")
if(!isFinishing) finish()
if (!isFinishing) finish()
}


private fun onClickSignUp() {
binding.btMainSignUp.setOnClickListener {
val intent = Intent(this, SignUpActivity::class.java)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package org.android.go.sopt.presentation.signup

import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import org.android.go.sopt.data.remote.ServicePool
import org.android.go.sopt.data.remote.model.BaseResponseDto
import org.android.go.sopt.data.remote.model.RequestSignUpDto
import org.android.go.sopt.data.remote.model.ResponseSignUpDto
import retrofit2.Call
import retrofit2.Response

class SIgnUpViewModel : ViewModel() {
val id = MutableLiveData("")
val password = MutableLiveData("")
val name = MutableLiveData("")
val skill = MutableLiveData("")

val isSignUpBtnEnabled = MutableLiveData(false)

private val _signUpResult = MutableLiveData<Int>()
val signUpResult: LiveData<Int> get() = _signUpResult

fun signUp() {
ServicePool.signUpService.signUp(
RequestSignUpDto(
id.value.toString(),
password.value.toString(),
name.value.toString(),
skill.value.toString(),
),
).enqueue(object : retrofit2.Callback<BaseResponseDto<ResponseSignUpDto>> {
override fun onResponse(
call: Call<BaseResponseDto<ResponseSignUpDto>>,
response: Response<BaseResponseDto<ResponseSignUpDto>>,
) {
if (response.isSuccessful) {
_signUpResult.value = response.body()?.status
} else {
_signUpResult.value = response.body()?.status
Log.d("response err", response.message())
}
}

override fun onFailure(call: Call<BaseResponseDto<ResponseSignUpDto>>, t: Throwable) {
Log.d("request err", t.message.toString())
}
})
}
}
Original file line number Diff line number Diff line change
@@ -1,28 +1,19 @@
package org.android.go.sopt.presentation.signup

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.core.widget.doAfterTextChanged
import org.android.go.sopt.R
import org.android.go.sopt.data.local.User
import org.android.go.sopt.databinding.ActivitySignUpBinding
import org.android.go.sopt.SoptApplication
import org.android.go.sopt.data.remote.ServicePool
import org.android.go.sopt.data.remote.model.BaseResponseDto
import org.android.go.sopt.data.remote.model.RequestSignUpDto
import org.android.go.sopt.data.remote.model.ResponseSignUpDto
import org.android.go.sopt.presentation.login.LoginActivity
import org.android.go.sopt.util.hideKeyboard
import org.android.go.sopt.util.showShortToast
import retrofit2.Call
import retrofit2.Response

class SignUpActivity : AppCompatActivity() {

private lateinit var binding: ActivitySignUpBinding
private val viewModel by viewModels<SIgnUpViewModel>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -38,35 +29,17 @@ class SignUpActivity : AppCompatActivity() {
}

private fun onClickComplete() {
with(binding) {
btSignupComplete.setOnClickListener {
ServicePool.signUpService.signUp(
RequestSignUpDto(
etSignupId.text.toString(),
etSignupPassword.text.toString(),
etSignupName.text.toString(),
etSignupSpecialty.text.toString()
)
).enqueue(object : retrofit2.Callback<BaseResponseDto<ResponseSignUpDto>> {
override fun onResponse(
call: Call<BaseResponseDto<ResponseSignUpDto>>, response: Response<BaseResponseDto<ResponseSignUpDto>>
) {
if (response.isSuccessful) {
response.body()?.message?.let { showShortToast(it) }
?: getString(R.string.login_success_sign_up_msg)
val intent = Intent(this@SignUpActivity, LoginActivity::class.java)
startActivity(intent)
if (!isFinishing) finish()
} else {
response.body()?.message?.let { showShortToast(it) }
}
}

override fun onFailure(call: Call<BaseResponseDto<ResponseSignUpDto>>, t: Throwable) {
t.message?.let { showShortToast(it) }
}
viewModel.signUpResult.observe(this) { data ->
when (data) {
200 -> {
val intent = Intent(this, LoginActivity::class.java)
startActivity(intent)
if (!isFinishing) finish()
}

})
else -> {
showShortToast("문제가 발생하였습니다!")
}
}
}
}
Expand All @@ -84,9 +57,9 @@ class SignUpActivity : AppCompatActivity() {
private fun isAllConditionSatisfy(): Boolean {
with(binding) {
return etSignupId.text.length in 6..10 &&
etSignupPassword.text.length in 8..12 &&
etSignupName.text.isNotBlank() &&
etSignupSpecialty.text.isNotBlank()
etSignupPassword.text.length in 8..12 &&
etSignupName.text.isNotBlank() &&
etSignupSpecialty.text.isNotBlank()
}
}
}
}
Loading

0 comments on commit 4a52710

Please sign in to comment.