From 49fd5e7d2e47c7954043811a7778a0ca6e06b1ec Mon Sep 17 00:00:00 2001 From: gaeun Date: Tue, 23 May 2023 23:25:04 +0900 Subject: [PATCH] =?UTF-8?q?[Add/#9]=206=EC=A3=BC=EC=B0=A8=20=EC=8B=A4?= =?UTF-8?q?=EC=8A=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/android/go/sopt/MultiViewAdapter.kt | 4 +- .../java/org/android/go/sopt/data/User.kt | 12 +++ .../android/go/sopt/myPage/LoginActivity.kt | 77 ++++++++----------- .../android/go/sopt/myPage/SignUpActivity.kt | 1 + .../ContextUtil.kt => util/HideKayBoard.kt} | 2 +- .../org/android/go/sopt/util/ToatMessage.kt | 2 + .../go/sopt/viewModel/LoginViewModel.kt | 48 ++++++++++++ 7 files changed, 98 insertions(+), 48 deletions(-) create mode 100644 app/src/main/java/org/android/go/sopt/data/User.kt rename app/src/main/java/org/android/go/sopt/{myPage/ContextUtil.kt => util/HideKayBoard.kt} (90%) create mode 100644 app/src/main/java/org/android/go/sopt/util/ToatMessage.kt create mode 100644 app/src/main/java/org/android/go/sopt/viewModel/LoginViewModel.kt diff --git a/app/src/main/java/org/android/go/sopt/MultiViewAdapter.kt b/app/src/main/java/org/android/go/sopt/MultiViewAdapter.kt index 5cd01db..fa96b76 100644 --- a/app/src/main/java/org/android/go/sopt/MultiViewAdapter.kt +++ b/app/src/main/java/org/android/go/sopt/MultiViewAdapter.kt @@ -31,8 +31,6 @@ class MultiViewAdapter(context: Context) : private val inflater by lazy { LayoutInflater.from(context) } private lateinit var selectionTracker: SelectionTracker - private val context = context - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return when (viewType) { @@ -114,7 +112,7 @@ class MultiViewAdapter(context: Context) : binding.tvUserName.text = item.first_name + item.last_name binding.tvUserEmail.text = item.email - Glide.with(context).load(item.avatar).into(binding.ivAvatar) + Glide.with(binding.root).load(item.avatar).into(binding.ivAvatar) if (selectionTracker != null && selectionTracker.isSelected(absoluteAdapterPosition.toLong())) { binding.ivSelect.setImageResource(R.drawable.ic_home) diff --git a/app/src/main/java/org/android/go/sopt/data/User.kt b/app/src/main/java/org/android/go/sopt/data/User.kt new file mode 100644 index 0000000..1ff0368 --- /dev/null +++ b/app/src/main/java/org/android/go/sopt/data/User.kt @@ -0,0 +1,12 @@ +package org.android.go.sopt.data + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class User( + val id : String, + val pw : String, + val name : String, + val feature : String +):Parcelable \ No newline at end of file diff --git a/app/src/main/java/org/android/go/sopt/myPage/LoginActivity.kt b/app/src/main/java/org/android/go/sopt/myPage/LoginActivity.kt index 94843c9..c7cb2b3 100644 --- a/app/src/main/java/org/android/go/sopt/myPage/LoginActivity.kt +++ b/app/src/main/java/org/android/go/sopt/myPage/LoginActivity.kt @@ -9,11 +9,14 @@ import android.view.MotionEvent import android.widget.Toast import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts +import androidx.activity.viewModels import org.android.go.sopt.databinding.ActivityLoginBinding import org.android.go.sopt.remote.ServicePool import org.android.go.sopt.remote.model.RequestLogInDto import org.android.go.sopt.remote.model.ResponseLogInDto import org.android.go.sopt.remote.service.LogInService +import org.android.go.sopt.util.hideKeyboard +import org.android.go.sopt.viewModel.LoginViewModel import retrofit2.Call import retrofit2.Response @@ -27,6 +30,7 @@ class LoginActivity : AppCompatActivity() { private val logInService = ServicePool.logInService private lateinit var resultLauncher: ActivityResultLauncher + private val viewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -59,57 +63,42 @@ class LoginActivity : AppCompatActivity() { private fun clickLogin() { binding.btnLogin.setOnClickListener { - logInService.login( - with(binding) { - RequestLogInDto( - etId.text.toString(), - etPassword.text.toString() - ) - } - ).enqueue(object : retrofit2.Callback { - override fun onResponse( - call: Call, - response: Response - ) { - if (response.isSuccessful) { - id = response.body()?.data?.id ?: "" - name = response.body()?.data?.name ?: "" - speciality = response.body()?.data?.skill ?: "" - - val intent = Intent(this@LoginActivity, IntroduceActivity::class.java) - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or FLAG_ACTIVITY_NEW_TASK) - - MySharedPreferences.setUserId(this@LoginActivity, id) - MySharedPreferences.setUserName(this@LoginActivity, name) - MySharedPreferences.setUserSpec(this@LoginActivity, speciality) - - intent.putExtra("name", name) - intent.putExtra("speciality", speciality) - startActivity(intent) - finish() - - response.body()?.message?.let { - Toast.makeText( - this@LoginActivity, - response.body()?.message ?: "로그인 성공", - Toast.LENGTH_SHORT - ).show() - - } - } else { - Toast.makeText(this@LoginActivity, "로그인 실패", Toast.LENGTH_SHORT).show() - } - } - override fun onFailure(call: Call, t: Throwable) { - Toast.makeText(this@LoginActivity, "서버 에러 발생", Toast.LENGTH_SHORT).show() + viewModel.login( + binding.etId.text.toString(), + binding.etPassword.text.toString() + ) + } + + + viewModel.loginResult.observe(this) { loginResult -> + val intent = Intent(this@LoginActivity, IntroduceActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or FLAG_ACTIVITY_NEW_TASK) + + loginResult.data?.let { + MySharedPreferences.setUserId(this@LoginActivity, it.id) } - }) + + + startActivity(intent) + finish() + + loginResult.message?.let { + Toast.makeText( + this@LoginActivity, + loginResult.message ?: "로그인 성공", + Toast.LENGTH_SHORT + ).show() + + } } + + } + private fun clickSignup() { resultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> diff --git a/app/src/main/java/org/android/go/sopt/myPage/SignUpActivity.kt b/app/src/main/java/org/android/go/sopt/myPage/SignUpActivity.kt index 730b488..a2229a7 100644 --- a/app/src/main/java/org/android/go/sopt/myPage/SignUpActivity.kt +++ b/app/src/main/java/org/android/go/sopt/myPage/SignUpActivity.kt @@ -12,6 +12,7 @@ import org.android.go.sopt.RequestSignUpDto import org.android.go.sopt.ResponseSignUpDto import org.android.go.sopt.databinding.ActivitySignupBinding import org.android.go.sopt.remote.ServicePool +import org.android.go.sopt.util.hideKeyboard import retrofit2.Call import retrofit2.Response import android.text.TextWatcher as TextWatcher diff --git a/app/src/main/java/org/android/go/sopt/myPage/ContextUtil.kt b/app/src/main/java/org/android/go/sopt/util/HideKayBoard.kt similarity index 90% rename from app/src/main/java/org/android/go/sopt/myPage/ContextUtil.kt rename to app/src/main/java/org/android/go/sopt/util/HideKayBoard.kt index 3c21a30..64063ae 100644 --- a/app/src/main/java/org/android/go/sopt/myPage/ContextUtil.kt +++ b/app/src/main/java/org/android/go/sopt/util/HideKayBoard.kt @@ -1,4 +1,4 @@ -package org.android.go.sopt.myPage +package org.android.go.sopt.util import android.app.Activity import android.content.Context diff --git a/app/src/main/java/org/android/go/sopt/util/ToatMessage.kt b/app/src/main/java/org/android/go/sopt/util/ToatMessage.kt new file mode 100644 index 0000000..95b9d6a --- /dev/null +++ b/app/src/main/java/org/android/go/sopt/util/ToatMessage.kt @@ -0,0 +1,2 @@ +package org.android.go.sopt.util + diff --git a/app/src/main/java/org/android/go/sopt/viewModel/LoginViewModel.kt b/app/src/main/java/org/android/go/sopt/viewModel/LoginViewModel.kt new file mode 100644 index 0000000..4ec0ebc --- /dev/null +++ b/app/src/main/java/org/android/go/sopt/viewModel/LoginViewModel.kt @@ -0,0 +1,48 @@ +package org.android.go.sopt.viewModel + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import org.android.go.sopt.remote.ServicePool +import org.android.go.sopt.remote.model.RequestLogInDto +import org.android.go.sopt.remote.model.ResponseLogInDto +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response + + +class LoginViewModel:ViewModel() { + val loginResult: MutableLiveData = MutableLiveData() + private val logInService = ServicePool.logInService + + + fun login(id: String, password: String) { + logInService.login( + RequestLogInDto( + id, + password + ) + ).enqueue(object : Callback { + override fun onResponse( + call: Call, + response: Response, + ) { + if (response.isSuccessful) { + loginResult.value = response.body() + + + + } else { + // TODO: 에러 처리 + } + } + + override fun onFailure(call: Call, t: Throwable) { + + } + }) + } + + + + +} \ No newline at end of file