Skip to content

Commit

Permalink
[Add/#9] 6주차 실습
Browse files Browse the repository at this point in the history
  • Loading branch information
gaeun5744 committed May 23, 2023
1 parent 6d1c44c commit 49fd5e7
Show file tree
Hide file tree
Showing 7 changed files with 98 additions and 48 deletions.
4 changes: 1 addition & 3 deletions app/src/main/java/org/android/go/sopt/MultiViewAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ class MultiViewAdapter(context: Context) :

private val inflater by lazy { LayoutInflater.from(context) }
private lateinit var selectionTracker: SelectionTracker<Long>
private val context = context


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return when (viewType) {
Expand Down Expand Up @@ -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)
Expand Down
12 changes: 12 additions & 0 deletions app/src/main/java/org/android/go/sopt/data/User.kt
Original file line number Diff line number Diff line change
@@ -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
77 changes: 33 additions & 44 deletions app/src/main/java/org/android/go/sopt/myPage/LoginActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -27,6 +30,7 @@ class LoginActivity : AppCompatActivity() {
private val logInService = ServicePool.logInService

private lateinit var resultLauncher: ActivityResultLauncher<Intent>
private val viewModel by viewModels<LoginViewModel>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand Down Expand Up @@ -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<ResponseLogInDto> {
override fun onResponse(
call: Call<ResponseLogInDto>,
response: Response<ResponseLogInDto>
) {
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<ResponseLogInDto>, 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 ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.android.go.sopt.myPage
package org.android.go.sopt.util

import android.app.Activity
import android.content.Context
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/org/android/go/sopt/util/ToatMessage.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package org.android.go.sopt.util

48 changes: 48 additions & 0 deletions app/src/main/java/org/android/go/sopt/viewModel/LoginViewModel.kt
Original file line number Diff line number Diff line change
@@ -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<ResponseLogInDto> = MutableLiveData()
private val logInService = ServicePool.logInService


fun login(id: String, password: String) {
logInService.login(
RequestLogInDto(
id,
password
)
).enqueue(object : Callback<ResponseLogInDto> {
override fun onResponse(
call: Call<ResponseLogInDto>,
response: Response<ResponseLogInDto>,
) {
if (response.isSuccessful) {
loginResult.value = response.body()



} else {
// TODO: 에러 처리
}
}

override fun onFailure(call: Call<ResponseLogInDto>, t: Throwable) {

}
})
}




}

0 comments on commit 49fd5e7

Please sign in to comment.