-
Notifications
You must be signed in to change notification settings - Fork 50
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
동기화 메모장 [STEP3] 호박, 아리 #90
Conversation
- updateNoteData 메서드에서 메모데이터를 딕셔너리로 가공하여 updateNote의 인자로 넣어 호출하도록 수정
- AppDelegate 내부에 DropboxClient 인스턴스 초기화 - info.plist 순서, 들여쓰기 수정 - SceneDelegate 내부에 리디렉션 추가 - NotesViewController 내부에 로그인을 통해 인증을 시작할 수 있는 기능 추가
- authorize 메서드 DropBoxManager로 이동 - upload 기능 추가
- upload시 덮어쓰기가 가능하도록 메소드를 변경하여 리팩토링 - download 메소드 추가
- Dropbox Redirection 내부에 로그인 성공 시 download 하도록 구현 - download 메서드에 다운로드가 완료되었을때 tableview를 reload해주기 위해 파라미터 추가 - download 메서드에 다운로드가 완료되었는지 추적하기 위해 DispatchGroup 추가
- SceneDelegate 내부에 인증을 실패하거나 캔슬해도 ActivityIndicator가 멈추도록 로직 추가 - NotesViewController에 UIActivityIndicatorView를 추가 - UIActivityIndicatorView를 멈추게 하는 stopActivityIndicator 메소드 구현 - activityIndicator가 animating 일 때는 터치가 활성화 되지 않도록 구현 - dismissKeyboard()가 호출될 때 마다 Dropbox에 업로드할 수 있도록 구현 - Dropbox 로그인을 성공해서 다운로드가 완료되면 stopActivityIndicator() 메소드를 호출하도록 추가
- DropboxManager 타입 접근제어 설정 - 네이밍 수정 (scope -> scopes, url -> applicationSupportDirectoryURl, DropBoxManager -> DropboxManager)
- 줄바꿈 컨벤션 수정 - 불필요한 print문 제거
- download 메서드 파라미터 수정 및 에러처리 - UIViewController extension의 showAlert 메서드 기본값 추가 및 overload 메서드 추가 - SceneDelegate의 scene(openURLContexts)메서드에서 authResult의 따른 오류처리 개선
- 에러처리에 따른 DropboxError 타입 생성 - download 메소드를 사용하는 곳에서 에러처리를 할 수 있도록 로직 구현
- upload 메서드 호출할 때 반환타입인 Result타입에 대한 처리
- Note?를 반환하여 사용하고 있지 않아 불필요한 부분을 제거하여 개선
- setEditing 메서드에 있던 if문 내부 로직을 deleteCell 메서드로 이동 - DropboxError 타입 failureUpaload 케이스 추가하여 upload 에러시 처리하도록 수
showNoteDetailView() | ||
} | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
View에서 바로 띄워주어야 하는 경우가 생길 수 있는데 그런 경우에 해당 코드를 사용하려면 어떻게 될까요? 인자로 받지 않아도 최 상위에 띄워줄 수 있도록 로딩 컨트롤러를 수정하는것도 방법인것 같아요.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
UIApplication.shared.windows.first?.rootViewController
이런식으로 접근해서 최상위뷰를 찾고, 거기서 present해주는 방법을 찾았는데, 이게 적절한건지 잘 모르겠어요.
if let error = error { | ||
print(error) | ||
hasErrorOccured = true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
에러처리에 대해 질문 주셨는데, 드롭박스 내부 CallError Type에 대하여 정의가 다 되어 있고, 해당 case별로 모두 에러처리를 한다면 에러 처리에 대한 보일러플레이트 코드가 다수 여러군데 발생 될 것이라 말씀드렸었습니다.
해당 문제에 대해서 어떻게 처리하면 좋을지 한번 생각해봐 주세요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
네! 말씀 주신대로 보일러 플레이트 코드 발생도 그렇고...
지금 프로젝트에서는 일일히 에러처리를 해주지 않아도 괜찮겠다는 판단이 들어서 이 상태로 유지하기로 했습니다!
호박 아리 안녕하세요. step3 까지 지나가다니 정말 열심히 하시네요 :) 기존에 view.isUserInteractionEnabled 를 이용한 터치 금지 대신 indicatorView가 포함된 ViewController로 만들어 보라고 공유드렸던 부분도 생각만큼은 아니지만 잘 적용하신 것 같네요! 그 외에 setEditing 내부 분리해야 할 로직 수정, Result 타입을 이용한 네트워크 통신과 불필요한 @discardableResult 제거 등 사전에 올려주신 PR에 대한 리뷰들을 모두 수정해 주셨네요! Step4 에서는 서치바를 추가하신다고 하셨는데 기대해 볼게요 👍 |
안녕하세요. 웨더! @SungPyo
호박 @hoBahk 아리 @leeari95 입니다!
STEP3 요구사항 모두 구현하여 PR 보내드립니다.
저번 온라인 리뷰때 뭔가 시야가 탁...트인... 그런 시원~~한 기분을 맛보았어요. 덕분에 많이 배워갑니다. 🤩
이번에도 부족한 점이나 놓친 부분이 있다면 한번 더 짚어주시면 감사하겠습니다. 🙇🏻♀️
고민했던 점
1. 업로드 시점
2. 다운로드의 시점
3. 다운로드가 진행중일 때 뷰의 상태
궁금했던 것 / 조언이 필요한 점
1. 업로드 시점이 괜찮은지
2. 강제종료 되었을 때 대처할 수 있는 방법
이번 피드백도 잘 부탁드리겠습니다~ 😁🙏🏻