Skip to content

Commit 1311669

Browse files
committed
Merge branch 'release/v1.2.0'
2 parents 701424a + 7236729 commit 1311669

18 files changed

+409
-88
lines changed

GitTime.xcodeproj/project.pbxproj

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@
109109
B269744A22BB1F8D00F67129 /* EmptyTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B269744922BB1F8D00F67129 /* EmptyTypes.swift */; };
110110
B269744C22BB214000F67129 /* EmptyTableViewCellReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B269744B22BB214000F67129 /* EmptyTableViewCellReactor.swift */; };
111111
B272B2DE22F33AA00054FD15 /* GitHubAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B272B2DD22F33AA00054FD15 /* GitHubAPITests.swift */; };
112+
B284DAE623AA3E17000F948F /* PanModalNaivgationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B284DAE523AA3E17000F948F /* PanModalNaivgationController.swift */; };
112113
B289A05A229CC12E00AD9533 /* CellType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B289A059229CC12E00AD9533 /* CellType.swift */; };
113114
B289A05C229CCD8300AD9533 /* Int+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B289A05B229CCD8300AD9533 /* Int+Extensions.swift */; };
114115
B289A05E229CD97B00AD9533 /* UITableView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B289A05D229CD97B00AD9533 /* UITableView+Extensions.swift */; };
@@ -296,6 +297,7 @@
296297
B269744922BB1F8D00F67129 /* EmptyTypes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmptyTypes.swift; sourceTree = "<group>"; };
297298
B269744B22BB214000F67129 /* EmptyTableViewCellReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmptyTableViewCellReactor.swift; sourceTree = "<group>"; };
298299
B272B2DD22F33AA00054FD15 /* GitHubAPITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GitHubAPITests.swift; sourceTree = "<group>"; };
300+
B284DAE523AA3E17000F948F /* PanModalNaivgationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PanModalNaivgationController.swift; sourceTree = "<group>"; };
299301
B289A059229CC12E00AD9533 /* CellType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CellType.swift; sourceTree = "<group>"; };
300302
B289A05B229CCD8300AD9533 /* Int+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Int+Extensions.swift"; sourceTree = "<group>"; };
301303
B289A05D229CD97B00AD9533 /* UITableView+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableView+Extensions.swift"; sourceTree = "<group>"; };
@@ -477,6 +479,7 @@
477479
children = (
478480
B228EAE3228D036700E55456 /* BaseViewController.swift */,
479481
B244F330229797A0003F24FF /* BaseNavigationController.swift */,
482+
B284DAE523AA3E17000F948F /* PanModalNaivgationController.swift */,
480483
B228EAE5228D037B00E55456 /* MainTabBarController.swift */,
481484
B237A5F222927C580069C59C /* MainTabBarReactor.swift */,
482485
B20F70D9229289FE00F42770 /* Splash */,
@@ -1199,6 +1202,7 @@
11991202
B228EADE228C0EEB00E55456 /* Payload.swift in Sources */,
12001203
B289A061229CDA9200AD9533 /* Reusable.swift in Sources */,
12011204
B2E72A9522A7AD6600F54399 /* SettingLogoutCell.swift in Sources */,
1205+
B284DAE623AA3E17000F948F /* PanModalNaivgationController.swift in Sources */,
12021206
B289B98922AA021F00F0A1E2 /* Constants.swift in Sources */,
12031207
B289A072229D3B1B00AD9533 /* LanguagesViewReactor.swift in Sources */,
12041208
B2BF8B9422B753C1007B2AAA /* ContributionSection.swift in Sources */,
@@ -1465,7 +1469,7 @@
14651469
buildSettings = {
14661470
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
14671471
CODE_SIGN_STYLE = Automatic;
1468-
CURRENT_PROJECT_VERSION = 8;
1472+
CURRENT_PROJECT_VERSION = 1;
14691473
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
14701474
DEVELOPMENT_TEAM = R46Q3HW9V3;
14711475
INFOPLIST_FILE = "GitTime/Supporting Files/Info.plist";
@@ -1474,6 +1478,7 @@
14741478
"$(inherited)",
14751479
"@executable_path/Frameworks",
14761480
);
1481+
MARKETING_VERSION = 1.2.0;
14771482
PRODUCT_BUNDLE_IDENTIFIER = io.github.87kangsw.GitTime;
14781483
PRODUCT_NAME = "$(TARGET_NAME)";
14791484
SWIFT_VERSION = 5.0;
@@ -1487,14 +1492,15 @@
14871492
buildSettings = {
14881493
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
14891494
CODE_SIGN_STYLE = Automatic;
1490-
CURRENT_PROJECT_VERSION = 8;
1495+
CURRENT_PROJECT_VERSION = 1;
14911496
DEVELOPMENT_TEAM = R46Q3HW9V3;
14921497
INFOPLIST_FILE = "GitTime/Supporting Files/Info.plist";
14931498
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
14941499
LD_RUNPATH_SEARCH_PATHS = (
14951500
"$(inherited)",
14961501
"@executable_path/Frameworks",
14971502
);
1503+
MARKETING_VERSION = 1.2.0;
14981504
PRODUCT_BUNDLE_IDENTIFIER = io.github.87kangsw.GitTime;
14991505
PRODUCT_NAME = "$(TARGET_NAME)";
15001506
SWIFT_VERSION = 5.0;

GitTime/Sources/Models/TrendDeveloper.swift

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
import Foundation
1010

1111
struct TrendDeveloper: ModelType {
12-
let userName: String
13-
let name: String?
14-
let url: String
15-
let profileURL: String
16-
let repo: TrendDeveloperRepo
12+
var userName: String
13+
var name: String?
14+
var url: String
15+
var profileURL: String
16+
var repo: TrendDeveloperRepo
1717

1818
enum CodingKeys: String, CodingKey {
1919
case userName = "username"
@@ -23,6 +23,19 @@ struct TrendDeveloper: ModelType {
2323
case repo
2424
}
2525

26+
init(userName: String,
27+
name: String?,
28+
url: String,
29+
profileURL: String,
30+
repo: TrendDeveloperRepo) {
31+
32+
self.userName = userName
33+
self.name = name
34+
self.url = url
35+
self.profileURL = profileURL
36+
self.repo = repo
37+
}
38+
2639
init(from decoder: Decoder) throws {
2740
let container = try decoder.container(keyedBy: CodingKeys.self)
2841
userName = try container.decode(String.self, forKey: .userName)
@@ -43,7 +56,7 @@ struct TrendDeveloper: ModelType {
4356
}
4457

4558
struct TrendDeveloperRepo: ModelType {
46-
let name: String?
47-
let url: String
48-
let description: String
59+
var name: String?
60+
var url: String
61+
var description: String
4962
}

GitTime/Sources/Models/TrendRepo.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
import Foundation
1010

1111
struct TrendRepo: ModelType {
12-
let author: String
13-
let name: String
14-
let url: String
15-
let description: String
16-
let language: String?
17-
let languageColor: String?
18-
let stars: Int
19-
let forks: Int
20-
let currentPeriodStars: Int
12+
var author: String
13+
var name: String
14+
var url: String
15+
var description: String
16+
var language: String?
17+
var languageColor: String?
18+
var stars: Int
19+
var forks: Int
20+
var currentPeriodStars: Int
2121
}

GitTime/Sources/Network/GitTimeCralwerAPI.swift

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,25 @@ enum GitTimeCrawlerAPI {
1313
case trendingRepositories(language: String?, period: String?)
1414
case trendingDevelopers(language: String?, period: String?)
1515
case fetchContributions(userName: String, darkMode: Bool)
16+
17+
case trendingRepositoriesRawdata(language: String?, period: String?)
18+
case tredingDevelopersRawdata(language: String?, period: String?)
19+
case fetchContributionsRawdata(userName: String, darkMode: Bool)
1620
}
1721

1822
extension GitTimeCrawlerAPI: TargetType {
1923
var baseURL: URL {
20-
return URL(string: "https://gittime-crawler.herokuapp.com")!
24+
switch self {
25+
case .trendingRepositoriesRawdata:
26+
return URL(string: "https://github.com")!
27+
case .tredingDevelopersRawdata:
28+
return URL(string: "https://github.com")!
29+
case .fetchContributionsRawdata:
30+
return URL(string: "https://github.com")!
31+
default:
32+
return URL(string: "https://gittime-crawler.herokuapp.com")!
33+
}
34+
2135
}
2236

2337
var path: String {
@@ -26,8 +40,15 @@ extension GitTimeCrawlerAPI: TargetType {
2640
return "/repositories"
2741
case .trendingDevelopers:
2842
return "/developers"
29-
case .fetchContributions(let userName, _):
43+
case let .fetchContributions(userName, _):
3044
return "/contribution/\(userName)"
45+
case .tredingDevelopersRawdata:
46+
return "/trending/developers"
47+
case .trendingRepositoriesRawdata:
48+
return "/trending"
49+
case let .fetchContributionsRawdata(userName, _):
50+
return "/\(userName)"
51+
3152
}
3253
}
3354

@@ -64,6 +85,31 @@ extension GitTimeCrawlerAPI: TargetType {
6485
var params: [String: Any] = [:]
6586
params["darkMode"] = darkMode
6687
return .requestParameters(parameters: params, encoding: URLEncoding.default)
88+
89+
case let .trendingRepositoriesRawdata(language, period):
90+
var params: [String: Any] = [:]
91+
if let language = language, !language.isEmpty {
92+
params["language"] = language
93+
}
94+
if let period = period, !period.isEmpty {
95+
params["since"] = period
96+
}
97+
98+
return .requestParameters(parameters: params, encoding: URLEncoding.default)
99+
100+
case let .tredingDevelopersRawdata(language, period):
101+
var params: [String: Any] = [:]
102+
103+
if let language = language, !language.isEmpty {
104+
params["language"] = language
105+
}
106+
if let period = period, !period.isEmpty {
107+
params["since"] = period
108+
}
109+
return .requestParameters(parameters: params, encoding: URLEncoding.default)
110+
case .fetchContributionsRawdata:
111+
let params: [String: Any] = [:]
112+
return .requestParameters(parameters: params, encoding: URLEncoding.default)
67113
}
68114
}
69115

GitTime/Sources/Services/GitTimeCrawlerService.swift

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,22 @@
77
//
88

99
import RxSwift
10+
import Moya
1011

1112
protocol GitTimeCrawlerServiceType: class {
1213
func fetchTrendingRepositories(language: String?, period: String?) -> Observable<[TrendRepo]>
1314
func fetchTrendingDevelopers(language: String?, period: String?) -> Observable<[TrendDeveloper]>
1415
func fetchContributions(userName: String) -> Observable<ContributionInfo>
16+
17+
func fetchTrendingRepositoriesRawdata(language: String?, period: String?) -> Observable<Response>
18+
func fetchTredingDevelopersRawdata(language: String?, period: String) -> Observable<Response>
19+
func fetchContributionsRawdata(userName: String) -> Observable<Response>
20+
1521
func fetchTrialContributions() -> Observable<ContributionInfo>
1622
}
1723

1824
class GitTimeCrawlerService: GitTimeCrawlerServiceType {
19-
25+
2026
fileprivate let networking: GitTimeProvider<GitTimeCrawlerAPI>
2127

2228
init(networking: GitTimeProvider<GitTimeCrawlerAPI>) {
@@ -48,6 +54,33 @@ class GitTimeCrawlerService: GitTimeCrawlerServiceType {
4854
.asObservable()
4955
}
5056

57+
func fetchTrendingRepositoriesRawdata(language: String?, period: String?) -> Observable<Response> {
58+
59+
return self.networking.request(.trendingRepositoriesRawdata(language: language,
60+
period: period))
61+
.asObservable()
62+
}
63+
64+
func fetchTredingDevelopersRawdata(language: String?, period: String) -> Observable<Response> {
65+
return self.networking.request(.tredingDevelopersRawdata(language: language,
66+
period: period))
67+
.asObservable()
68+
}
69+
70+
func fetchContributionsRawdata(userName: String) -> Observable<Response> {
71+
72+
var isDarkMode = false
73+
74+
if #available(iOS 13.0, *) {
75+
let style = UIScreen.main.traitCollection.userInterfaceStyle
76+
isDarkMode = style == .dark
77+
}
78+
79+
return self.networking.request(.fetchContributionsRawdata(userName: userName,
80+
darkMode: isDarkMode))
81+
.asObservable()
82+
}
83+
5184
func fetchTrialContributions() -> Observable<ContributionInfo> {
5285
var isDarkMode = false
5386
if #available(iOS 13.0, *) {

GitTime/Sources/Utils/Extensions/String+Extensions.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,9 @@ extension String {
2020
var localized: String {
2121
return NSLocalizedString(self, comment: "")
2222
}
23+
24+
var striped: String {
25+
return replacingOccurrences(of: "\n", with: "")
26+
.trimmingCharacters(in: .whitespacesAndNewlines)
27+
}
2328
}

GitTime/Sources/Utils/Extensions/UIViewController+Extensions.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@
66
// Copyright © 2019 KanzDevelop. All rights reserved.
77
//
88

9+
import SafariServices
910
import UIKit
1011

12+
import PanModal
13+
1114
extension UIViewController {
1215
static func instantiateByStoryboard<T>() -> T {
1316
let className = String(describing: self)
@@ -22,3 +25,14 @@ extension UIViewController {
2225
return BaseNavigationController(rootViewController: self)
2326
}
2427
}
28+
29+
// MARK: - Pan Modal
30+
extension UIViewController {
31+
func presentPanModalWeb(urlString: String) {
32+
guard let url = URL(string: urlString) else { return }
33+
34+
let safariVC = SFSafariViewController(url: url)
35+
let nav = PanModalNaivgationController(rootViewController: safariVC)
36+
presentPanModal(nav)
37+
}
38+
}

GitTime/Sources/ViewControllers/Activity/ActivityViewController.swift

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
// Copyright © 2019 KanzDevelop. All rights reserved.
77
//
88

9-
import SafariServices
109
import UIKit
1110

11+
import PanModal
1212
import ReactorKit
1313
import RxCocoa
1414
import RxDataSources
@@ -137,7 +137,7 @@ class ActivityViewController: BaseViewController, StoryboardView, ReactorBased {
137137
.releaseEvent(let reactor),
138138
.pullRequestReviewCommentEvent(let reactor),
139139
.publicEvent(let reactor):
140-
self.goToWebVC(urlString: reactor.currentState.event.openWebURL)
140+
self.presentPanModalWeb(urlString: reactor.currentState.event.openWebURL)
141141
}
142142
}).disposed(by: self.disposeBag)
143143

@@ -148,10 +148,5 @@ class ActivityViewController: BaseViewController, StoryboardView, ReactorBased {
148148
}
149149

150150
// MARK: Go To
151-
fileprivate func goToWebVC(urlString: String) {
152-
guard let url = URL(string: urlString) else { return }
153-
154-
let safariVC = SFSafariViewController(url: url)
155-
self.present(safariVC, animated: true, completion: nil)
156-
}
151+
157152
}

0 commit comments

Comments
 (0)