Skip to content

Commit

Permalink
feat : viewmodel 사용 #7
Browse files Browse the repository at this point in the history
  • Loading branch information
SeonHwan-Kim committed May 16, 2023
1 parent 24eed56 commit f130edc
Show file tree
Hide file tree
Showing 3 changed files with 157 additions and 112 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ 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.presentation.main.MainActivity
import org.android.go.sopt.presentation.signup.SignUpActivity
Expand All @@ -23,10 +26,11 @@ import retrofit2.Response
class LoginActivity : AppCompatActivity() {

private lateinit var binding: ActivityLoginBinding
private val viewModel by viewModels<LoginViewModel>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityLoginBinding.inflate(layoutInflater)
binding = DataBindingUtil.setContentView(this, R.layout.activity_login)
setContentView(binding.root)

binding.root.setOnClickListener {
Expand All @@ -41,31 +45,10 @@ class LoginActivity : AppCompatActivity() {
private fun onClickLogin() {
with(binding) {
btMainLogin.setOnClickListener {
ServicePool.signInService.signIn(
RequestSignInDto(
etMainId.text.toString(),
etMainPassword.text.toString(),
)
).enqueue(object : retrofit2.Callback<ResponseSignInDto> {
override fun onResponse(
call: Call<ResponseSignInDto>,
response: Response<ResponseSignInDto>
) {
if (response.isSuccessful) {
SoptApplication.prefs.setBoolean(KEY_ISLOGIN, true)
val intent = Intent(this@LoginActivity, MainActivity::class.java)
startActivity(intent)
showShortToast(getString(R.string.login_success_login_msg))
if (!isFinishing) finish()
} else {
response.body()?.message?.let { showShortToast(it) }
}
}

override fun onFailure(call: Call<ResponseSignInDto>, t: Throwable) {
t.message?.let { showShortToast(it) }
}
})
viewModel.signIn()
viewModel.signIn.observe(this@LoginActivity){data ->
showShortToast(data.toString())
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package org.android.go.sopt.presentation.login

import android.content.Intent
import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import org.android.go.sopt.R
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.presentation.main.MainActivity
import org.android.go.sopt.util.showShortToast
import retrofit2.Call
import retrofit2.Response

class LoginViewModel: ViewModel() {
val id = MutableLiveData("")
val password = MutableLiveData("")

private val _signIn = MutableLiveData<ResponseSignInDto>()
val signIn: LiveData<ResponseSignInDto> get() = _signIn

fun signIn(){
ServicePool.signInService.signIn(
RequestSignInDto(
id.value.toString(), password.value.toString()
)
).enqueue(object : retrofit2.Callback<ResponseSignInDto> {
override fun onResponse(
call: Call<ResponseSignInDto>,
response: Response<ResponseSignInDto>
) {
if (response.isSuccessful) {
SoptApplication.prefs.setBoolean(KEY_ISLOGIN, true)
_signIn.value = response.body()
} else {
Log.d("response err", response.body().toString())
}
}

override fun onFailure(call: Call<ResponseSignInDto>, t: Throwable) {
Log.d("errrr", t.message.toString())
}
})
}

companion object{
const val KEY_ISLOGIN = "isLogin"
}
}
182 changes: 96 additions & 86 deletions app/src/main/res/layout/activity_login.xml
Original file line number Diff line number Diff line change
@@ -1,96 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingHorizontal="30dp"
tools:context=".presentation.login.LoginActivity">
<layout>

<TextView
android:id="@+id/tv_main_welcome"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="@string/login_welcome"
android:textColor="@color/black"
android:textSize="25sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<data>

<TextView
android:id="@+id/tv_main_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="@string/id_title"
android:textSize="30sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_main_welcome" />
<variable
name="vm"
type="org.android.go.sopt.presentation.login.LoginViewModel" />
</data>

<EditText
android:id="@+id/et_main_id"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:hint="@string/id_hint"
android:imeOptions="actionNext"
android:inputType="text"
android:padding="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_main_id" />
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingHorizontal="30dp"
tools:context=".presentation.login.LoginActivity">

<TextView
android:id="@+id/tv_main_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="@string/password_title"
android:textSize="30sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/et_main_id" />
<TextView
android:id="@+id/tv_main_welcome"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="@string/login_welcome"
android:textColor="@color/black"
android:textSize="25sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<EditText
android:id="@+id/et_main_password"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:hint="@string/password_hint"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:padding="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_main_password" />
<TextView
android:id="@+id/tv_main_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="@string/id_title"
android:textSize="30sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_main_welcome" />

<Button
android:id="@+id/bt_main_login"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:padding="10dp"
android:text="@string/login_btn"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/et_main_password" />
<EditText
android:id="@+id/et_main_id"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:hint="@string/id_hint"
android:imeOptions="actionNext"
android:inputType="text"
android:padding="10dp"
android:text="@={vm.id}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_main_id" />

<Button
android:id="@+id/bt_main_sign_up"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:text="@string/sign_up_btn"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/bt_main_login" />
<TextView
android:id="@+id/tv_main_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="@string/password_title"
android:textSize="30sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/et_main_id" />

<EditText
android:id="@+id/et_main_password"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:hint="@string/password_hint"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:padding="10dp"
android:text="@={vm.password}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_main_password" />

</androidx.constraintlayout.widget.ConstraintLayout>
<Button
android:id="@+id/bt_main_login"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:padding="10dp"
android:text="@string/login_btn"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/et_main_password" />

<Button
android:id="@+id/bt_main_sign_up"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:text="@string/sign_up_btn"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/bt_main_login" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

0 comments on commit f130edc

Please sign in to comment.