Skip to content

GitSpace 오너 기능인 채팅 파트에 대해 소개하는 레포지토리

License

Notifications You must be signed in to change notification settings

wontaeyoung/GitSpace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Information

PR 및 Issue는 원본 레포지토리에서 확인 가능합니다!

앱스토어 링크



Introduce

GitHub API를 통해 Repository, Follow, Activity와 같은 정보를 받고, 사용자가 Starred한 Repository를 클라이언트의 커스텀 태그로 카테고리를 묶어서 관리할 수 있습니다.

특정 레포지토리의 Contributor에게 노크를 요청할 수 있고, 상대방이 이를 수락하면 채팅을 진행할 수 있습니다.



Onwer Feature

GitSpace의 채팅 기능에 오너십을 가지고 관련 로직 및 UI 개발


  • 팀 프로젝트로 Git Flow, 코드 컨벤션, 브랜치 전략, PR 및 코드리뷰, 내부 세미나 진행
  • Design System을 적용해서 UI 일관성을 유지하고 작성 리소스를 확보
  • iOS 최소 지원버전으로 사용할 수 없는 컴포넌트 기능을 직접 구현하여 사용 - 관련 포스팅
  • Listener를 사용해서 실시간 채팅 기능을 구현 - 관련 포스팅
  • ScenePhase를 사용하여 앱의 Life Cycle을 활용 - 관련 포스팅
  • ScrollViewReader로 프로그래밍적으로 화면 스크롤링 - 관련 포스팅

Feature UI

메세지 보내기
메세지 보내기
  • 메세지 전송 버튼을 누르면 서버에 업로드합니다.
  • 상대방 클라이언트의 Listener가 서버 업데이트를 감지하여 두 클라이언트를 동기화해서 실시간 채팅이 동작합니다.




메세지 인터랙션
메세지 인터랙션
  • Long Press 제스처로 메세지 버블에 대한 인터랙션을 할 수 있습니다.
  • 내 메세지에 대해서는 삭제, 상대 메세지에 대해서는 신고 동작을 할 수 있습니다.




메세지 삭제
메세지 삭제
  • 삭제 버튼을 누르면 서버에서 해당 메세지를 삭제합니다.
  • 상대방 클라이언트의 Listener가 이를 감지해서 동일한 메세지를 삭제합니다.




메세지 읽음 처리
메세지 읽음 처리
  • 읽지 않은 메세지가 있을 때 채팅방을 입장해서 해당 메세지를 읽으면, 읽지 않은 메세지 카운트가 0으로 초기화됩니다.




실시간 메세지 읽음 처리
실시간 메세지 읽음 처리
  • 채팅방에 입장한동안 새롭게 받은 메세지는 모두 읽음 처리됩니다.




읽지 않은 메세지 시작 위치로 이동
읽지 않은 메세지 시작 위치로 이동
  • 채팅방 입장 시, 읽지 않은 메세지 중 첫 번째 메세지 위치로 자동 스크롤됩니다.




읽지 않은 메세지 삭제
읽지 않은 메세지 삭제
  • 읽지 않은 메세지를 상대방이 삭제하면, 이에 맞춰서 읽지 않은 메세지 카운트가 감소합니다.
  • 만약 상대방이 삭제한 메세지가 마지막 메세지라면, 그 이전 메세지로 마지막 메세지가 수정됩니다.




커스텀 TextEditor
읽지 않은 메세지 삭제
  • 커스텀 텍스트에디터를 디자인 시스템으로 구현했습니다.
  • 높이 계산 로직을 통해 최대 5줄 높이까지 동적으로 계산하여 변화합니다.
  • 해당 컴포넌트에 기능을 추가하고 최소 지원버전을 낮춰 AutoHeightEditor라는 오픈소스 라이브러리를 공개했습니다.




관련 포스팅

About

GitSpace 오너 기능인 채팅 파트에 대해 소개하는 레포지토리

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages