Skip to content

Commit

Permalink
[FEAT/#25] 회원 탈퇴 기능 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
b1urrrr committed Feb 2, 2023
1 parent 7139897 commit 758e5d9
Show file tree
Hide file tree
Showing 13 changed files with 262 additions and 147 deletions.
29 changes: 15 additions & 14 deletions app/src/main/java/kr/co/sujungvillage/CommDetailActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -143,22 +143,22 @@ class CommDetailActivity : AppCompatActivity() {

binding.textTitle.text = response.body()?.title
binding.textCalDate.text = "${
response.body()?.regDate?.subSequence(
0,
4
)
response.body()?.regDate?.subSequence(
0,
4
)
}/${
response.body()?.regDate?.subSequence(
5,
7
)
response.body()?.regDate?.subSequence(
5,
7
)
}/${
response.body()?.regDate?.subSequence(
8,
10
)
response.body()?.regDate?.subSequence(
8,
10
)
} ${
response.body()?.regDate?.subSequence(11, 13)
response.body()?.regDate?.subSequence(11, 13)
}:${response.body()?.regDate?.subSequence(14, 16)}"
binding.textContent.text = response.body()?.content
// 관리자 마크
Expand All @@ -167,7 +167,8 @@ class CommDetailActivity : AppCompatActivity() {
if (postWriterId >= 99990000) {
binding.textAdmin.visibility = View.VISIBLE
}
} catch (e: NumberFormatException) { }
} catch (e: NumberFormatException) {
}

// 글 작성자 id 와 studentNum이 같으면 삭제 버튼 보이게
if (studentNum == postWriterId.toString()) {
Expand Down
6 changes: 5 additions & 1 deletion app/src/main/java/kr/co/sujungvillage/QnADetailActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,11 @@ class QnADetailActivity : AppCompatActivity() {
Log.d("MY_QUESTION_DELETE", "내 질문 삭제 성공")
Log.d("MY_QUESTION_DELETE", "response : " + response.body())

Toast.makeText(this@QnADetailActivity, "삭제되었습니다.", Toast.LENGTH_SHORT)
Toast.makeText(
this@QnADetailActivity,
"삭제되었습니다.",
Toast.LENGTH_SHORT
)
.show()
finish()
}
Expand Down
171 changes: 98 additions & 73 deletions app/src/main/java/kr/co/sujungvillage/SignUpActivity.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package kr.co.sujungvillage

import android.content.Context
import android.content.res.AssetManager
import android.graphics.Color
import android.os.Bundle
import android.text.Editable
Expand All @@ -24,7 +23,6 @@ import retrofit2.Callback
import retrofit2.Response
import java.io.BufferedReader
import java.io.IOException
import java.io.InputStream
import java.io.InputStreamReader

class SignUpActivity : AppCompatActivity() {
Expand All @@ -44,9 +42,9 @@ class SignUpActivity : AppCompatActivity() {
var number3 = ""
var dormitory = ""
var address = ""
var agreement=false
var agreement1=false
var agreement2=false
var agreement = false
var agreement1 = false
var agreement2 = false
// 키보드 내리기
binding.signUpLayout.setOnClickListener { hideKeyboard() }
binding.linearSignUp.setOnClickListener { hideKeyboard() }
Expand Down Expand Up @@ -200,11 +198,11 @@ class SignUpActivity : AppCompatActivity() {
override fun onNothingSelected(p0: AdapterView<*>?) {
}
}
//이용약관
binding.textAgreement1Content.text=getAssetsTextString(this,"agreement1")
binding.textAgreement2Content.text=getAssetsTextString(this,"agreement2")
binding.textAgreement1Content.movementMethod= ScrollingMovementMethod()
binding.textAgreement2Content.movementMethod= ScrollingMovementMethod()
// 이용약관
binding.textAgreement1Content.text = getAssetsTextString(this, "agreement1")
binding.textAgreement2Content.text = getAssetsTextString(this, "agreement2")
binding.textAgreement1Content.movementMethod = ScrollingMovementMethod()
binding.textAgreement2Content.movementMethod = ScrollingMovementMethod()
binding.textAgreement1Content.setOnTouchListener { view, motionEvent ->
binding.scroll.requestDisallowInterceptTouchEvent(true)
return@setOnTouchListener false
Expand All @@ -215,51 +213,55 @@ class SignUpActivity : AppCompatActivity() {
}

binding.checkboxAgreement.setOnClickListener {
if(binding.checkboxAgreement.isChecked){
changeAgreement12(binding.checkboxAgreement1,true)
changeAgreement12(binding.checkboxAgreement2,true)
changeAgreement(binding.checkboxAgreement,true)
}
else{
changeAgreement12(binding.checkboxAgreement1,false)
changeAgreement12(binding.checkboxAgreement2,false)
changeAgreement(binding.checkboxAgreement,false)
if (binding.checkboxAgreement.isChecked) {
changeAgreement12(binding.checkboxAgreement1, true)
changeAgreement12(binding.checkboxAgreement2, true)
changeAgreement(binding.checkboxAgreement, true)
} else {
changeAgreement12(binding.checkboxAgreement1, false)
changeAgreement12(binding.checkboxAgreement2, false)
changeAgreement(binding.checkboxAgreement, false)
}
}
binding.checkboxAgreement1.setOnClickListener{
changeAgreement(binding.checkboxAgreement,binding.checkboxAgreement1.isChecked&&binding.checkboxAgreement2.isChecked)
if(binding.checkboxAgreement1.isChecked)
changeAgreement12(binding.checkboxAgreement1,true)
else
changeAgreement12(binding.checkboxAgreement1,false)
binding.checkboxAgreement1.setOnClickListener {
changeAgreement(
binding.checkboxAgreement,
binding.checkboxAgreement1.isChecked && binding.checkboxAgreement2.isChecked
)
if (binding.checkboxAgreement1.isChecked) {
changeAgreement12(binding.checkboxAgreement1, true)
} else {
changeAgreement12(binding.checkboxAgreement1, false)
}
}
binding.checkboxAgreement2.setOnClickListener{
changeAgreement(binding.checkboxAgreement,binding.checkboxAgreement1.isChecked&&binding.checkboxAgreement2.isChecked)
if(binding.checkboxAgreement2.isChecked)
changeAgreement12(binding.checkboxAgreement2,true)
else
changeAgreement12(binding.checkboxAgreement2,false)
binding.checkboxAgreement2.setOnClickListener {
changeAgreement(
binding.checkboxAgreement,
binding.checkboxAgreement1.isChecked && binding.checkboxAgreement2.isChecked
)
if (binding.checkboxAgreement2.isChecked) {
changeAgreement12(binding.checkboxAgreement2, true)
} else {
changeAgreement12(binding.checkboxAgreement2, false)
}
}


binding.btnAgreement1Detail.setOnClickListener{
if(agreement1){
binding.textAgreement1Content.visibility=View.GONE
agreement1=false
}
else{
binding.textAgreement1Content.visibility=View.VISIBLE
agreement1=true
binding.btnAgreement1Detail.setOnClickListener {
if (agreement1) {
binding.textAgreement1Content.visibility = View.GONE
agreement1 = false
} else {
binding.textAgreement1Content.visibility = View.VISIBLE
agreement1 = true
}
}
binding.btnAgreement2Detail.setOnClickListener{
if(agreement2){
binding.textAgreement2Content.visibility=View.GONE
agreement2=false
}
else{
binding.textAgreement2Content.visibility=View.VISIBLE
agreement2=true
binding.btnAgreement2Detail.setOnClickListener {
if (agreement2) {
binding.textAgreement2Content.visibility = View.GONE
agreement2 = false
} else {
binding.textAgreement2Content.visibility = View.VISIBLE
agreement2 = true
}
}
// 회원가입 버튼
Expand All @@ -270,79 +272,102 @@ class SignUpActivity : AppCompatActivity() {
number3 = binding.editNumber3.text.toString().trim()
number = number1 + number2 + number3
address = binding.editAddress.text.toString().trim()
agreement=binding.checkboxAgreement.isChecked
agreement = binding.checkboxAgreement.isChecked
if (id_overlap_check == 1) {
if (binding.textPasswordCheckResult.visibility.toString() != "0") {
if (password != "" && name != "" && number1 != "" && number2 != "" && number3 != "" && address != "") {
if(agreement){
val signUpInfo = SignUpDTO(id, password, name, dormitory, address, number)
if (agreement) {
val signUpInfo =
SignUpDTO(id, password, name, dormitory, address, number)
RetrofitBuilder.signupApi.signUp(signUpInfo)
.enqueue(object : Callback<Void> {
override fun onResponse(
call: Call<Void>,
response: Response<Void>
) {
Log.d("SIGN_UP", response.body().toString())
Toast.makeText(this@SignUpActivity,"회원가입이 성공적으로 완료되었습니다.",Toast.LENGTH_SHORT).show()
Toast.makeText(
this@SignUpActivity,
"회원가입이 성공적으로 완료되었습니다.",
Toast.LENGTH_SHORT
).show()
finish()
}

override fun onFailure(call: Call<Void>, t: Throwable) {
Log.e("SIGN_UP", t.message.toString())
}
})
}else{
} else {
Log.d("SIGN_UP", "필수 이용약관을 모두 동의해주세요.")
Toast.makeText(this@SignUpActivity,"필수 이용약관을 모두 동의해주세요.",Toast.LENGTH_SHORT).show()
Toast.makeText(
this@SignUpActivity,
"필수 이용약관을 모두 동의해주세요.",
Toast.LENGTH_SHORT
).show()
}
} else {
Log.d("SIGN_UP", "모든 칸을 작성해주세요.")
Toast.makeText(this@SignUpActivity,"모든 칸을 작성해주세요.",Toast.LENGTH_SHORT).show()
Toast.makeText(this@SignUpActivity, "모든 칸을 작성해주세요.", Toast.LENGTH_SHORT)
.show()
}
} else {
Log.d("SIGN_UP", "비밀번호를 확인해주세요.")
Toast.makeText(this@SignUpActivity,"비밀번호를 확인해주세요.",Toast.LENGTH_SHORT).show()
Toast.makeText(this@SignUpActivity, "비밀번호를 확인해주세요.", Toast.LENGTH_SHORT).show()
}
} else {
Log.d("SIGN_UP", "id를 확인해주세요.")
Toast.makeText(this@SignUpActivity,"id를 확인해주세요.",Toast.LENGTH_SHORT).show()
Toast.makeText(this@SignUpActivity, "id를 확인해주세요.", Toast.LENGTH_SHORT).show()
}
}
}
//이용약관, 개인정보처리방침 txt 파일 읽어오기
fun getAssetsTextString(mContext: Context, fileName:String):String{
val termsString=StringBuilder()
val reader:BufferedReader

// 이용약관, 개인정보처리방침 txt 파일 읽어오기
fun getAssetsTextString(mContext: Context, fileName: String): String {
val termsString = StringBuilder()
val reader: BufferedReader

try {
reader= BufferedReader(
reader = BufferedReader(
InputStreamReader(mContext.resources.assets.open("$fileName.txt"))
)
var str:String?
while(reader.readLine().also { str=it }!=null){
var str: String?
while (reader.readLine().also { str = it } != null) {
termsString.append(str)
termsString.append('\n')//줄변경
termsString.append('\n') // 줄변경
}
reader.close()
return termsString.toString()
}catch (e:IOException){
} catch (e: IOException) {
e.printStackTrace()
}
return "fail"
}

fun changeAgreement(content: CheckBox, checked:Boolean){
val color=if(checked)ContextCompat.getColor(this,R.color.primary)else ContextCompat.getColor(this,R.color.gray_350)
content.isChecked=checked
content.background=if(checked)ContextCompat.getDrawable(this@SignUpActivity, R.drawable.style_signup_selected)else ContextCompat.getDrawable(this@SignUpActivity, R.drawable.style_signup_unselected)
fun changeAgreement(content: CheckBox, checked: Boolean) {
val color =
if (checked) ContextCompat.getColor(this, R.color.primary) else ContextCompat.getColor(
this,
R.color.gray_350
)
content.isChecked = checked
content.background = if (checked) ContextCompat.getDrawable(
this@SignUpActivity,
R.drawable.style_signup_selected
) else ContextCompat.getDrawable(this@SignUpActivity, R.drawable.style_signup_unselected)
content.setTextColor(color)
}

fun changeAgreement12(content: CheckBox,checked:Boolean){
val color=if(checked)ContextCompat.getColor(this,R.color.primary)else ContextCompat.getColor(this,R.color.gray_350)
content.isChecked=checked
fun changeAgreement12(content: CheckBox, checked: Boolean) {
val color =
if (checked) ContextCompat.getColor(this, R.color.primary) else ContextCompat.getColor(
this,
R.color.gray_350
)
content.isChecked = checked
content.setTextColor(color)
}

fun passwordCheck(a: String, b: String) {
if (a.equals(b)) { // 비밀번호 일치
binding.textPasswordCheckResult.visibility = View.INVISIBLE
Expand Down
10 changes: 8 additions & 2 deletions app/src/main/java/kr/co/sujungvillage/adapter/CommAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,12 @@ class CommAdapter : RecyclerView.Adapter<CommHolder>() {
class CommHolder(val binding: ListitemCommBinding) : RecyclerView.ViewHolder(binding.root) {
fun setComm(comm: CommDTO) {
binding.textTitle.text = comm.title
binding.textDate.text = "${comm.regDate.subSequence(0, 4)}.${comm.regDate.subSequence(5, 7)}.${comm.regDate.subSequence(8, 10)}"
binding.textDate.text = "${comm.regDate.subSequence(0, 4)}.${
comm.regDate.subSequence(
5,
7
)
}.${comm.regDate.subSequence(8, 10)}"
binding.textContent.text = comm.content
binding.commentCount.text = "${comm.numOfComments}"

Expand All @@ -42,7 +47,8 @@ class CommHolder(val binding: ListitemCommBinding) : RecyclerView.ViewHolder(bin
if (comm.writerId.toInt() >= 99990000) { // 관리자인 경우
binding.textAdmin.visibility = View.VISIBLE
}
} catch (e: NumberFormatException) { }
} catch (e: NumberFormatException) {
}

// 게시글 클릭 시 상세 액티비티 생성
binding.root.setOnClickListener {
Expand Down
23 changes: 19 additions & 4 deletions app/src/main/java/kr/co/sujungvillage/adapter/CommDetailAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,29 @@ class CommDetailHolder(val binding: ListitemCommDetailBinding, val context: Cont
if (postWriterId.toString() == commDetail.writerId) {
binding.textName.text = "글쓴이"
} else {
binding.textName.text = "익명${commentIndex?.indexOf(commDetail.writerId)?.plus(1)}" // 익명 처리해야함.
binding.textName.text =
"익명${commentIndex?.indexOf(commDetail.writerId)?.plus(1)}" // 익명 처리해야함.
}
binding.textCalDate.text = "${commDetail.regDate?.subSequence(0, 4)}/${commDetail.regDate?.subSequence(5, 7)}/${commDetail.regDate?.subSequence(8, 10)} ${commDetail.regDate?.subSequence(11, 13)}:${commDetail.regDate?.subSequence(14, 16)}"
binding.textCalDate.text = "${commDetail.regDate?.subSequence(0, 4)}/${
commDetail.regDate?.subSequence(
5,
7
)
}/${commDetail.regDate?.subSequence(8, 10)} ${
commDetail.regDate?.subSequence(
11,
13
)
}:${commDetail.regDate?.subSequence(14, 16)}"
binding.textContent.text = "${commDetail.content}"

// 관리자인지 아닌지 마크 띄우기
try {
if (commDetail.writerId.toInt() >= 99990000) { // 관리자인 경우
binding.textAdmin.visibility = View.VISIBLE
}
} catch (e: NumberFormatException) { }
} catch (e: NumberFormatException) {
}
binding.root.setOnClickListener { binding.root.context.hideKeyboard(itemView) }

// 댓글 삭제 버튼
Expand All @@ -73,7 +85,10 @@ class CommDetailHolder(val binding: ListitemCommDetailBinding, val context: Cont
RetrofitBuilder.communityApi.commCommentDelete(token, commDetail.id)
.enqueue(object :
Callback<Void> {
override fun onResponse(call: Call<Void>, response: Response<Void>) {
override fun onResponse(
call: Call<Void>,
response: Response<Void>
) {
Log.d("COMM_DELETE", response.message().toString())
}

Expand Down
Loading

0 comments on commit 758e5d9

Please sign in to comment.