Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix 회원가입 #45

Merged
merged 2 commits into from
Feb 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'com.google.firebase:firebase-firestore-ktx:24.10.2'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


<application
Expand Down
19 changes: 18 additions & 1 deletion app/src/main/java/com/umc/ttoklip/data/api/SignupApi.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,30 @@ package com.umc.ttoklip.data.api

import com.umc.ttoklip.data.model.ResponseBody
import com.umc.ttoklip.data.model.signup.SignupResponse
import com.umc.ttoklip.data.model.signup.SignupRequest
import okhttp3.MultipartBody
import okhttp3.RequestBody
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.Multipart
import retrofit2.http.POST
import retrofit2.http.Part
import retrofit2.http.PartMap
import retrofit2.http.Query

interface SignupApi {

@GET("/api/v1/privacy/check-nickname")
suspend fun nickCheck(@Query("nickname") nickname:String)
: Response<ResponseBody<SignupResponse>>

@Multipart
@POST("/api/v1/privacy/insert")
suspend fun savePrivacy(
@Part profileImage: MultipartBody.Part,
@Part categories:List<MultipartBody.Part>,
@PartMap params:MutableMap<String,RequestBody>
)
:Response<ResponseBody<SignupResponse>>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.umc.ttoklip.data.model.signup

data class SignupRequest(
val street:String,
val nickname:String,
val category:ArrayList<String>,
val profileImage:String,
val independentYear:Int,
val independentMonth:Int
)
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ package com.umc.ttoklip.data.model.signup

data class SignupResponse(
val message:String
)
)
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
package com.umc.ttoklip.data.repository.signup

import com.umc.ttoklip.data.model.login.LoginRequest
import com.umc.ttoklip.data.model.login.LoginResponse
import com.umc.ttoklip.data.model.signup.SignupRequest
import com.umc.ttoklip.data.model.signup.SignupResponse
import com.umc.ttoklip.module.NetworkResult
import okhttp3.MultipartBody
import okhttp3.RequestBody

interface SignupRepository {
suspend fun checkNickname(nick:String): NetworkResult<SignupResponse>
suspend fun savePrivacy(photo: MultipartBody.Part,
info:MutableMap<String, RequestBody>
,cate:List<MultipartBody.Part>)
: NetworkResult<SignupResponse>
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,23 @@ package com.umc.ttoklip.data.repository.signup

import com.umc.ttoklip.data.api.SignupApi
import com.umc.ttoklip.data.model.ResponseBody
import com.umc.ttoklip.data.model.signup.SignupRequest
import com.umc.ttoklip.data.model.signup.SignupResponse
import com.umc.ttoklip.module.NetworkResult
import com.umc.ttoklip.module.handleApi
import okhttp3.MultipartBody
import okhttp3.RequestBody
import retrofit2.http.Part
import javax.inject.Inject

class SignupRepositoryImpl @Inject constructor(
private val api: SignupApi
): SignupRepository {
override suspend fun checkNickname(nick: String): NetworkResult<SignupResponse> {
return handleApi({api.nickCheck(nick)}){response: ResponseBody<SignupResponse> ->response.result}
return handleApi({api.nickCheck(nick)}) {response: ResponseBody<SignupResponse> ->response.result}
}

override suspend fun savePrivacy(photo:MultipartBody.Part,info:MutableMap<String, RequestBody>,cate:List<MultipartBody.Part>): NetworkResult<SignupResponse> {
return handleApi({api.savePrivacy(photo,cate,info)}) {response: ResponseBody<SignupResponse> ->response.result}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.content.Intent
import android.os.Handler
import android.os.Looper
import com.umc.ttoklip.R
import com.umc.ttoklip.TtoklipApplication
import com.umc.ttoklip.databinding.ActivitySplashBinding
import com.umc.ttoklip.presentation.MainActivity
import com.umc.ttoklip.presentation.base.BaseActivity
Expand All @@ -15,10 +16,15 @@ class SplashActivity:BaseActivity<ActivitySplashBinding>(R.layout.activity_splas
handler.postDelayed({
val spf=getSharedPreferences("first", MODE_PRIVATE)
val firstRun=spf.getBoolean("firstRun",true)
val jwt=TtoklipApplication.prefs.getString("jwt","")
val isFirstLogin=TtoklipApplication.prefs.getBoolean("isFirstLogin",true)
if(firstRun){
startActivity(Intent(this, IntroActivity::class.java))
finish()
}else{
}else if(jwt.isNotEmpty()&&!isFirstLogin){
startActivity(Intent(this,MainActivity::class.java))
finish()
} else{
startActivity(Intent(this, LoginActivity::class.java))
finish()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>(R.layout.activity_login
private val viewModel: LoginViewModel by viewModels()

override fun initView() {
loginActivity=this

viewModel.initIsLogin()
binding.loginNaverBtn.setOnClickListener {
val oauthLoginCallback = object : OAuthLoginCallback {
Expand Down Expand Up @@ -80,6 +82,8 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>(R.layout.activity_login
} else if (token != null) {
Log.i("카카오로그인", "카카오톡으로 로그인 성공")
val loginRequest = LoginRequest("${token.accessToken}", "kakao")
//임시 토큰확인용
// Log.i("KAKAO-LOGIN","${token.accessToken}")
viewModel.postLogin(loginRequest)
}
}
Expand All @@ -89,19 +93,24 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>(R.layout.activity_login
}
}

companion object{
var loginActivity:LoginActivity?=null
}

private fun startactivity() {
//회원가입 만들기용 임시
// 회원가입 만들기용 임시
// val intent = Intent(this, SignupActivity::class.java)
// startActivity(intent)
// Log.i("JWT",TtoklipApplication.prefs.getString("jwt",""))

//이쪽이 진짜
if (viewModel.isFirstLogin.value) {
val intent = Intent(this, SignupActivity::class.java)
startActivity(intent)
} else {
startActivity(Intent(this, MainActivity::class.java))
finish()
}
finish()
}

override fun onBackPressed() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class LoginViewModel @Inject constructor(
loginRepository.postLogin(request)
.onSuccess {
TtoklipApplication.prefs.setString("jwt",it.jwtToken)
TtoklipApplication.prefs.setBoolean("isFirstLogin",it.ifFirstLogin)
_isFirstLogin.value=it.ifFirstLogin
_isLogin.value=true
}.onFail {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@ import android.location.Address
import android.location.Geocoder
import android.os.Build
import android.widget.SeekBar
import androidx.activity.viewModels
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.fragment.app.viewModels
import com.naver.maps.geometry.LatLng
import com.naver.maps.map.LocationTrackingMode
import com.naver.maps.map.MapFragment
Expand All @@ -23,12 +25,16 @@ import com.umc.ttoklip.databinding.ActivityLocationBinding
import com.umc.ttoklip.presentation.MainActivity
import com.umc.ttoklip.presentation.base.BaseActivity
import com.umc.ttoklip.presentation.login.LoginActivity
import dagger.hilt.android.AndroidEntryPoint
import java.util.Locale

@AndroidEntryPoint
class LocationActivity :
BaseActivity<ActivityLocationBinding>(R.layout.activity_location),
OnMapReadyCallback {

private val viewModel: SignupViewModel by viewModels()

private lateinit var naverMap: NaverMap
private lateinit var locationSource: FusedLocationSource
private lateinit var uiSetting: UiSettings
Expand All @@ -39,17 +45,17 @@ class LocationActivity :
Manifest.permission.ACCESS_COARSE_LOCATION
)
private lateinit var range: String
private lateinit var circle:CircleOverlay
private lateinit var circle: CircleOverlay

private var locationok:Boolean=false
private var locationok: Boolean = false


override fun initView() {
if (!hasPermission()) {
ActivityCompat.requestPermissions(this, PERMISSIONS, LOCATION_PERMISSION_REQUEST_CODE)
}
initMapView()
circle= CircleOverlay()
circle = CircleOverlay()

range = getString(R.string.range_500m)
binding.locationRangeDescTv.text =
Expand All @@ -69,7 +75,7 @@ class LocationActivity :
} else {
setRange15km()
}
if(locationok) setcircle()
if (locationok) setcircle()
}

override fun onStartTrackingTouch(seekBar: SeekBar?) = Unit
Expand All @@ -86,13 +92,28 @@ class LocationActivity :
setRange15km()
}
}
if(locationok) setcircle()
if (locationok) setcircle()
}
})

binding.locationNextBtn.setOnClickListener {
if (locationok){
startActivity(Intent(this,MainActivity::class.java))
if (locationok) {
val bundle = intent.getBundleExtra("userInfo")
if (bundle != null) {
viewModel.saveUserStreet(address)
viewModel.saveUserInfoAt4(
bundle.getString("nickname")!!,
bundle.getStringArrayList("interest")!!,
bundle.getString("imageUri")!!,
bundle.getInt("independentCareerYear")!!,
bundle.getInt("independentCareerMonth")!!)
}
viewModel.savePrivacy()
startActivity(Intent(this, MainActivity::class.java))
val loginActivity=LoginActivity.loginActivity
loginActivity?.finish()
val signupActivity=SignupActivity.signupActivity
signupActivity?.finish()
finish()
}
}
Expand All @@ -115,19 +136,19 @@ class LocationActivity :
it.latitude,
it.longitude
)
circle.center= LatLng(it.latitude,it.longitude)
locationok=true
circle.center = LatLng(it.latitude, it.longitude)
locationok = true
setcircle()
nextok()
}
}

private fun setcircle(){
if(range=="500m")circle.radius=500.0
else if(range=="1km")circle.radius=1000.0
else circle.radius=1500.0
circle.color=ContextCompat.getColor(this, R.color.yellow_trans30)
circle.map=naverMap
private fun setcircle() {
if (range == "500m") circle.radius = 500.0
else if (range == "1km") circle.radius = 1000.0
else circle.radius = 1500.0
circle.color = ContextCompat.getColor(this, R.color.yellow_trans30)
circle.map = naverMap
}

private fun hasPermission(): Boolean {
Expand All @@ -141,13 +162,13 @@ class LocationActivity :
return true
}

private fun nextok(){
if(locationok){
binding.locationNextBtn.isClickable=true
private fun nextok() {
if (locationok) {
binding.locationNextBtn.isClickable = true
binding.locationNextBtn.setBackgroundResource(R.drawable.rectangle_corner_10_yellow)
binding.locationNextBtn.setTextAppearance(R.style.TextAppearance_App_16sp_700)
}else{
binding.locationNextBtn.isClickable=false
} else {
binding.locationNextBtn.isClickable = false
binding.locationNextBtn.setBackgroundResource(R.drawable.rectangle_corner_10_strok_1_black)
binding.locationNextBtn.setTextAppearance(R.style.TextAppearance_App_16sp_500)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
package com.umc.ttoklip.presentation.signup

import android.view.View
import androidx.fragment.app.Fragment
import androidx.navigation.NavController
import androidx.navigation.Navigation
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.fragment.findNavController
import com.umc.ttoklip.R
import com.umc.ttoklip.databinding.ActivitySignupBinding
import com.umc.ttoklip.presentation.base.BaseActivity
import com.umc.ttoklip.presentation.mypage.InputIndependentCareerDialogFragment
import dagger.hilt.EntryPoint
import com.umc.ttoklip.presentation.login.LoginActivity
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class SignupActivity:BaseActivity<ActivitySignupBinding>(R.layout.activity_signup) {
override fun initView() {
signupActivity=this

val navHostFragment = supportFragmentManager.findFragmentById(R.id.signup_frm)as NavHostFragment
var navController=navHostFragment.findNavController()
binding.signupBackIb.setOnClickListener {
Expand Down Expand Up @@ -49,4 +47,8 @@ class SignupActivity:BaseActivity<ActivitySignupBinding>(R.layout.activity_signu
binding.signupBackIb.visibility= View.INVISIBLE
binding.signupCancelIb.visibility= View.VISIBLE
}

companion object{
var signupActivity: SignupActivity?=null
}
}
Loading