PR 및 Issue는 원본 레포지토리에서 확인 가능합니다!
GitHub API를 통해 Repository, Follow, Activity와 같은 정보를 받고, 사용자가 Starred한 Repository를 클라이언트의 커스텀 태그로 카테고리를 묶어서 관리할 수 있습니다.
특정 레포지토리의 Contributor에게 노크를 요청할 수 있고, 상대방이 이를 수락하면 채팅을 진행할 수 있습니다.
GitSpace의 채팅 기능에 오너십을 가지고 관련 로직 및 UI 개발
- 팀 프로젝트로 Git Flow, 코드 컨벤션, 브랜치 전략, PR 및 코드리뷰, 내부 세미나 진행
Design System
을 적용해서 UI 일관성을 유지하고 작성 리소스를 확보- iOS 최소 지원버전으로 사용할 수 없는 컴포넌트 기능을 직접 구현하여 사용 - 관련 포스팅
Listener
를 사용해서 실시간 채팅 기능을 구현 - 관련 포스팅ScenePhase
를 사용하여 앱의 Life Cycle을 활용 - 관련 포스팅ScrollViewReader
로 프로그래밍적으로 화면 스크롤링 - 관련 포스팅
메세지 보내기 |
---|
- 메세지 전송 버튼을 누르면 서버에 업로드합니다.
- 상대방 클라이언트의 Listener가 서버 업데이트를 감지하여 두 클라이언트를 동기화해서 실시간 채팅이 동작합니다.
메세지 인터랙션 |
---|
- Long Press 제스처로 메세지 버블에 대한 인터랙션을 할 수 있습니다.
- 내 메세지에 대해서는 삭제, 상대 메세지에 대해서는 신고 동작을 할 수 있습니다.
메세지 삭제 |
---|
- 삭제 버튼을 누르면 서버에서 해당 메세지를 삭제합니다.
- 상대방 클라이언트의 Listener가 이를 감지해서 동일한 메세지를 삭제합니다.
메세지 읽음 처리 |
---|
- 읽지 않은 메세지가 있을 때 채팅방을 입장해서 해당 메세지를 읽으면, 읽지 않은 메세지 카운트가 0으로 초기화됩니다.
실시간 메세지 읽음 처리 |
---|
- 채팅방에 입장한동안 새롭게 받은 메세지는 모두 읽음 처리됩니다.
읽지 않은 메세지 시작 위치로 이동 |
---|
- 채팅방 입장 시, 읽지 않은 메세지 중 첫 번째 메세지 위치로 자동 스크롤됩니다.
읽지 않은 메세지 삭제 |
---|
- 읽지 않은 메세지를 상대방이 삭제하면, 이에 맞춰서 읽지 않은 메세지 카운트가 감소합니다.
- 만약 상대방이 삭제한 메세지가 마지막 메세지라면, 그 이전 메세지로 마지막 메세지가 수정됩니다.
커스텀 TextEditor |
---|
- 커스텀 텍스트에디터를 디자인 시스템으로 구현했습니다.
- 높이 계산 로직을 통해 최대 5줄 높이까지 동적으로 계산하여 변화합니다.
- 해당 컴포넌트에 기능을 추가하고 최소 지원버전을 낮춰 AutoHeightEditor라는 오픈소스 라이브러리를 공개했습니다.
관련 포스팅