Skip to content

Commit

Permalink
Merge branch 'develop' into feature/sign-up-login
Browse files Browse the repository at this point in the history
  • Loading branch information
shw0471 authored Dec 2, 2021
2 parents 5e5ef23 + 54b9fe4 commit 3f005a1
Show file tree
Hide file tree
Showing 22 changed files with 265 additions and 252 deletions.
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@
<activity
android:name=".ui.main.MainActivity"
android:exported="true" />
<activity
android:name=".ui.review.WriteReviewActivity"
android:exported="true" />
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,19 @@ package com.semicolon.yasunnae.adapter
import android.annotation.SuppressLint
import android.view.LayoutInflater
import android.view.View
import android.view.View.VISIBLE
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.RecyclerView
import com.semicolon.domain.entity.ApplicationEntity
import com.semicolon.yasunnae.R
import com.semicolon.yasunnae.databinding.ItemApplicationsPostBinding

class MyApplicationAdapter(private val onItemClickListener: OnItemClickListener,
class MyApplicationAdapter(
private val onItemClick: (postId: Int) -> Unit,
private val onWriteReviewClick: (applicationId: Int) -> Unit
) : RecyclerView.Adapter<MyApplicationAdapter.ViewHolder>() {

interface OnItemClickListener {
fun onItemClick(postId: Int)
}

private var applicationList = ArrayList<ApplicationEntity>()

override fun onCreateViewHolder(
Expand All @@ -28,6 +27,8 @@ class MyApplicationAdapter(private val onItemClickListener: OnItemClickListener,

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.itemPostBinding.application = applicationList[position]
if (!applicationList[position].isWrittenReview)
holder.itemPostBinding.btnWriteReviewApplication.visibility = VISIBLE
}

override fun getItemCount(): Int =
Expand All @@ -44,7 +45,10 @@ class MyApplicationAdapter(private val onItemClickListener: OnItemClickListener,

init {
itemView.setOnClickListener {
onItemClickListener.onItemClick(applicationList[adapterPosition].postId)
onItemClick(applicationList[adapterPosition].postId)
}
itemPostBinding.btnWriteReviewApplication.setOnClickListener {
onWriteReviewClick(applicationList[adapterPosition].id)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.semicolon.yasunnae.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.View.VISIBLE
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.RecyclerView
Expand All @@ -13,18 +14,12 @@ import com.semicolon.yasunnae.databinding.ItemPostApplicationBinding
class PostApplicationsAdapter(
private val context: Context,
private val isDecided: Boolean,
private val onItemClickListener: OnItemClickListener,
private val onAcceptClickListener: OnAcceptClickListener
private val acceptedApplicationId: Int,
private val onItemClick: (applicantId: Int) -> Unit,
private val onAcceptClick: (applicationId: Int) -> Unit,
private val onWriteReviewClick: (applicationId: Int) -> Unit
) : RecyclerView.Adapter<PostApplicationsAdapter.ViewHolder>() {

interface OnItemClickListener {
fun onItemClick(applicantId: Int)
}

interface OnAcceptClickListener {
fun onAcceptClick(applicationId: Int)
}

var postApplications = ArrayList<PostApplicationEntity>()

override fun onCreateViewHolder(
Expand All @@ -39,6 +34,8 @@ class PostApplicationsAdapter(
holder.itemPostApplication.context = context
holder.itemPostApplication.application = postApplications[position]
if (!isDecided) holder.itemPostApplication.btnAcceptApplication.isEnabled = true
if (postApplications[position].applicationId == acceptedApplicationId && !postApplications[position].isWrittenReview)
holder.itemPostApplication.btnWriteReviewPostApplication.visibility = VISIBLE
}

override fun getItemCount(): Int =
Expand All @@ -49,11 +46,13 @@ class PostApplicationsAdapter(

init {
itemView.setOnClickListener {
onItemClickListener.onItemClick(postApplications[adapterPosition].applicantId)
onItemClick(postApplications[adapterPosition].applicantId)
}

itemPostApplication.btnAcceptApplication.setOnClickListener {
onAcceptClickListener.onAcceptClick(postApplications[adapterPosition].applicationId)
onAcceptClick(postApplications[adapterPosition].applicationId)
}
itemPostApplication.btnWriteReviewPostApplication.setOnClickListener {
onWriteReviewClick(postApplications[adapterPosition].applicationId)
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/com/semicolon/yasunnae/base/IntentKeys.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ object IntentKeys {
const val KEY_USER_ID = "KeyUserId"
const val KEY_USER_NAME = "KeyUserName"
const val KEY_COMMENT_POST = "KeyCommentPost"
const val KEY_APPLICATION_ID = "KeyApplicationPost"
const val KEY_REVIEW_ID = "KeyReviewId"
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package com.semicolon.yasunnae.ui.applications

import android.content.Intent
import android.view.View
import androidx.fragment.app.viewModels
import com.semicolon.yasunnae.R
import com.semicolon.yasunnae.adapter.MyApplicationAdapter
import com.semicolon.yasunnae.base.BaseFragment
import com.semicolon.yasunnae.base.IntentKeys
import com.semicolon.yasunnae.databinding.FragmentMyapplicationsListBinding
import com.semicolon.yasunnae.ui.coordinate.CoordinateActivity
import com.semicolon.yasunnae.ui.login.LoginActivity
import com.semicolon.yasunnae.ui.postdetail.PostDetailActivity
import com.semicolon.yasunnae.ui.review.WriteReviewActivity
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
Expand All @@ -18,52 +18,45 @@ class MyApplicationsListFragment : BaseFragment<FragmentMyapplicationsListBindin
override val layoutResId: Int
get() = R.layout.fragment_myapplications_list

private val myapplicationsViewModel: MyApplicationsViewModel by viewModels()
private val applicationAdapter = MyApplicationAdapter(object : MyApplicationAdapter.OnItemClickListener {
override fun onItemClick(postId: Int) {
private val myApplicationsViewModel: MyApplicationsViewModel by viewModels()

private val applicationAdapter = MyApplicationAdapter(
onItemClick = {
val intent = Intent(context, PostDetailActivity::class.java)
intent.putExtra(IntentKeys.KEY_POST_ID, postId)
intent.putExtra(IntentKeys.KEY_POST_ID, it)
startActivity(intent)
}
})

},
onWriteReviewClick = {
val intent = Intent(context, WriteReviewActivity::class.java)
intent.putExtra(IntentKeys.KEY_APPLICATION_ID, it)
startActivity(intent)
})

override fun init() {
binding.appliviewModel = myapplicationsViewModel
binding.appliviewModel = myApplicationsViewModel
binding.rvPostList.adapter = applicationAdapter
myapplicationsViewModel.getPostList()
myapplicationsViewModel.isLocationVerified()
myapplicationsViewModel.getPostList()
myApplicationsViewModel.getPostList()
myApplicationsViewModel.isLocationVerified()
myApplicationsViewModel.getPostList()
}


override fun observe() {
myapplicationsViewModel.postListLiveDate.observe(this) {
myApplicationsViewModel.postListLiveDate.observe(this) {
applicationAdapter.setList(it)
}
myapplicationsViewModel.retryEvent.observe(this) {
myApplicationsViewModel.retryEvent.observe(this) {
makeToast(getString(R.string.try_it_later))
}
myapplicationsViewModel.needToLoginEvent.observe(this) {
TODO("로그인 창으로 이동")
myApplicationsViewModel.needToLoginEvent.observe(this) {
val intent = Intent(context, LoginActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
}
myapplicationsViewModel.unknownErrorEvent.observe(this) {
myApplicationsViewModel.unknownErrorEvent.observe(this) {
makeToast(getString(R.string.unknown_error))
}
}


private fun isListEmpty(isEmpty: Boolean) {
if (isEmpty) {
binding.rvPostList.visibility = View.INVISIBLE
binding.clEmptyPostList.visibility = View.VISIBLE
} else {
binding.rvPostList.visibility = View.VISIBLE
binding.clEmptyPostList.visibility = View.INVISIBLE
}
}

private fun startVerifyLocationActivity() {
val intent = Intent(context, CoordinateActivity::class.java)
startActivity(intent)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ import com.semicolon.domain.entity.PostApplicationEntity
import com.semicolon.yasunnae.R
import com.semicolon.yasunnae.adapter.PostApplicationsAdapter
import com.semicolon.yasunnae.base.BaseActivity
import com.semicolon.yasunnae.base.IntentKeys.KEY_APPLICATION_ID
import com.semicolon.yasunnae.base.IntentKeys.KEY_END_DATE
import com.semicolon.yasunnae.base.IntentKeys.KEY_POST_ID
import com.semicolon.yasunnae.base.IntentKeys.KEY_START_DATE
import com.semicolon.yasunnae.base.IntentKeys.KEY_USER_ID
import com.semicolon.yasunnae.databinding.ActivityPostApplicationsBinding
import com.semicolon.yasunnae.ui.login.LoginActivity
import com.semicolon.yasunnae.ui.profile.ProfileActivity
import com.semicolon.yasunnae.ui.review.WriteReviewActivity
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
Expand All @@ -22,20 +24,13 @@ class PostApplicationsActivity : BaseActivity<ActivityPostApplicationsBinding>()
get() = R.layout.activity_post_applications

private val postApplicationsViewModel: PostApplicationsViewModel by viewModels()
private val onItemClickListener = object : PostApplicationsAdapter.OnItemClickListener {
override fun onItemClick(applicantId: Int) {
val intent = Intent(this@PostApplicationsActivity, ProfileActivity::class.java)
intent.putExtra(KEY_USER_ID, applicantId)
startActivity(intent)
}
}
private val onAcceptClickListener = object : PostApplicationsAdapter.OnAcceptClickListener {
override fun onAcceptClick(applicationId: Int) {
postApplicationsViewModel.acceptApplication(applicationId)
}
}
private var postId = 0

override fun onResume() {
super.onResume()
postApplicationsViewModel.getPostApplication(postId)
}

override fun init() {
postId = intent.getIntExtra(KEY_POST_ID, 0)
val startDate = intent.getStringExtra(KEY_START_DATE)
Expand All @@ -48,14 +43,19 @@ class PostApplicationsActivity : BaseActivity<ActivityPostApplicationsBinding>()
binding.btnGoToPost.setOnClickListener {
finish()
}
postApplicationsViewModel.getPostApplication(postId)
}

override fun observe() {
postApplicationsViewModel.postApplicationsLiveData.observe(this) {
var isDecided = false
it.map { application -> if (application.isAccepted) isDecided = true }
setUpRecyclerView(isDecided, it)
var acceptedApplicationId = 0
it.map { application ->
if (application.isAccepted) {
isDecided = true
acceptedApplicationId = application.applicationId
}
}
setUpRecyclerView(isDecided, acceptedApplicationId, it)
}
postApplicationsViewModel.retryGetPostApplicationEvent.observe(this) {
makeToast(getString(R.string.try_it_later))
Expand Down Expand Up @@ -87,12 +87,28 @@ class PostApplicationsActivity : BaseActivity<ActivityPostApplicationsBinding>()

private fun setUpRecyclerView(
isDecided: Boolean,
acceptedApplicationId: Int,
data: List<PostApplicationEntity>
) {
val postApplicationsAdapter = PostApplicationsAdapter(
this, isDecided, onItemClickListener, onAcceptClickListener
this, isDecided, acceptedApplicationId,
onItemClick = {
val intent = Intent(this@PostApplicationsActivity, ProfileActivity::class.java)
intent.putExtra(KEY_USER_ID, it)
startActivity(intent)
},
onAcceptClick = {
postApplicationsViewModel.acceptApplication(it)
},
onWriteReviewClick = {
val intent = Intent(this, WriteReviewActivity::class.java)
intent.putExtra(KEY_APPLICATION_ID, it)
startActivity(intent)
}
)
val list = ArrayList(data.filter { it.isAccepted })
list.addAll(data.filter { !it.isAccepted })
binding.rvPostApplicationList.adapter = postApplicationsAdapter
postApplicationsAdapter.postApplications = ArrayList(data)
postApplicationsAdapter.postApplications = list
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,6 @@ class PostDetailActivity : BaseActivity<ActivityPostDetailBinding>() {
binding.vpImagePostDetail.adapter = postDetailImageAdapter
binding.rvCommentsPostDetail.adapter = commentsAdapter
binding.btnBack.setOnClickListener { finish() }
binding.tvWriterName.setOnClickListener {
val intent = Intent(this, ProfileActivity::class.java)
intent.putExtra(IntentKeys.KEY_USER_ID, postDetail!!.writerId)
intent.putExtra(IntentKeys.KEY_USER_NAME, postDetail!!.nickname)
startActivity(intent)
}
binding.btnEditPost.setOnClickListener {
goToEditPost()
}
Expand All @@ -101,8 +95,20 @@ class PostDetailActivity : BaseActivity<ActivityPostDetailBinding>() {
val owner: LifecycleOwner = this
postDetailViewModel.apply {
postDetailLiveData.observe(owner) {
if (it.isMine) postDetailViewModel.getProfile(null)
else postDetailViewModel.getProfile(it.writerId)
if (it.isMine) {
postDetailViewModel.getProfile(null)
} else {
binding.tvWriterName.setOnClickListener {
val intent = Intent(
this@PostDetailActivity,
ProfileActivity::class.java
)
intent.putExtra(IntentKeys.KEY_USER_ID, postDetail!!.writerId)
intent.putExtra(IntentKeys.KEY_USER_NAME, postDetail!!.nickname)
startActivity(intent)
}
postDetailViewModel.getProfile(it.writerId)
}
postDetail = it
val deadline = getString(R.string.deadline_colon) + " " + it.post.applicationEndDate
val contacts = getString(R.string.contacts_colon) + " " + it.post.contactInfo
Expand Down
Loading

0 comments on commit 3f005a1

Please sign in to comment.