Closed TaewoongR closed 4 days ago
https://github.com/user-attachments/assets/395b6057-2af5-4b29-ac46-0780762b3d95
뷰모델과 구조
state
intent
sideEffect
Screen → Content → Field
Content
Scaffold
SideEffect 수집
collectAsStateWithLifecycle
Channel
Flow
remember
collectAsState
Idle
공통 사용 리소스
GroupRepository
usecase
GroupCreationScreen
group/members
user/group
adminUser
groupId
Navigation
초대 코드 입력
inviteCodes
document(id)
group
참여 버튼 동작
오류 처리
입력 필드
생성 요청 조건
members
createdAt
java.util.Date()
Firestore 연동
그룹 정보 가져오기
user
초대 코드 발급
field
expiredBy
Timestamp
에피소드 데이터 가져오기
에피소드 정렬
GroupEditScreen으로 이동
GroupEditScreen
그룹 데이터 가져오기
TextField
편집 제약사항
그룹 정보 편집
결과 처리
- 24시간
맨 위에 #101 추가해야 할 것 같아요!
📍 Work Description
📸 Screenshot
https://github.com/user-attachments/assets/395b6057-2af5-4b29-ac46-0780762b3d95
📢 To Reviewers
1️⃣ 공통 사항
뷰모델과 구조
state
,intent
,sideEffect
를 관리.Screen → Content → Field
로 나뉨.intent
와sideEffect
를 처리하며,Content
에state
를 전달.state
로 UI를 구성.Scaffold
의 시작점은Content
로 설정.SideEffect 수집
sideEffect
를 수집하며, 화면의 생명주기 동안 유지.collectAsStateWithLifecycle
과 유사한 커스텀 함수를 제작하여 사용.Channel
로 초기화된sideEffect
를Flow
로 변환.remember
와collectAsState
를 합성한 상태 저장 함수 제작.Idle
로 설정.공통 사용 리소스
GroupRepository
에서 정의된 함수 사용.usecase
미적용.GroupCreationScreen
은 제외).group/members
와user/group
필드에 저장.adminUser
ID와 User ID 비교.adminUser
ID를 User ID로 설정.2️⃣ GroupScreen
groupId
를Navigation
으로 전달하여 GroupDetailScreen으로 이동.3️⃣ GroupJoinScreen
초대 코드 입력
inviteCodes
컬렉션에서document(id)
를 탐색.group
필드에서groupId
를 가져옴.groupId
를 사용하여 그룹 객체를 탐색.참여 버튼 동작
group/members
에 User ID를 추가.user/group
필드에groupId
추가.오류 처리
4️⃣ GroupCreationScreen
입력 필드
생성 요청 조건
adminUser
: User ID.groupId
: 랜덤 UUID.members
: User ID 포함.createdAt
:java.util.Date()
값.Firestore 연동
group
컬렉션에 추가 요청.5️⃣ GroupDetailScreen
그룹 정보 가져오기
groupId
를 사용하여 Firestore에서group
객체를 요청.group
객체의members
(String 리스트)를 통해 각 User 객체를 Firestore에서 추가로 요청.group
객체와user
객체를 화면에 표시.초대 코드 발급
groupId
에 이미 발급된inviteCodes
컬렉션 탐색.document(id)
반환.inviteCodes
컬렉션 생성.document(id)
는 랜덤 UUID로 생성.field
구성:expiredBy
: 오늘로부터 일주일 뒤의 날짜(Firebase의Timestamp
타입 사용).group
: 해당groupId
.에피소드 데이터 가져오기
groupId
를 통해 관련된 에피소드 데이터를 추가로 요청.에피소드 정렬
GroupEditScreen으로 이동
adminUser
ID가 현재 유저의 ID와 일치하는 경우에만, 탑바의 액션 버튼에 이동 버튼 표시.GroupEditScreen
에groupId
를 전달.6️⃣ GroupEditScreen
그룹 데이터 가져오기
groupId
를 사용하여 Firestore에서 해당group
객체를 요청.TextField
TextField
편집 제약사항
그룹 정보 편집
group
객체를 복사하여 수정된 사항 반영.groupId
를 통해group
컬렉션에서 해당 그룹 추적.결과 처리
⏲️Time