Skip to content

Commit

Permalink
feat : sign up api 연결 #7
Browse files Browse the repository at this point in the history
  • Loading branch information
SeonHwan-Kim committed May 7, 2023
1 parent 5f1783e commit f4d18a8
Show file tree
Hide file tree
Showing 7 changed files with 144 additions and 18 deletions.
23 changes: 23 additions & 0 deletions app/src/main/java/org/android/go/sopt/data/remote/ApiFactory.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
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 org.android.go.sopt.data.remote.service.SignUpService
import retrofit2.Retrofit

object ApiFactory {
val retrofit: Retrofit by lazy{
Retrofit.Builder()
.baseUrl("http://52.78.152.187:8080/")
.addConverterFactory(Json.asConverterFactory("application/json".toMediaType()))
.build()
}

// inline에 대해 알아보기
inline fun <reified T> create(): T = retrofit.create<T>(T::class.java)
}

object ServicePool {
val signUpService = ApiFactory.create<SignUpService>()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.android.go.sopt.data.remote.model

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class RequestSignUpDto(
@SerialName("id")
val id: String,
@SerialName("password")
val password: String,
@SerialName("name")
val name: String,
@SerialName("skill")
val skill: String
)

@Serializable
data class ResponseSignUpDto(
@SerialName("status")
val status: Int,
@SerialName("message")
val message: String,
@SerialName("data")
val data: SignUpData,
){
@Serializable
data class SignUpData(
@SerialName("name")
val name: String,
@SerialName("skill")
val skill: String,
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.android.go.sopt.data.remote.service

import org.android.go.sopt.data.remote.model.RequestSignUpDto
import org.android.go.sopt.data.remote.model.ResponseSignUpDto
import retrofit2.Call
import retrofit2.http.Body
import retrofit2.http.POST

// suspend 함수?
interface SignUpService {
@POST("sign-up")
fun signUp(
@Body
request: RequestSignUpDto,
): Call<ResponseSignUpDto>
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import org.android.go.sopt.R
import org.android.go.sopt.databinding.FragmentGalleryBinding

class GalleryFragment : Fragment() {
Expand All @@ -23,10 +24,14 @@ class GalleryFragment : Fragment() {

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

binding.pagerGallery.adapter = PagerAdapter().apply {
setItemList(listOf(R.drawable.img_jindo, R.drawable.img_beagle, R.drawable.img_golden_retriever))
}
}

override fun onDestroy() {
super.onDestroy()
override fun onDestroyView() {
_binding = null
super.onDestroyView()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,22 @@ import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import org.android.go.sopt.R
import org.android.go.sopt.data.User
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.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 signUpService = ServicePool.signUpService

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand Down Expand Up @@ -46,14 +52,33 @@ class SignUpActivity : AppCompatActivity() {
} else if (user.specialty?.isEmpty() == true) {
showShortToast(getString(R.string.sign_up_specialty_err_msg))
} else {
val intent = Intent(this@SignUpActivity, LoginActivity::class.java)
SoptApplication.prefs.saveUserInformation(
false,
user
)
setResult(RESULT_OK, intent)
// 만약 종료가 되지 않았다면 종료시키기
if (!isFinishing) finish()
signUpService.signUp(
RequestSignUpDto(
etSignupId.text.toString(),
etSignupPassword.text.toString(),
etSignupName.text.toString(),
etSignupSpecialty.text.toString()
)
).enqueue(object : retrofit2.Callback<ResponseSignUpDto> {
override fun onResponse(
call: Call<ResponseSignUpDto>,
response: Response<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<ResponseSignUpDto>, t: Throwable) {
t.message?.let { showShortToast(it) }
}

})
}
}
}
Expand Down
18 changes: 11 additions & 7 deletions app/src/main/res/layout/fragment_gallery.xml
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".presentation.main.gallery.GalleryFragment">

<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="갤러리 뷰" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager_gallery"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>

</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
19 changes: 19 additions & 0 deletions app/src/main/res/layout/item_pager.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?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">

<ImageView
android:id="@+id/iv_pager"
android:layout_width="200dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/img_golden_retriever" />

</androidx.constraintlayout.widget.ConstraintLayout>

0 comments on commit f4d18a8

Please sign in to comment.