Skip to content

Commit

Permalink
AddCommentActivity ContactActivity add
Browse files Browse the repository at this point in the history
  • Loading branch information
easyhooon committed Jun 19, 2021
1 parent 3aceb79 commit f0d5b74
Show file tree
Hide file tree
Showing 8 changed files with 451 additions and 21 deletions.
147 changes: 147 additions & 0 deletions app/src/main/java/kr/ac/konkuk/koogle/Activity/AddCommentActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
package kr.ac.konkuk.koogle.Activity

import android.app.AlertDialog
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.provider.ContactsContract
import android.util.Log
import android.view.View
import android.widget.Toast
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.ktx.auth
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.ValueEventListener
import com.google.firebase.database.ktx.database
import com.google.firebase.ktx.Firebase
import com.google.firebase.storage.FirebaseStorage
import com.google.firebase.storage.ktx.storage
import kr.ac.konkuk.koogle.DBKeys
import kr.ac.konkuk.koogle.DBKeys.Companion.COMMENT_CONTENT
import kr.ac.konkuk.koogle.DBKeys.Companion.COMMENT_CREATED_AT
import kr.ac.konkuk.koogle.DBKeys.Companion.COMMENT_ID
import kr.ac.konkuk.koogle.DBKeys.Companion.DB_COMMENTS
import kr.ac.konkuk.koogle.DBKeys.Companion.DB_USERS
import kr.ac.konkuk.koogle.DBKeys.Companion.WRITER_ID
import kr.ac.konkuk.koogle.DBKeys.Companion.WRITER_PROFILE_IMAGE_URL
import kr.ac.konkuk.koogle.Model.UserModel
import kr.ac.konkuk.koogle.databinding.ActivityAddCommentBinding

class AddCommentActivity : AppCompatActivity() {
lateinit var binding: ActivityAddCommentBinding

private lateinit var writerProfileImageUrl: String

private lateinit var adminId: String

private lateinit var writerId: String

private lateinit var commentId: String

private lateinit var commentContent: String

private val auth: FirebaseAuth by lazy {
Firebase.auth
}
private val firebaseUser = auth.currentUser!!

private val userRef: DatabaseReference by lazy {
Firebase.database.reference.child(DB_USERS)
}

private val commentRef: DatabaseReference by lazy {
userRef.child(adminId).child(DB_COMMENTS)
}

private val currentCommentRef: DatabaseReference by lazy {
userRef.child(adminId).child(DB_COMMENTS).child(commentId)
}

private lateinit var writerName:String

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityAddCommentBinding.inflate(layoutInflater)
setContentView(binding.root)

initDB()
initButton()
}

private fun initDB() {
val intent = intent
adminId = intent.getStringExtra(DBKeys.GROUP_ID).toString()

val currentUserRef = userRef.child(auth.currentUser?.uid.toString())
currentUserRef.addListenerForSingleValueEvent(object: ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
val userModel: UserModel? = snapshot.getValue(UserModel::class.java)
if (userModel != null) {
writerName = userModel.userName
writerProfileImageUrl = userModel.userProfileImageUrl
}
}

override fun onCancelled(error: DatabaseError) {
Log.d("onCancelled: ", "데이터로드 실패")
}

})
}

private fun initButton() {
binding.submitButton.setOnClickListener {
commentId = commentRef.push().key.toString()
commentContent = binding.contentEditText.toString()
writerId = firebaseUser.uid

if (commentContent.isEmpty()) {
Toast.makeText(this, "내용을 입력해주세요", Toast.LENGTH_SHORT).show()
return@setOnClickListener
}

showProgress()

addComment()
}

binding.backButton.setOnClickListener {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}
}

private fun addComment() {
val comment = mutableMapOf<String, Any>()
comment[COMMENT_ID] = commentId
comment[WRITER_ID] = writerId
comment[WRITER_PROFILE_IMAGE_URL] = writerProfileImageUrl
comment[COMMENT_CREATED_AT] = System.currentTimeMillis()
comment[COMMENT_CONTENT] = commentContent

currentCommentRef.setValue(comment)

Toast.makeText(this, "평가가 등록되었습니다. 무분별한 비난의 경우 관리자의 의해 삭제 조치될 수 있습니다", Toast.LENGTH_SHORT).show()

hideProgress()
finish()
}

private fun showProgress() {
binding.progressBar.isVisible = true
}

private fun hideProgress() {
binding.progressBar.isVisible = false
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ class ArticleActivity : AppCompatActivity() {
}
ad.setNegativeButton(
"참여하기"
) { dialog, _ ->
) { _, _ ->
//글과 그룹 모두 삭제
showProgress()
joinGroup(currentUserId, currentUserName, currentUserProfileImage)
Expand Down
12 changes: 12 additions & 0 deletions app/src/main/java/kr/ac/konkuk/koogle/Activity/ContactActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package kr.ac.konkuk.koogle.Activity

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kr.ac.konkuk.koogle.R

class ContactActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_contact)
}
}
63 changes: 43 additions & 20 deletions app/src/main/java/kr/ac/konkuk/koogle/Activity/ProfileActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package kr.ac.konkuk.koogle.Activity

import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.ItemTouchHelper
Expand All @@ -12,12 +13,16 @@ import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.ktx.auth
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.ValueEventListener
import com.google.firebase.database.ktx.database
import com.google.firebase.ktx.Firebase
import kr.ac.konkuk.koogle.Adapter.CommentAdapter
import kr.ac.konkuk.koogle.Adapter.TagAdapter
import kr.ac.konkuk.koogle.DBKeys.Companion.DB_COMMENTS
import kr.ac.konkuk.koogle.DBKeys.Companion.DB_USERS
import kr.ac.konkuk.koogle.Model.CommentModel
import kr.ac.konkuk.koogle.Model.GroupModel
import kr.ac.konkuk.koogle.Model.TagModel
import kr.ac.konkuk.koogle.Model.UserModel
import kr.ac.konkuk.koogle.R
Expand All @@ -34,10 +39,19 @@ class ProfileActivity : ProfileCommonActivity() {
// private var tag_debug_data: ArrayList<TagModel> = ArrayList()
lateinit var binding: ActivityProfileBinding
lateinit var commentAdapter: CommentAdapter
private var userCommentList = mutableListOf<CommentModel>()

//파이어베이스 인증 객체 초기화
private val auth: FirebaseAuth by lazy {
Firebase.auth
private val userRef: DatabaseReference by lazy {
Firebase.database.reference.child(DB_USERS)
//val userRef = FirebaseDatabase.getInstance().getReference(DB_USERS).child(uid)와 같다
}

private val currentUserRef: DatabaseReference by lazy {
userRef.child(firebaseUser.uid)
}

private val currentUserCommentRef: DatabaseReference by lazy {
currentUserRef.child(DB_COMMENTS)
}

override fun onCreate(savedInstanceState: Bundle?) {
Expand All @@ -48,9 +62,7 @@ class ProfileActivity : ProfileCommonActivity() {
}

private fun init() {
initData()
initRecommendRecyclerView()
initUserInfo()
initDB()
initButton()
}

Expand All @@ -73,14 +85,9 @@ class ProfileActivity : ProfileCommonActivity() {
}


private fun initUserInfo() {
//입력 로그인용 유저의 데이터를 불러오기 위한 uid
val uid = firebaseUser.uid
val currentUserRef = Firebase.database.reference.child(DB_USERS).child(uid)
// val userRef = FirebaseDatabase.getInstance().getReference(DB_USERS).child(uid)와 같다

// 파이어베이스 데이터베이스의 정보 가져오기
currentUserRef.addValueEventListener(object : ValueEventListener {
private fun initDB() {
//파이어베이스 데이터베이스의 정보 가져오기
currentUserRef.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if (snapshot.exists()) {
val userModel: UserModel? = snapshot.getValue(UserModel::class.java)
Expand All @@ -101,14 +108,34 @@ class ProfileActivity : ProfileCommonActivity() {

override fun onCancelled(error: DatabaseError) {}
})

currentUserCommentRef.addListenerForSingleValueEvent(object: ValueEventListener{
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (snapshot in dataSnapshot.children) {
val commentModel = snapshot.getValue(CommentModel::class.java)
Log.i("ProfileActivity", "commentModel: $commentModel")
if (commentModel != null) {
userCommentList.add(commentModel)
}
}
//동기적 실행을 위해 위치 옮김
initCommentRecyclerView()
}

override fun onCancelled(error: DatabaseError) {

}

})


}

private fun initRecommendRecyclerView() {
private fun initCommentRecyclerView() {
binding.commentRecyclerView.layoutManager = LinearLayoutManager(this)
// 구분선 넣기
binding.commentRecyclerView.addItemDecoration(DividerItemDecoration(this, 1))
commentAdapter = CommentAdapter()
// 아이템 클릭 리스터 설정(미구현)
binding.commentRecyclerView.adapter = commentAdapter
}

Expand Down Expand Up @@ -149,8 +176,4 @@ class ProfileActivity : ProfileCommonActivity() {
val itemTouchHelper = ItemTouchHelper(simpleCallBack)
itemTouchHelper.attachToRecyclerView(binding.tagRecyclerView)
}

private fun initData() {

}
}
12 changes: 12 additions & 0 deletions app/src/main/java/kr/ac/konkuk/koogle/Model/CommentModel.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package kr.ac.konkuk.koogle.Model

data class CommentModel(
val commentId: String, //평가글 고유 id
val writerId: String, //작성자 고유 id
val writerName: String, //작성자 이름
val writerProfileImageUrl: String,//작성자 프로필 이미지 url
val commentContent: String, //평가 내용
val commentCreatedAt: Long
) {
constructor(): this("","","","","", 0)
}
Loading

0 comments on commit f0d5b74

Please sign in to comment.