-
Notifications
You must be signed in to change notification settings - Fork 70
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
[Team-11] 새로운 이슈 만들기 기능 추가, DIContainer 에 대한 고찰 #243
Open
Jinsujin
wants to merge
69
commits into
codesquad-members-2022:team-11
Choose a base branch
from
Jinsujin:develop
base: team-11
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 1 commit
Commits
Show all changes
69 commits
Select commit
Hold shift + click to select a range
aea9a63
[Jinsujin/issue-tracker#20] Feat: 새 이슈 생성 시 선택 옵션을 Option enum으로 분리
bibi6666667 ed0be9c
[Jinsujin/issue-tracker#20] Feat: 새 이슈 생성 시 저장소 선택 화면 구현
bibi6666667 3611e1a
[Jinsujin/issue-tracker#20] Fix: issue list api
Jinsujin 3c6694a
[Jinsujin/issue-tracker#20] Feat: Repository 엔티티 추가 및 repository 요청 코…
bibi6666667 7753233
Merge branch 'feat#20' of https://github.com/Jinsujin/issue-tracker i…
Jinsujin 60069e4
[Jinsujin/issue-tracker#20] Feat: OptionSelectViewController 생성을 Cont…
bibi6666667 fb53b06
[Jinsujin/issue-tracker#20] Refactor: Container에서 OptionSelectViewCon…
bibi6666667 a17829e
[Jinsujin/issue-tracker#20] Feat: 새 이슈 생성 시 API 요청하여 Repository 불러오기 …
bibi6666667 d14a0d7
[Jinsujin/issue-tracker#20] Feat: 이슈 만들기 버튼과 API 연결
Jinsujin 09d8f7e
[Jinsujin/issue-tracker#20] Feat: 새 이슈 생성 기능 구현
bibi6666667 b425f41
[Jinsujin/issue-tracker#20] chore: 불필요한 코드 및 주석 제거
bibi6666667 547ac43
[Jinsujin/issue-tracker#24] Ref: 옵션 선택하는 화면에서 API 를 호출하도록 수정
Jinsujin d494374
[Jinsujin/issue-tracker#24] Ref: 선택한 아이템을 이전화면으로 넘길때 리스트에서 option 을 찾…
Jinsujin 43aefc6
[Jinsujin/issue-tracker#24] Feat: 로그인 후, 첫 화면을 repo list 로 변경
Jinsujin e24536b
[Jinsujin/issue-tracker#24] Feat: 이슈 목록을 불러올때, issue tab 에서 생성한 이슈만 가…
Jinsujin c200084
Ref: Container 가 token 을 주입받도록 수정
Jinsujin a30d281
Ref: Container 에서 ViewController 인스턴스 생성시, token 을 주입하도록 함
Jinsujin 4ec1a9f
Feat: 레포지토리 리스트 화면에서의 Model 생성과 연결
Jinsujin 48e7ceb
Ref: navigation 의 largetitle 설정
Jinsujin 94700a7
[Jinsujin/issue-tracker] Feat: NewIssueModel 계층 추가
bibi6666667 f4b1f07
[Jinsujin/issue-tracker] chore: 불필요한 코드 및 주석 삭제
bibi6666667 3200b4f
[Jinsujin/issue-tracker] OptionSelectModel 계층 추가
bibi6666667 bc006c4
[Jinsujin/issue-tracker] Feat: 새 이슈 생성 시 Label 붙이는 기능 추가
bibi6666667 5e8b77a
Feat: 선택한 옵션이 무엇인지에 따라서 다른데이터를 불러오도록 수정
Jinsujin d2675b2
Feat: assignees 를 불러오는 API작업중
Jinsujin b398019
[Jinsujin/issue-tracker] Feat: 새 이슈 생성 시 해당 저장소에 대한 Assignee 조회 구현
bibi6666667 b86ec49
[Jinsujin/issue-tracker] Feat: 제목, 내용, label, milestone, assignee를 포함…
bibi6666667 1ddb879
[Jinsujin/issue-tracker] 불필요한 코드, 주석 삭제 및 파일 분리
bibi6666667 d5c4855
Ref: GithubUserDefaults 의 static 제거
Jinsujin 709b78b
Ref: Repos 바인딩을 Container 에 하도록 변경
Jinsujin cf39c51
Doc: readme.md 업뎃
Jinsujin 94f6cb2
[Jinsujin/issue-tracker] #28 Container의 의존성을 관리하는 ContainerEnvironmen…
bibi6666667 2cf9ed0
[Jinsujin/issue-tracker #28] ReposModel의 의존성인 IssueService.requestRep…
bibi6666667 c5bca22
Revert "[Jinsujin/issue-tracker #28] ReposModel의 의존성인 IssueService.re…
bibi6666667 f1dc0ce
[Jinsujin/issue-tracker #28] ReposModel의 의존성인 IssueService.requestRep…
bibi6666667 d791820
[Jinsujin/issue-tracker] #28 IssueModel이 service 전체를 받지 않고, service에서…
bibi6666667 aaf1c2f
[Jinsujin/issue-tracker] #28 Feat: NewIssueModel에 service 전체 대신, 필요한 …
bibi6666667 7e9b7ba
[Jinsujin/issue-tracker] #28 Feat: OptionSelect에서 사용하는 service의 메서드들을…
bibi6666667 3dce5a4
[Jinsujin/issue-tracker] #28 Refactor: LoginVC와 LoginModel 분리 및 OAuth…
bibi6666667 2aa67de
[Jinsujin/issue-tracker] #28 Refactor: IssueVC 생성 시 필요한 작업을 viewDidLo…
bibi6666667 da4fa97
[Jinsujin/issue-tracker] #28 Refactor: OptionSelectVC 생성 시 필요한 설정 부분을…
bibi6666667 4d2672b
Merge branch 'develop' into bibi/refactor
bibi6666667 a54d231
Merge pull request #29 from Jinsujin/bibi/refactor
bibi6666667 7eb9168
Feat : AppDelegate를 위한 코디네이터인 AppCoordinator 생성 및 실행 시점 rootVC 판단 로직 분리
bibi6666667 50e1cb4
Feat: Container에 register, resolve 패턴 적용해 Login/Repos 화면 전환
bibi6666667 c43f970
Feat: ReposVC에 코디네이터와 컨테이너 적용
bibi6666667 7bf8c02
Feat: ReposViewController를 보여줄 때 ReposCoordinator를 사용하도록 변경
bibi6666667 1065a7b
Feat: IssueViewController 화면 흐름을 관리하는 IssueCoordinator 추가 #28
bibi6666667 93724ce
Feat: NewIssueViewController를 관리하는 NewIssueCoordinator 추가 및 새 이슈 생성에 …
bibi6666667 300373e
Feat: 모든 뷰컨에 coordinator 프로퍼티 추가 및 NewIssue 생성 시 뒤로가기 동작 구현 #28
bibi6666667 7170c83
Feat: OptionSelectViewController를 관리하는 OptionSelectCoordinator 추가 #28
bibi6666667 9f80da2
Feat : coordinator생성 시 register한 뒤, childCoordinators 관리할 때 활용 #28
bibi6666667 e3a03eb
Feat : 이슈생성, 옵션선택 후 coordinator에서 이전 화면으로 되돌아가며 reload호출 (동작하지 않음) #28
bibi6666667 c94cb85
Feat : OptionSelectVC를 coordinator로 연결 - 옵션마다 다른 화면 생성 #28
bibi6666667 6f7ac28
Merge branch 'bibi/refactor' of https://github.com/Jinsujin/issue-tra…
bibi6666667 7e2c599
Feat : 이슈 생성 요청과 이슈목록 요청 사이에 딜레이 추가, 받아온 이슈에 새로 생성한 이슈가 없다면 재요청 #28
bibi6666667 cf7c960
Chore : 미사용 메서드와 주석 삭제 #28
bibi6666667 00867fb
Chore : 불필요한 주석 및 코드 삭제 #28
bibi6666667 5865265
refactor: ViewController deinit이 호출되지 않는 문제 디버깅 #28
bibi6666667 75a66ca
refactor: 변수명을 적절하게 수정 #28
bibi6666667 264ed97
refactor: 불필요한 self 키워드 삭제 #28
bibi6666667 d37d8c9
refactor: 이슈 생성 요청 이후 새 이슈가 생성되었는지 확인한 다음 이슈 목록으로 되돌아가도록 변경 (뷰 미완성) #28
bibi6666667 55b3b87
refactor : 새 이슈 생성 -> 이슈 조회 흐름 수정. #28
bibi6666667 0d2db84
debug : 로그인 직후 앱으로 돌아왔을 때 저장소 목록이 나오지 않는 현상 디버깅(해결) #28
bibi6666667 6e2fcec
refactor : Container에서 뷰컨트롤러와 관련 코디네이터를 묶어 관리하고 삭제 작업도 처리하도록 변경 #28
bibi6666667 448b9dd
refactor : 뷰컨트롤러와 관련 코디네이터 이름을 담은 ViewControllerCoordinator 열거형을 사용해 …
bibi6666667 f44007b
chore : 불필요한 주석 및 print문 삭제 #28
bibi6666667 c5d1b0b
debug : IssueService 초기화를 위해 토큰 기본값을 넘기는 대신 옵셔널로 타입 수정 #28
bibi6666667 13517eb
Merge pull request #31 from Jinsujin/bibi/refactor
bibi6666667 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,15 +9,19 @@ import Foundation | |
|
||
class NewIssueModel { | ||
|
||
private let service: IssueService | ||
private let environment: NewIssueModelEnvironment | ||
|
||
init(service: IssueService) { | ||
self.service = service | ||
init(environment: NewIssueModelEnvironment) { | ||
self.environment = environment | ||
} | ||
|
||
func createIssue(title: String, repo: Repository, content: String, label: Label?, milestone: Milestone?, assignee: Assignee?, completion: @escaping (Bool) -> Void) { | ||
service.createIssue(title: title, repo: repo, content: content, label: label, milestone: milestone, assignee: assignee) { boolResult in | ||
environment.createIssue(title, repo, content, label, milestone, assignee) { boolResult in | ||
completion(boolResult) | ||
} | ||
} | ||
} | ||
|
||
struct NewIssueModelEnvironment { | ||
let createIssue: (String, Repository, String, Label?, Milestone?, Assignee?, @escaping (Bool) -> Void) -> Void | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 타입이 길어지기 시작하면 typealias를 사용하셔서 의미를 부여하면 좋을 거 같습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아니면 의미가 있는 모델로 묶는 방법도 있습니다. |
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
클로저 주입할때, 놓치기 쉬운 부분입니다.
해당 Environment를 생서할 때, 보이지 않게 self.environment를 주입한 시점입니다.
즉 self를 강하게 캡쳐시켰기 때문에 리테인 사이클이 발생합니다.