Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEAT] [#12] 이미지 생성 화면 구현 #49

Merged
merged 10 commits into from
Feb 12, 2024

Conversation

easyhooon
Copy link
Collaborator

@easyhooon easyhooon commented Feb 11, 2024

  • 로딩 애니메이션 lottie 파일을 추가하여 LoadingIndicator 구현
  • 이미지 생성 화면 내에 생성된 이미지 공유하기, 저장하기 기능 구현
  • 이미지 생성 중 화면에서 시스템 백버튼을 누를 경우, 이미지 생성 중단 다이얼로그가 뜨도록 설정
  • 이미지 생성 완료 화면에서 시스템 백버튼을 누를 경우, 해당 이벤트를 차단(이미지 생성 중 화면으로 다시 이동하지 않도록)
  • 이미지 생성 완료 화면 전체 좌우 패딩 값 삭제 후 버튼 영역만 좌우 패딩 추가(Horizontal Pager 의 좌우 끝단이 짤리는 문제 수정)
  • 사진 업로드 모듈내에 존재하던, 사진 업로드 feature, 와 이미지 생성 feature 를 별도의 모듈로 분리
공유하기 클릭 공유하기 결과

  • ViewModel 을 구성하는 요소들(State, SideEffect, ViewModel)을 별도의 viewmodel 패키지로 분리 (화면을 구성하는 요소들과 분리)
    • component 패키지와 screen 패키지도 만들어서 화면을 구성하는 component 와 screen 도 분리할까? 생각해보았으나
      현재 screen 파일 내부에 TopAppBar, Content, 기타 구성 요소들이 포함되어 있는데, 이것들을 전부 파일 단위로 분리하여,
      모든 파일을 단일 컴포저블로 구성하는 것이 과연 가독성이 더 좋아지는 것일까? 라고 생각을 해 보았을 때,
      의구심이 생겨 viewmodel 패키지만을 분리

  • 이슈 1) 카카오톡으로 이미지를 공유할 경우, 이미지 공유 자체는 정상적으로 이뤄지나 다음과 같은 에러가 발생
  • image

-> 권한 관련 문제인 것으로 추측되는데 해결해보겠음!

  • 이슈 2) 이미지(파일)를 외부로 공유할 경우,
    앱 내에 캐시 디렉토리에 임시 파일을 생성 -> 해당 파일의 Uri 을 가져와 intent 에 담아서 보내는 구조
    이후 캐시파일이 자동으로 삭제되지 않아, 별도로 캐시파일을 삭제하는 로직을 추가해야함.
    현재 startActivityForResult Launcher 를 통해 공유 이후 캐시 디렉토리내에 생성된 파일들을 삭제하는 로직을 심어 놓았는데, 해당 로직 때문인지, 비동기 타이밍 이슈 때문인지 1, 2, 3, 4번째 사진이 순서대로 공유되어야 하는데 2번, 2번, 3번, 4번 이미지가 공유되는 문제가 간헐적으로 발생함... 뭐 때문인지 알아볼 필요 있음
  • image

시스템 백 버튼을 누르면 이미지 생성 중단 팝업이 호출 되도록
HorizontalPager 를 swipe 할때, 좌우 패딩에 의해 이미지가 짤리는 문제 제거
시스템 백 버튼을 통해 이미지 생성 중 화면으로 돌아가지 못하도록
뷰에 포함 되었던 비즈니스 로직을 뷰모델 및 데이터 레이어로 이동
관심사가 다른 두 feature 를 각각의 모듈로 분리
viewmodel 패키지 -> 뷰모델과 뷰모델을 구성하는 구성요소(state, sideEffect, viewModel)로 구성

screen 패키지와 component 패키지도 분리해보려고 했으나, 현재 screen 파일 내에 screen, topAppBar, content 등 기타 부가적인 component 들이 존재하여, 이들을 전부 각각의 파일로, 단일 컴포저블 파일로 분리하는 것이 과연 가독성이 좋은 것인가 생각 했을 때, 약간의 의구심이 들어 viewModel 을 구성하는 요소만 분리
@easyhooon easyhooon added bug Something isn't working feature New feature or request design tasks related to design aspects of the project labels Feb 11, 2024
@easyhooon easyhooon requested a review from josushell February 11, 2024 12:35
@easyhooon easyhooon self-assigned this Feb 11, 2024
@easyhooon easyhooon linked an issue Feb 11, 2024 that may be closed by this pull request
3 tasks
Copy link
Member

@josushell josushell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

음 그러게 공유하는거 왜 이미지 순서가 저렇게 되는거지? 나도 좀 더 찾아볼게

@easyhooon
Copy link
Collaborator Author

음 그러게 공유하는거 왜 이미지 순서가 저렇게 되는거지? 나도 좀 더 찾아볼게

이슈 1번은 검색해서 추가하라는거 다 해봤는데도 계속 에러 로그는 발생하고 있고(앱 동작 자체는 문제 없음)
이슈 2번은 지금도 계속 공유하기 해보는데, 발생 조건이 뭔지 파악이 안되고 있음 계속 그냥 잘되는데 왜 저렇게 공유가 됐던건지 흠

@easyhooon
Copy link
Collaborator Author

@josushell 이슈 1은 1e9b019 해당 코드 추가해줘서 퍼미션 관련 에러로그 출력되지 않는거 확인했고 이슈 2는 재현이 불가능해서 혹시 테스트하다가 나중에도 발생하면 그때 해결할게! 일단 다른 작업부터 ㄱㄱ할려구

@easyhooon easyhooon removed the bug Something isn't working label Feb 12, 2024
@easyhooon easyhooon merged commit 18b43ea into develop Feb 12, 2024
1 check passed
@easyhooon easyhooon deleted the feature/create-image-screen-impl branch February 12, 2024 04:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
design tasks related to design aspects of the project feature New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

이미지 생성 화면 구현
2 participants