스팀 앱 개발기 #112 - 포스트 화면에서 보팅 리스트 화면으로 연결

시작 화면 추가

No. 112
2023. 11. 16 (목) | Written by @dorian-mobileapp

시작하며...

오늘은 포스트 화면에서 보팅 리스트 화면으로 이동을 구현했습니다. 후자는 이미 구현했구요. 태그 리스트 화면에서 포스트 항목의 보팅 갯수를 클릭하면, 보팅 리스트 화면으로 이동합니다. 마찬가지로 포스트 화면에서 업보팅/다운보팅 카운트를 클릭하면 그 화면을 시작하면 됩니다.


작업 내용

  • BaseFragment
    • 클래스에 보팅 리스트 화면 실행 메소드 구현
  • PostFragment
    • 업보팅/다운보팅 갯수 클릭시 보팅 리스트 화면 시작
  • TagsFragment
    • 이전에 구현했던 보팅 리스트 화면 실행 코드 삭제

BaseFragment - 클래스에 보팅 리스트 화면 실행 메소드 구현

TagsFragment 클래스에 구현했던 보팅 리스트 화면 실행 코드는 PostFragment에서도 사용하기 위해 부모 클래스인 BaseFragment 클래스로 옮겼습니다.

// open new activity to show upvoting list
fun startUpvoteListActivity(activeVotes: List<ActiveVote>) {
    val upvotes = activeVotes.filter { vote ->
        vote.isUpvote()
    }.sortedByDescending { it.value }

    if (upvotes.isEmpty()) {
        return
    }

    val upvoteArrayList = ArrayList(upvotes)
    Intent(requireActivity(), VoteListActivity::class.java).apply {
        this.putExtra(VoteListActivity.INTENT_BUNDLE_VOTER_LIST, upvoteArrayList)
        startActivity(this)
    }
}

// open new activity to show downvoting list
fun startDownvoteListActivity(activeVotes: List<ActiveVote>) {
    val downvotes = activeVotes.filter { vote ->
        vote.isDownvote()
    }.sortedByDescending { it.value }

    if (downvotes.isEmpty()) {
        return
    }

    val downvoteArrayList = ArrayList(downvotes)
    Intent(requireActivity(), VoteListActivity::class.java).apply {
        this.putExtra(VoteListActivity.INTENT_BUNDLE_VOTER_LIST, downvoteArrayList)
        startActivity(this)
    }
}

PostFragment - 업보팅/다운보팅 갯수 클릭시 보팅 리스트 화면 시작

업보팅 개수를 의미하는 textUpvotes 텍스트 뷰, 다운보팅 개수를 의미하는 textDownvotes 텍스트 뷰를 클릭하면 보팅 리스트를 시작하는 클릭 리스너를 구현했습니다.

private val textUpvotesClickListener = View.OnClickListener {
    val postState = viewModel.flowPostState.value
    if (postState is PostState.Success) {
        startUpvoteListActivity(postState.post.activeVotes)
    }
}

private val textDownvotesClickListener = View.OnClickListener {
    val postState = viewModel.flowPostState.value
    if (postState is PostState.Success) {
        startDownvoteListActivity(postState.post.activeVotes)
    }
}

GitHub Commit

보다 자세한 코드는 아래 commit을 참고하세요.


마치며...

진도가 많이 느려졌네요. 현재 상황을 좀 더 분명히 인지하고 속도를 좀 더 내보고자 합니다. 너무 천천히 작업하니 결과가 안 나오고 있더라구요.


지난 스팀 앱 개발기


Layout provided by Steemit Enhancer hommage by ayogom


Posted through the ECblog app (https://blog.etain.club)
Sort:  

안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.


안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!

Thank you, friend!
I'm @steem.history, who is steem witness.
Thank you for witnessvoting for me.
image.png
please click it!
image.png
(Go to https://steemit.com/~witnesses and type fbslo at the bottom of the page)

The weight is reduced because of the lack of Voting Power. If you vote for me as a witness, you can get my little vote.

Coin Marketplace

STEEM 0.20
TRX 0.12
JST 0.029
BTC 61153.73
ETH 3403.85
USDT 1.00
SBD 2.51