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

[Team-11] 새로운 이슈 만들기 기능 추가, DIContainer 에 대한 고찰 #243

Open
wants to merge 69 commits into
base: team-11
Choose a base branch
from
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 Jun 27, 2022
ed0be9c
[Jinsujin/issue-tracker#20] Feat: 새 이슈 생성 시 저장소 선택 화면 구현
bibi6666667 Jun 27, 2022
3611e1a
[Jinsujin/issue-tracker#20] Fix: issue list api
Jinsujin Jun 27, 2022
3c6694a
[Jinsujin/issue-tracker#20] Feat: Repository 엔티티 추가 및 repository 요청 코…
bibi6666667 Jun 27, 2022
7753233
Merge branch 'feat#20' of https://github.com/Jinsujin/issue-tracker i…
Jinsujin Jun 27, 2022
60069e4
[Jinsujin/issue-tracker#20] Feat: OptionSelectViewController 생성을 Cont…
bibi6666667 Jun 27, 2022
fb53b06
[Jinsujin/issue-tracker#20] Refactor: Container에서 OptionSelectViewCon…
bibi6666667 Jun 28, 2022
a17829e
[Jinsujin/issue-tracker#20] Feat: 새 이슈 생성 시 API 요청하여 Repository 불러오기 …
bibi6666667 Jun 28, 2022
d14a0d7
[Jinsujin/issue-tracker#20] Feat: 이슈 만들기 버튼과 API 연결
Jinsujin Jun 28, 2022
09d8f7e
[Jinsujin/issue-tracker#20] Feat: 새 이슈 생성 기능 구현
bibi6666667 Jun 29, 2022
b425f41
[Jinsujin/issue-tracker#20] chore: 불필요한 코드 및 주석 제거
bibi6666667 Jun 29, 2022
547ac43
[Jinsujin/issue-tracker#24] Ref: 옵션 선택하는 화면에서 API 를 호출하도록 수정
Jinsujin Jun 29, 2022
d494374
[Jinsujin/issue-tracker#24] Ref: 선택한 아이템을 이전화면으로 넘길때 리스트에서 option 을 찾…
Jinsujin Jun 29, 2022
43aefc6
[Jinsujin/issue-tracker#24] Feat: 로그인 후, 첫 화면을 repo list 로 변경
Jinsujin Jun 29, 2022
e24536b
[Jinsujin/issue-tracker#24] Feat: 이슈 목록을 불러올때, issue tab 에서 생성한 이슈만 가…
Jinsujin Jun 29, 2022
c200084
Ref: Container 가 token 을 주입받도록 수정
Jinsujin Jun 30, 2022
a30d281
Ref: Container 에서 ViewController 인스턴스 생성시, token 을 주입하도록 함
Jinsujin Jun 30, 2022
4ec1a9f
Feat: 레포지토리 리스트 화면에서의 Model 생성과 연결
Jinsujin Jun 30, 2022
48e7ceb
Ref: navigation 의 largetitle 설정
Jinsujin Jun 30, 2022
94700a7
[Jinsujin/issue-tracker] Feat: NewIssueModel 계층 추가
bibi6666667 Jun 30, 2022
f4b1f07
[Jinsujin/issue-tracker] chore: 불필요한 코드 및 주석 삭제
bibi6666667 Jun 30, 2022
3200b4f
[Jinsujin/issue-tracker] OptionSelectModel 계층 추가
bibi6666667 Jun 30, 2022
bc006c4
[Jinsujin/issue-tracker] Feat: 새 이슈 생성 시 Label 붙이는 기능 추가
bibi6666667 Jun 30, 2022
5e8b77a
Feat: 선택한 옵션이 무엇인지에 따라서 다른데이터를 불러오도록 수정
Jinsujin Jun 30, 2022
d2675b2
Feat: assignees 를 불러오는 API작업중
Jinsujin Jun 30, 2022
b398019
[Jinsujin/issue-tracker] Feat: 새 이슈 생성 시 해당 저장소에 대한 Assignee 조회 구현
bibi6666667 Jul 1, 2022
b86ec49
[Jinsujin/issue-tracker] Feat: 제목, 내용, label, milestone, assignee를 포함…
bibi6666667 Jul 1, 2022
1ddb879
[Jinsujin/issue-tracker] 불필요한 코드, 주석 삭제 및 파일 분리
bibi6666667 Jul 1, 2022
d5c4855
Ref: GithubUserDefaults 의 static 제거
Jinsujin Jul 8, 2022
709b78b
Ref: Repos 바인딩을 Container 에 하도록 변경
Jinsujin Jul 8, 2022
cf39c51
Doc: readme.md 업뎃
Jinsujin Jul 8, 2022
94f6cb2
[Jinsujin/issue-tracker] #28 Container의 의존성을 관리하는 ContainerEnvironmen…
bibi6666667 Jul 19, 2022
2cf9ed0
[Jinsujin/issue-tracker #28] ReposModel의 의존성인 IssueService.requestRep…
bibi6666667 Jul 19, 2022
c5bca22
Revert "[Jinsujin/issue-tracker #28] ReposModel의 의존성인 IssueService.re…
bibi6666667 Jul 20, 2022
f1dc0ce
[Jinsujin/issue-tracker #28] ReposModel의 의존성인 IssueService.requestRep…
bibi6666667 Jul 19, 2022
d791820
[Jinsujin/issue-tracker] #28 IssueModel이 service 전체를 받지 않고, service에서…
bibi6666667 Jul 21, 2022
aaf1c2f
[Jinsujin/issue-tracker] #28 Feat: NewIssueModel에 service 전체 대신, 필요한 …
bibi6666667 Jul 21, 2022
7e9b7ba
[Jinsujin/issue-tracker] #28 Feat: OptionSelect에서 사용하는 service의 메서드들을…
bibi6666667 Jul 21, 2022
3dce5a4
[Jinsujin/issue-tracker] #28 Refactor: LoginVC와 LoginModel 분리 및 OAuth…
bibi6666667 Jul 22, 2022
2aa67de
[Jinsujin/issue-tracker] #28 Refactor: IssueVC 생성 시 필요한 작업을 viewDidLo…
bibi6666667 Jul 25, 2022
da4fa97
[Jinsujin/issue-tracker] #28 Refactor: OptionSelectVC 생성 시 필요한 설정 부분을…
bibi6666667 Jul 25, 2022
4d2672b
Merge branch 'develop' into bibi/refactor
bibi6666667 Jul 25, 2022
a54d231
Merge pull request #29 from Jinsujin/bibi/refactor
bibi6666667 Aug 9, 2022
7eb9168
Feat : AppDelegate를 위한 코디네이터인 AppCoordinator 생성 및 실행 시점 rootVC 판단 로직 분리
bibi6666667 Aug 9, 2022
50e1cb4
Feat: Container에 register, resolve 패턴 적용해 Login/Repos 화면 전환
bibi6666667 Aug 11, 2022
c43f970
Feat: ReposVC에 코디네이터와 컨테이너 적용
bibi6666667 Aug 16, 2022
7bf8c02
Feat: ReposViewController를 보여줄 때 ReposCoordinator를 사용하도록 변경
bibi6666667 Aug 19, 2022
1065a7b
Feat: IssueViewController 화면 흐름을 관리하는 IssueCoordinator 추가 #28
bibi6666667 Aug 31, 2022
93724ce
Feat: NewIssueViewController를 관리하는 NewIssueCoordinator 추가 및 새 이슈 생성에 …
bibi6666667 Aug 31, 2022
300373e
Feat: 모든 뷰컨에 coordinator 프로퍼티 추가 및 NewIssue 생성 시 뒤로가기 동작 구현 #28
bibi6666667 Aug 31, 2022
7170c83
Feat: OptionSelectViewController를 관리하는 OptionSelectCoordinator 추가 #28
bibi6666667 Aug 31, 2022
9f80da2
Feat : coordinator생성 시 register한 뒤, childCoordinators 관리할 때 활용 #28
bibi6666667 Sep 2, 2022
e3a03eb
Feat : 이슈생성, 옵션선택 후 coordinator에서 이전 화면으로 되돌아가며 reload호출 (동작하지 않음) #28
bibi6666667 Sep 2, 2022
c94cb85
Feat : OptionSelectVC를 coordinator로 연결 - 옵션마다 다른 화면 생성 #28
bibi6666667 Sep 2, 2022
6f7ac28
Merge branch 'bibi/refactor' of https://github.com/Jinsujin/issue-tra…
bibi6666667 Sep 2, 2022
7e2c599
Feat : 이슈 생성 요청과 이슈목록 요청 사이에 딜레이 추가, 받아온 이슈에 새로 생성한 이슈가 없다면 재요청 #28
bibi6666667 Sep 5, 2022
cf7c960
Chore : 미사용 메서드와 주석 삭제 #28
bibi6666667 Sep 5, 2022
00867fb
Chore : 불필요한 주석 및 코드 삭제 #28
bibi6666667 Sep 6, 2022
5865265
refactor: ViewController deinit이 호출되지 않는 문제 디버깅 #28
bibi6666667 Sep 15, 2022
75a66ca
refactor: 변수명을 적절하게 수정 #28
bibi6666667 Sep 15, 2022
264ed97
refactor: 불필요한 self 키워드 삭제 #28
bibi6666667 Sep 15, 2022
d37d8c9
refactor: 이슈 생성 요청 이후 새 이슈가 생성되었는지 확인한 다음 이슈 목록으로 되돌아가도록 변경 (뷰 미완성) #28
bibi6666667 Sep 15, 2022
55b3b87
refactor : 새 이슈 생성 -> 이슈 조회 흐름 수정. #28
bibi6666667 Sep 16, 2022
0d2db84
debug : 로그인 직후 앱으로 돌아왔을 때 저장소 목록이 나오지 않는 현상 디버깅(해결) #28
bibi6666667 Sep 21, 2022
6e2fcec
refactor : Container에서 뷰컨트롤러와 관련 코디네이터를 묶어 관리하고 삭제 작업도 처리하도록 변경 #28
bibi6666667 Sep 22, 2022
448b9dd
refactor : 뷰컨트롤러와 관련 코디네이터 이름을 담은 ViewControllerCoordinator 열거형을 사용해 …
bibi6666667 Sep 22, 2022
f44007b
chore : 불필요한 주석 및 print문 삭제 #28
bibi6666667 Sep 22, 2022
c5d1b0b
debug : IssueService 초기화를 위해 토큰 기본값을 넘기는 대신 옵셔널로 타입 수정 #28
bibi6666667 Sep 26, 2022
13517eb
Merge pull request #31 from Jinsujin/bibi/refactor
bibi6666667 Sep 30, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Ref: GithubUserDefaults 의 static 제거
Jinsujin committed Jul 8, 2022
commit d5c48558655c14cbd8e1788e44de5baac0d4d799
13 changes: 8 additions & 5 deletions IssueTracker/IssueTracker/AppDelegate.swift
Original file line number Diff line number Diff line change
@@ -13,7 +13,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

let container = Container(token: GithubUserDefaults.getToken())
private let githubUserDefaults = GithubUserDefaults()
var container: Container?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// TODO: - 토큰 유효기간 판단
@@ -22,8 +23,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
// UserDefaults.토큰이저장된시간 > 1일
// { 다시 로그인을 해야된다고 판단 => UerDefaults.token 삭제 }

container = Container(token: githubUserDefaults.getToken())

self.window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = container.buildRootViewController()
window?.rootViewController = container?.buildRootViewController()
window?.makeKeyAndVisible()
return true
}
@@ -34,9 +37,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
// TODO: 로그인 실패 얼럿띄우기
return
}
GithubUserDefaults.setToken(token)
self?.container.setToken(token)
self?.window?.rootViewController = self?.container.buildRootViewController()
self?.githubUserDefaults.setToken(token)
self?.container?.setToken(token)
self?.window?.rootViewController = self?.container?.buildRootViewController()
}
return true
}
2 changes: 1 addition & 1 deletion IssueTracker/IssueTracker/Issue/IssueViewController.swift
Original file line number Diff line number Diff line change
@@ -74,7 +74,7 @@ final class IssueViewController: UIViewController {
guard let appdelegate = UIApplication.shared.delegate as? AppDelegate else {

Choose a reason for hiding this comment

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

이슈 뷰컨트롤러에서 앱에서 단하나만 존재하는 앱델리게이트 객체를 오브젝트화 시키고 있습니다.
윈도우를 넘기셨을때 드렸던 피드백이 기억나실까요??
해당 접근은 제 기준에서, 너무나도 많이 위험해보입니다.

Choose a reason for hiding this comment

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

음.. 앱델리게이트는 앱이 죽을때까지 살아있는데 그걸 오브젝트로 만들어서 위험하겠군요.ㅠㅠ
Container를 하나만 만들고, 만들어 둔 곳에서 참조해서 쓰려고 이런 식으로 접근했는데 다른 방법을 찾아보겠습니다.

return
}
guard let viewController = appdelegate.container.buildViewController(.newIssue(repo: repo)) as? NewIssueViewController else {
guard let viewController = appdelegate.container?.buildViewController(.newIssue(repo: repo)) as? NewIssueViewController else {
return
}
self.navigationController?.pushViewController(viewController, animated: true)
Original file line number Diff line number Diff line change
@@ -189,7 +189,7 @@ extension NewIssueViewController: UITableViewDelegate {
guard let appdelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
guard let viewController = appdelegate.container.buildViewController(.optionSelect(option: option, repo: repo)) as? OptionSelectViewController else {
guard let viewController = appdelegate.container?.buildViewController(.optionSelect(option: option, repo: repo)) as? OptionSelectViewController else {
return
}
self.navigationController?.pushViewController(viewController, animated: true)
2 changes: 1 addition & 1 deletion IssueTracker/IssueTracker/Repos/ReposViewController.swift
Original file line number Diff line number Diff line change
@@ -53,7 +53,7 @@ extension ReposViewController: UITableViewDelegate {
guard let appdelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
guard let viewController = appdelegate.container.buildViewController(.issue( selectedRepo: selectedItem)) as? IssueViewController else {
guard let viewController = appdelegate.container?.buildViewController(.issue( selectedRepo: selectedItem)) as? IssueViewController else {
return
}
self.navigationController?.pushViewController(viewController, animated: true)
6 changes: 3 additions & 3 deletions IssueTracker/IssueTracker/Storage/GithubUserDefaults.swift
Original file line number Diff line number Diff line change
@@ -2,13 +2,13 @@ import Foundation

struct GithubUserDefaults {

private static let key = "github_access_token"
private let key = "github_access_token"

static func setToken(_ token: String) {
func setToken(_ token: String) {
UserDefaults.standard.set(token, forKey: key)
}

static func getToken() -> String? {
func getToken() -> String? {
return UserDefaults.standard.string(forKey: self.key)
}
}