Skip to content

CosineAndroid/GroupFinder

Repository files navigation

배경

띱 - 리그 오브 레전드 그룹 찾기

💡 리그 오브 레전드를 같이할 그룹을 찾아보세요!

🎮 태그 검색을 통해 자신의 성향과 맞는 그룹을 찾을 수 있습니다.

🕹️ 방을 생성하여 필요한 라인을 선택 후 같이할 사람을 찾을 수 있습니다.

개발 기간

🕛 2024년 5월 27일 ~ 2024년 7월 5일

기술 스택

분류 이름
Architecture
Jetpack
비동기 처리
데이터 처리
Firebase
API 통신
타사 API
이미지 로더
UI Framework

개발자 및 담당한 기능

팀장

  • 공지훈
    • 게시글 목록
    • 회원가입/로그인
    • 프로필
    • 공지사항
    • 차단/신고(유저, 게시글)
    • 유저 정보/전적 - Riot API
    • Firestore

부팀장

  • 권민찬
    • 게시글 세부
    • Functions
    • Messaging

팀원

기능

[회원가입] [로그인]
- 아이디 입력
- 비밀번호 입력
- 닉네임 입력
- 태그 입력
- 약관 동의
- 아이디 입력
- 비밀번호 입력
- 자동 로그인
[게시글 목록] [게시글 작성] [게시글 세부] [태그 바텀시트] [소환사(유저) 전적]
- 게시물 목록 확인
- 태그를 통한 게시물 검색
- 게시글 카테고리 변경
- 제목 입력
- 본문 입력
- 태그 선택
- 라인 선택
- 방장 전적 확인
- 라인 참가
- 게시글 신고/삭제
- 작성자 신고/차단
- 태그 선택 - 플레이한 Top3 챔피언 확인
- 랭크 티어 확인
[프로필] [공지사항] [차단한 유저]
- 닉네임#태그 변경
- 참가 중인 방 확인
- 공지사항
- 차단한 유저
- 로그아웃/탈퇴
- 확인
- 작성(관리자만)
- 확인
- 해제

와이어프레임

image

실제 앱 화면

1 2 3 4 5 6 7 8 9 10

Git 전략

  • 기능별로 브랜치를 나누었습니다.
  • 각 기능마다 issue를 작성하여 진행 상황을 한번에 알아볼 수 있도록 하였습니다.
  • 커밋과 풀 리퀘스트를 작성 후 팀장의 승인으로 merge 하였습니다.
  • 완성 후 최종적으로 main 브랜치로 옮겨 배포하였습니다.
1 3 2

트러블 슈팅

여러 조건으로 리스트 정렬

  • 문제점: 아래처럼 정렬 메서드가 따로 있으면 결국엔 마지막을 기준으로 정렬됨
@ViewModelScoped
class ListUseCase @Inject constructor(
    private val postRepository: PostRepository
) {
    suspend operator fun invoke(mode: Mode, tags: List<String>): List<PostModel> {
        return postRepository.getPosts(tags).filter {
            it.getMode() == mode
        }.sortedByDescending {
            it.time
        }.sortedBy {
            it.getJoinedPeopleCount() == it.getTotalPeopleCount()
        }
    }
}
  • 해결방법: 이를 해결하기 위해 sortedWith, compareBy, thenByDescending 이 3개를 활용하여 해결함
@ViewModelScoped
class ListUseCase @Inject constructor(
    private val postRepository: PostRepository
) {
    suspend operator fun invoke(mode: Mode, tags: List<String>): List<PostModel> {
        return postRepository.getPosts(tags).filter {
            it.getMode() == mode
        }.sortedWith(
            compareBy<PostModel> {
                // 참가 중인 인원 == 총 필요한 인원
                it.getJoinedPeopleCount() == it.getTotalPeopleCount()
            }.thenByDescending {
                it.time
            }
        )
    }
}

TextField에서 영문 자판 먼저 올라오게

  • 문제점: 아이디 같은 경우에는 영문 자판이 먼저 올라와야 하는데 기기에 기본값을 가져오기 때문에 한글 자판이 먼저 올라옴
  • 해결방법: Compose는 BasicTextField의 keyboardOptions에 platformImeOptions가 있었고 해당 옵션에 "defaultInputmode=english;" 을 넣어주니 영문 자판이 올라왔다.
BasicTextField(
    keyboardOptions = KeyboardOptions.Default.copy(
        platformImeOptions = PlatformImeOptions("defaultInputmode=english;")
    )
)

About

리그 오브 레전드 그룹 찾기 앱

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages