본문 바로가기
TeamProject/ImadAndroid

아이매드 댓글 다이얼로그 수정

by 둥글레차35 2025. 5. 26.

동작 영상

 

댓글 작성 화면 변경

댓글 작성 뿐만 아니라 댓글 수정 또한 사용할 수 있도록 하기 위해서 생각해본 결과
comment: String = "" 생성자 파라미터를 추가

생성자 파라미터 설명

CommentDialogFragment는 댓글을 작성하거나 수정할 수 있는 BottomSheetDialogFragment로, 아래와 같은 인자들을 전달받는다.

- listener : 댓글 작성 또는 수정이 완료되었을 때 콜백을 전달하기 위한 인터페이스
- text: 댓글 작성 화면 상단부분에 제목 텍스트 (댓글 작성, 답글 작성)
- parentId: 댓글, 답글 작성 시 어떤 댓글에 대한 것인지 식별하기 위한 ID(nullable)
- comment: 댓글 수정 시 기존 텍스트를 입력창에 표시하기 위한 문자열

 

class CommentDialogFragment(
    val listener: OnCommentSubmitListener,
    text: String = "댓글",
    private val parentId: Long? = null,
    comment: String = ""
) : BottomSheetDialogFragment() {
    private var commentText: String = "" 
    private var comment: String = ""

전역 변수에 받은 값을 init

init {
    commentText = text
    this.comment = comment
}

 

comment 값이 비어 있는 경우 새 댓글을 작성하는 것으로 간주, 값이 존재하는 경우 댓글을 수정하는 것으로 간주하여
각각 수정과 등록을 하도록 구현하였다.

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        if (comment.isNullOrEmpty()) {
            onClickYes() // 등록 버튼
        } else onClickEdit() // 수정
           }

 

변경 이유

하나의 다이얼로그에서 댓글 작성과 수정을 동시에 처리한 이유는 다음과 같다.

  • 댓글 작성과 수정 모두 동일한 UI를 사용하므로, 각각 별도의 다이얼로그를 만드는 것은 불필요한 중복이라고 판단 되었다.
  • 'comment' 파라미터의 유무로 작성과 수정 로직을 분기 처리한다면 중복 코드를 줄이고, UI 재사용성을 높일 수 있다는 생각이 들었다.
  • 한 다이얼로그에서 수정과 작성을 관리하기 때문에 코드 유지 보수가 쉬워질 것 같았다.
  • 새로운 조건이 추가 될 경우에도 확장하기 쉽다고 판단 되었다.(답글 등)

 

후기

아직 MVVM같은 디자인 패턴은 적용하지 않았지만 최대한 기능의 응집력과 코드의 효율성을 고려하며 구조를 설계하려고 노력했다.

댓글