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: 내 명함 목록을 선택할 수 있는 Configurable Widget 추가 (#366) #369

Merged
merged 15 commits into from
Feb 28, 2023

Conversation

hyun99999
Copy link
Member

🌴 PR 요약

🌱 작업한 브랜치

🌱 작업한 내용

  • Card 데이터 모델에 전역변수로 mock data 를 만들어서 그곳에서 cardID 를 비교해서 위젯 뷰를 그리고 있습니다.
  • 현재는 mock data 를 위해서 이미지 에셋을 추가해뒀습니당 이미지를 전달하는 방식에 대해서 고민해보고 삭제할 예정입니다.
  • 위젯에 내 명함이 없는 경우. 이하 엠티뷰에 필요한 이미지 에셋 추가.
  • IntentHandler : Intent 는 시스템과 앱이 소통하는 것이라고 생각하면 되는데 이때 핸들링 하는 함수를 설정할 수 있어여!
    • 선택목록 설정(provideMyCardOptionsCollection(for:with:)) : 내 명함이 없다면 선택목록은 빈 배열을 넘긴다. -> 선택 목록이 비어있음 + 엠티뷰.
    • 내 명함이 있다면 선택목록을 설정해서 넘긴다.
    • 기본값 설정(defaultMyCard(for:)) : 내 명함이 없다면 nil 로 지정할 예정. -> 선택 목록에서 선택된 것이 없음 + 엠티뷰.
    • 내 명함이 있다면 첫 번째 명함을 기본값으로 설정.
    • 위의 내용은 주석으로 추가해두었습니다.
  • MyCardWidget 이 엠티뷰일 때는 widgetURL 을 설정하지 않아서 그냥 앱을 열고, 엠티뷰가 아닌 경우에는 widgetURL 을 설정해두었습니다. 해당 명함을 볼 수 있게 홈에서 스크롤 하는 기능을 구현할 예정입니다.
  • 위젯에서 fetchMyCard(with:) 메서드를 별도로 두어서 로직을 통일하였습니다. 서버 통신이든 DB 에서 가져오든 통일하게 적용하겠습니다.
  • 위젯은 다크 모드 대응이 되어있고, cardID 가 없는 모든 경우에 snapshot 부터 엠티뷰가 보여지도록 하였습니다.

참고
placeholder, snapshot, timeline 의 경우가 어떤 시점인지 궁금해서 UI 로 확인해보았습니다.

https://gyuios.tistory.com/270

🚨 참고사항

  • 위젯 뷰에 들어가는 이미지의 사이즈가 일정 수준을 넘어가면 호환되지 않는다고 하네요..! 저희는 배경사진을 327 * 540 로 일정하게 설정하니깐 별 문제 없을 것 같습니당

스크린샷 2023-02-18 오전 1 27 28

📸 스크린샷

기능 스크린샷
내 명함 x
내 명함 o

📮 관련 이슈

- 타겟 멤버쉽도 수정. intent extension 과 widget extension 설정.
- Mock data 에서 cardID 를 가지고 유저네임과 이미지를 가져오면 되기 때문에 불필요하다고 판단하고 제거.
- 그러면서 IntentHandler 에서도 다루지 않음.
- 이미지를 전달하는 방식에 대해서 고민해보고 삭제할 예정입니다.
- 내 명함이 없다면 선택목록은 빈 배열을 넘기고, 기본값은 nil 로 지정할 예정.
- Card 데이터모델의 전역변수를 사용하여 탐색 중이지만, todo 주석처럼 고려할 예정.
- placeholder 가 되어줄 더미 데이터가 필요해서 디자인 파트와 협의하여 길이를 설정.
- cardID 로 내 명함 정보를 가져와서 WidgetCard 데이터 모델을 생성해서 전달.
- 내 명함을 생성하지 않은 경우. 즉, cardID 가 없을 때는 nil 전달되기 때문에 else 문에서 대응 해줌.
- 5시간을 1시간 간격으로 내 명함의 정보를 갱신.(추후에 수정 기능이 추가될 수 있기 때문에 timeline 의 plicy 를 never 로 설정하지 않음.
- 다크 모드 대응
- entry 의 widgetCard 가 nil. 즉, 내 명함이 생성되지 않은 경우는 엠티뷰를 표시.
- 동적인 선택목록을 설정.
- kind 설정.
- 설명 작성.
- widget family 설정.
- 프리뷰에 엠티뷰, 위젯 두 가지 모두 볼 수 있도록 설정.
@hyun99999 hyun99999 added Hyungyu 🐯 현규 교수님 작업 P1 / Priority High 우선순위 높음 Feat 새로운 기능 구현 labels Feb 17, 2023
Copy link
Member

@dlwns33 dlwns33 left a comment

Choose a reason for hiding this comment

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

수고하셨습니다...
근데 제가 위젯 관련 파일을 풀 받고 난 다음에 워닝이 120개정도 뜨는데 일단 돌아가기는 해서 워닝 해결 안하고 머지는 했습니다... 한번 체크해보겠습니다...

@hyun99999 hyun99999 merged commit 0f88244 into TeamNADA:develop Feb 28, 2023
@hyun99999 hyun99999 deleted the feature/#366 branch February 28, 2023 14:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feat 새로운 기능 구현 Hyungyu 🐯 현규 교수님 작업 P1 / Priority High 우선순위 높음
Projects
None yet
Development

Successfully merging this pull request may close these issues.

feat: 내 명함 목록을 선택할 수 있는 Configurable Widget 추가
2 participants