diff --git a/29th_first_semina/app/build.gradle b/29th_first_semina/app/build.gradle index 211b7b2..a83babc 100644 --- a/29th_first_semina/app/build.gradle +++ b/29th_first_semina/app/build.gradle @@ -38,6 +38,9 @@ android { dependencies { + implementation "com.squareup.retrofit2:retrofit:2.9.0" + implementation "com.squareup.retrofit2:converter-gson:2.9.0" + implementation "com.google.code.gson:gson:2.8.6" implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" diff --git a/29th_first_semina/app/src/main/AndroidManifest.xml b/29th_first_semina/app/src/main/AndroidManifest.xml index 09ee285..c8f1704 100644 --- a/29th_first_semina/app/src/main/AndroidManifest.xml +++ b/29th_first_semina/app/src/main/AndroidManifest.xml @@ -5,20 +5,14 @@ - - - - - - - - + @@ -28,7 +22,7 @@ - + diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignInActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignInActivity.kt deleted file mode 100644 index fd1f25e..0000000 --- a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignInActivity.kt +++ /dev/null @@ -1,61 +0,0 @@ -package com.example.a29th_first_semina.ui.view.sigin - -import android.content.Intent -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle -import android.widget.Toast -import com.example.a29th_first_semina.databinding.ActivitySigninBinding -import com.example.a29th_first_semina.ui.view.home.HomeActivity - -class SignInActivity : AppCompatActivity() { - private lateinit var binding: ActivitySigninBinding - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = ActivitySigninBinding.inflate(layoutInflater) - setContentView(binding.root) - initButtonClickEvent() - - } - - private fun initButtonClickEvent() { - - clickLoginEvent() - clickSignUpEvent() - } - - private fun moveHomeActivity() { - val homeIntent = Intent(this, HomeActivity::class.java) - startActivity(homeIntent) - } - - private fun moveSignUpActivity() { - val signupIntent = Intent(this, SignUpActivity::class.java) - startActivity(signupIntent) - - } - - private fun clickLoginEvent() { - - with(binding) { - btnLogin.setOnClickListener { - val userId = etId.text - val userPassword= etPwd.text - if (userId.isEmpty() || userPassword.isEmpty()) { - Toast.makeText(this@SignInActivity, "로그인 실패", Toast.LENGTH_SHORT).show() - } else { - moveHomeActivity() - } - - } - - } - - } - - private fun clickSignUpEvent() { - binding.tvSignup.setOnClickListener { - moveSignUpActivity() - } - - } -} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignUpActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignUpActivity.kt deleted file mode 100644 index 199b107..0000000 --- a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignUpActivity.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.example.a29th_first_semina.ui.view.sigin - -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle -import android.widget.Toast -import com.example.a29th_first_semina.databinding.ActivitySignUpBinding - -class SignUpActivity : AppCompatActivity() { - private lateinit var binding: ActivitySignUpBinding - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = ActivitySignUpBinding.inflate(layoutInflater) - setContentView(binding.root) - initButtonClick() - } - - private fun initButtonClick() { - clickSignUpEvent() - } - - private fun clickSignUpEvent() { - - binding.apply { - val userName = etName.text - val userId = etId.text - val userPwd = etPwd.text - - btnSignup.setOnClickListener { - if (userName.isEmpty() || userId.isEmpty() || userPwd.isEmpty() ){ - Toast.makeText(this@SignUpActivity, "입력되지 않은 정보가 있습니다", Toast.LENGTH_SHORT) - .show() - } - else { - finish() - } - } - } - - - } -} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetLoginData.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetLoginData.kt new file mode 100644 index 0000000..1c21f47 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetLoginData.kt @@ -0,0 +1,9 @@ +package com.example.a29th_first_semina.ui.view.sigin.data + +import com.google.gson.annotations.SerializedName + +data class RequsetLoginData( + @SerializedName("email") + val email : String, + val password : String, +) diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetSignUpdata.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetSignUpdata.kt new file mode 100644 index 0000000..8eb3dec --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetSignUpdata.kt @@ -0,0 +1,8 @@ +package com.example.a29th_first_semina.ui.view.sigin.data + +data class RequsetSignUpdata( + val email : String, + val name : String, + val password : String, + +) diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseLoginData.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseLoginData.kt new file mode 100644 index 0000000..bced1c6 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseLoginData.kt @@ -0,0 +1,15 @@ +package com.example.a29th_first_semina.ui.view.sigin.data + +data class ResponseLoginData( + val status : Int, + val success : Boolean, + val message : String, + val data : Data +) { + + data class Data( + val id: Int, + val name: String, + val email: String + ) +} diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseSignUpData.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseSignUpData.kt new file mode 100644 index 0000000..f8b1388 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseSignUpData.kt @@ -0,0 +1,17 @@ +package com.example.a29th_first_semina.ui.view.sigin.data + +data class ResponseSignUpData( + + val status : Int, + val success : Boolean, + val message : String, + val data : Data +) { + + data class Data( + val id: Int, + val name: String, + val email: String + + ) +} diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/Service.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/Service.kt new file mode 100644 index 0000000..462e1b6 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/Service.kt @@ -0,0 +1,24 @@ +package com.example.a29th_first_semina.ui.view.sigin.di + +import android.telecom.Call +import com.example.a29th_first_semina.ui.view.sigin.data.RequsetLoginData +import com.example.a29th_first_semina.ui.view.sigin.data.RequsetSignUpdata +import com.example.a29th_first_semina.ui.view.sigin.data.ResponseLoginData +import com.example.a29th_first_semina.ui.view.sigin.data.ResponseSignUpData +import retrofit2.http.Body +import retrofit2.http.Headers +import retrofit2.http.POST + +interface Service { + @Headers("Content-Type:application/json") + @POST("user/login") + fun postLogin( + @Body body : RequsetLoginData + ) : retrofit2.Call + + + @POST("user/signup") + fun postSignup( + @Body body : RequsetSignUpdata + ) : retrofit2.Call +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/ServiceCreater.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/ServiceCreater.kt new file mode 100644 index 0000000..aca30ac --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/ServiceCreater.kt @@ -0,0 +1,18 @@ +package com.example.a29th_first_semina.ui.view.sigin.di + +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory + +object ServiceCreater { + + private const val BASE_URL = "https://asia-northeast3-we-sopt-29.cloudfunctions.net/api/" + + private val retrofit : Retrofit = Retrofit.Builder() + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .build() + + val service : Service = retrofit.create(Service::class.java) + + +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignInActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignInActivity.kt new file mode 100644 index 0000000..2e413e8 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignInActivity.kt @@ -0,0 +1,101 @@ +package com.example.a29th_first_semina.ui.view.sigin.view + +import android.content.Intent +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.util.Log +import android.widget.Toast +import com.example.a29th_first_semina.databinding.ActivitySigninBinding +import com.example.a29th_first_semina.ui.view.home.HomeActivity +import com.example.a29th_first_semina.ui.view.sigin.di.ServiceCreater +import com.example.a29th_first_semina.ui.view.sigin.data.RequsetLoginData +import com.example.a29th_first_semina.ui.view.sigin.data.ResponseLoginData +import retrofit2.Callback +import retrofit2.Response + +class SignInActivity : AppCompatActivity() { + private lateinit var binding: ActivitySigninBinding + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivitySigninBinding.inflate(layoutInflater) + setContentView(binding.root) + initButtonClickEvent() + + } + + private fun initButtonClickEvent() { + + clickLoginEvent() + clickSignUpEvent() + } + + private fun moveHomeActivity() { + val homeIntent = Intent(this, HomeActivity::class.java) + startActivity(homeIntent) + } + + private fun moveSignUpActivity() { + val signupIntent = Intent(this, SignUpActivity::class.java) + startActivity(signupIntent) + + } + + private fun clickLoginEvent() { + + with(binding) { + btnLogin.setOnClickListener { + val userId = etId.text + val userPassword= etPwd.text + if (userId.isEmpty() || userPassword.isEmpty()) { + Toast.makeText(this@SignInActivity, "아이디/비번 둘 다 입력해라", Toast.LENGTH_SHORT).show() + } else { + initNetwork() + } + + } + + } + + } + + private fun clickSignUpEvent() { + binding.tvSignup.setOnClickListener { + moveSignUpActivity() + } + + } + + private fun initNetwork(){ + val requsetLoginData = RequsetLoginData( + email = binding.etId.text.toString(), + password = binding.etPwd.text.toString() + ) + + val call : retrofit2.Call = ServiceCreater.service.postLogin(requsetLoginData) + + call.enqueue(object : Callback{ + override fun onResponse( + call: retrofit2.Call, + response: Response + ) { + if(response.isSuccessful){ + val data = response.body()?.data + moveHomeActivity() + Log.d("서버통신 상태",response.body()?.status.toString()) + } + else { + Toast.makeText( + this@SignInActivity, + response.body()?.status.toString(), + Toast.LENGTH_SHORT + ).show() + Log.d("서버통신 상태", response.body()?.status.toString()) + } + } + + override fun onFailure(call: retrofit2.Call, t: Throwable) { + Log.d("로그인통신 실패","실패임") + } + }) + } +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignUpActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignUpActivity.kt new file mode 100644 index 0000000..43010ca --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignUpActivity.kt @@ -0,0 +1,81 @@ +package com.example.a29th_first_semina.ui.view.sigin.view + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.util.Log +import android.widget.Toast +import com.example.a29th_first_semina.databinding.ActivitySignUpBinding +import com.example.a29th_first_semina.ui.view.sigin.di.ServiceCreater +import com.example.a29th_first_semina.ui.view.sigin.data.RequsetSignUpdata +import com.example.a29th_first_semina.ui.view.sigin.data.ResponseSignUpData +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response + +class SignUpActivity : AppCompatActivity() { + private lateinit var binding: ActivitySignUpBinding + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivitySignUpBinding.inflate(layoutInflater) + setContentView(binding.root) + initButtonClick() + } + + private fun initButtonClick() { + clickSignUpEvent() + } + + private fun clickSignUpEvent() { + + binding.apply { + val userName = etName.text + val userId = etId.text + val userPwd = etPwd.text + + btnSignup.setOnClickListener { + if (userName.isEmpty() || userId.isEmpty() || userPwd.isEmpty() ){ + Toast.makeText(this@SignUpActivity, "입력되지 않은 정보가 있습니다", Toast.LENGTH_SHORT) + .show() + } + else { + initNetwork() + } + } + } + + + } + + private fun initNetwork() { + val requsetSignupData = RequsetSignUpdata( + email = binding.etId.text.toString(), + password = binding.etPwd.toString(), + name = binding.etName.toString() + ) + + val call : Call = ServiceCreater.service.postSignup(requsetSignupData) + + call.enqueue(object : Callback{ + override fun onResponse( + call: Call, + response: Response + ) { + if(response.isSuccessful){ + val data = response.body()?.data + Log.d("서버통신 상태", response.body()?.status.toString()) + finish() + } + + else{ + Log.d("서버통신 상태", response.body()?.status.toString()) + } + } + + override fun onFailure(call: Call, t: Throwable) { + Log.d("서버통신 상태", "실패") + } + }) + + + } +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/res/layout/activity_sign_up.xml b/29th_first_semina/app/src/main/res/layout/activity_sign_up.xml index f39715a..a33cdcb 100644 --- a/29th_first_semina/app/src/main/res/layout/activity_sign_up.xml +++ b/29th_first_semina/app/src/main/res/layout/activity_sign_up.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" - tools:context=".ui.view.sigin.SignUpActivity"> + tools:context=".ui.view.sigin.view.SignUpActivity"> + tools:context=".ui.view.sigin.view.SignInActivity">