본문으로 건너뛰기

2025.03 4주차

3월 20일

  • 나눔 노트 화면 구현 및 api 설계, 연결
  • Avatar 컴포넌트 구현, AvatarGroup도 구현 + 클릭시 애니메이션과 함께 펼쳐지는 기능도 구현
  • 기도제목 생성 및 조회, 좋아요 기능 구현(api는 llm이 거의 다 짜줌. 컨펌만)
  • 폴더 구조를 domain별로 features/에 분리.

Keyboard 관련 동작

  • 실제 keyboard를 띄우니까 키보드에 ui가 묻힘
  • 해결하기위해 keyboard-view를 만들어서, 사용할 때마다 감싸서 사용할 수 있도록 함. > 나중에 리팩터링 할 때 HOC로 만들어보는것도 괜찮을듯?
  • KeyboardAvoidingView를 직접 커스텀하여 작성
const KeyboardAvoidingView = ({ children }: KeyboardAvoidingViewProps) => {
return (
<RNKeyboardAvoidingView
behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
style={{ flex: 1 }}
keyboardVerticalOffset={Platform.OS === 'ios' ? 12 : 0}
>
<KeyboardDismissView>
{children}
</KeyboardDismissView>
</RNKeyboardAvoidingView>
);
};

Group API 설계 및 적용

  • group api 설계하는데 계속 머리 싸매면서 고민..
  • prayer-request에서 설계한 api 함수 및 폴더 구조대로 auth도 리팩터링 진행
    • ClientUser, Firestore(server)User type을 매핑
  • Group 생성 Flow 화면 구현. onboarding, EmptyHome에서 재사용하도록 컴포넌트를 최대한 분리한 후, 내부 분기처리
  • authStore에 currentGroup상태를 추가해서 현재 선택된 그룹을 관리
  • user에 group을 어떻게 관리할까 고민. users 컬렉션에는 모든 group의 정보가 없어도 된다 판단.
    • {groupId: string}[](string[]이 아닌 이유는, 나중에 필요한 필드를 추가할 수 있기에 확장성을 위함)만 저장해두고, 이걸 기반으로 getGroups로 그룹을 가져오도록 구현.

남은 작업들

  • 그룹 Join 기능 추가
  • 기도제목 관리 기능(기도제목 수정, 삭제)

3월 21일

Jira를 다시 사용하다

개발 작업 목록에 해야할 일들이 자꾸 쌓여가서.. 이걸 효율적으로 관리하자

2025_03_week_05_01

  • Expo Go에서 DevelopmentBuild로 변경
    • keyboard-controller 패키지가 expo-go를 지원하지 않기 때문

3월 26일

  • google login 구현 > iOS 개발환경설정, google-info plist 등..
  • google login이 simulator에서 동작 x.. 흰 blank 화면 > 실기기 테스트 필요
  • 더보기 화면 기능 구현 > 바이브코딩으로 빠르게 구현 완료
  • windsurf 룰을 추가해서, 기존 만들어진 header, toast 등을 사용하고 문체를 적용.
  • image picker 이미지도 안떠서 실기기로..
  • 회원탈퇴 기능, soft delete하고 계정 자체는 삭제. 계정 살리는거는 고객센터 문의 어쩌구 달려고했지만 레퍼런스를 찾아보니 SNS는 복구 안되고 대부분 아예 지우는거라. firebase authentication 유저 자체는 삭제되고, 새로 가입하는 형식으로!
  • 나중에 복구 원하면 새로 가입은 하고, 데이터만 집어넣어주지..
  • 회원탈퇴와 useAuthStore 연동(탈퇴하면 auth store 값 초기화)
  • onboarding step이 useOnboardingStore과 연동이 제대로 되지 않아서.. 머리 쥐어 짜내다가 결국 성공..ㅎㅎ.. + code로 유저 초대기능 구현
  • worshipType이 표시 안되는 문제.. 예전에 batch로직 수정되면서 createdAt을 없앴는데, 이걸 기준으로 sort 쿼리를 조회해서 발생. name으로 쿼리 불러와서 해결.

3월 27일

  • 개인정보처리방침 작성.. 거의 못하고 어느정도 어떻게 써야하는지는 알겠음.
  • skeleton ui 작성, prompt로 딸깍헤서 15분만에 구현. 예전같으면 몇시간은 걸릴 작업을 그냥 ui 베이스로 그려버리고 연동시켜주니까 더 효율적..
  • 기타 자잘한 오류:
    • firebase > react-native-firebase로 마이그레이션
  • Screen에 Google Analytics 추가

3월 28일

  • 바이브 코딩 적극적 활용

2025_03_week_05_02.png

구현 내용 요약

1. FirestoreUser 인터페이스 확장

  • FirestoreUser 인터페이스에 fcmToken 필드를 추가하여 타입 안전성 확보

2. 새로운 함수 추가

  • updateUserData 메서드 추가: 여러 필드를 한 번에 업데이트할 수 있는 함수 구현
    • SOLID 원칙에 따라 함수는 단일 책임만 갖도록 설계했으며, 기존 updateLastLogin 함수는 그대로 두고, 더 일반적인 업데이트 함수를 별도로 추가

3. 사용자 프로필 처리 메서드 개선

  • handleUserProfilehandleExistingUserhandleNewUserCreation 메서드에 FCM 토큰 매개변수 추가
  • 기존 사용자의 경우 마지막 로그인 시간과 함께 FCM 토큰 업데이트
  • 신규 사용자의 경우 계정 생성 시점에 FCM 토큰 저장

4. 로그인/회원가입 API 함수에 알림 권한 요청 로직 통합

  • signInWithEmailsignInWithGooglesignInWithApplesignUpWithEmail 모든 로그인 방식에 알림 권한 요청 및 토큰 저장 로직 추가
  • 로그인 성공 직후 알림 권한을 요청하여 사용자 경험 최적화

5. 함수형 접근 방식 유지

  • 불변 업데이트 패턴 사용
  • 명확한 에러 처리를 통한 안정적인 코드 구현