🎮 태그 검색을 통해 자신의 성향과 맞는 그룹을 찾을 수 있습니다.
🕹️ 방을 생성하여 필요한 라인을 선택 후 같이할 사람을 찾을 수 있습니다.
🕛 2024년 5월 27일 ~ 2024년 7월 5일
| 분류 | 이름 |
|---|---|
| Architecture | |
| Jetpack | |
| 비동기 처리 | |
| 데이터 처리 | |
| Firebase | |
| API 통신 | |
| 타사 API | |
| 이미지 로더 | |
| UI Framework |
- 권민찬
- 게시글 세부
- Functions
- Messaging
| [회원가입] | [로그인] |
|---|---|
| - 아이디 입력 - 비밀번호 입력 - 닉네임 입력 - 태그 입력 - 약관 동의 |
- 아이디 입력 - 비밀번호 입력 - 자동 로그인 |
| [게시글 목록] | [게시글 작성] | [게시글 세부] | [태그 바텀시트] | [소환사(유저) 전적] |
|---|---|---|---|---|
| - 게시물 목록 확인 - 태그를 통한 게시물 검색 - 게시글 카테고리 변경 |
- 제목 입력 - 본문 입력 - 태그 선택 - 라인 선택 |
- 방장 전적 확인 - 라인 참가 - 게시글 신고/삭제 - 작성자 신고/차단 |
- 태그 선택 | - 플레이한 Top3 챔피언 확인 - 랭크 티어 확인 |
| [프로필] | [공지사항] | [차단한 유저] |
|---|---|---|
| - 닉네임#태그 변경 - 참가 중인 방 확인 - 공지사항 - 차단한 유저 - 로그아웃/탈퇴 |
- 확인 - 작성(관리자만) |
- 확인 - 해제 |
- 기능별로 브랜치를 나누었습니다.
- 각 기능마다 issue를 작성하여 진행 상황을 한번에 알아볼 수 있도록 하였습니다.
- 커밋과 풀 리퀘스트를 작성 후 팀장의 승인으로 merge 하였습니다.
- 완성 후 최종적으로 main 브랜치로 옮겨 배포하였습니다.
- 문제점: 아래처럼 정렬 메서드가 따로 있으면 결국엔 마지막을 기준으로 정렬됨
@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
}
)
}
}- 문제점: 아이디 같은 경우에는 영문 자판이 먼저 올라와야 하는데 기기에 기본값을 가져오기 때문에 한글 자판이 먼저 올라옴
- 해결방법: Compose는 BasicTextField의 keyboardOptions에 platformImeOptions가 있었고 해당 옵션에 "defaultInputmode=english;" 을 넣어주니 영문 자판이 올라왔다.
BasicTextField(
keyboardOptions = KeyboardOptions.Default.copy(
platformImeOptions = PlatformImeOptions("defaultInputmode=english;")
)
)
