Skip to content

Commit 6311f2e

Browse files
authored
Merge pull request #200 from rootstrap/feature/migrate-network-layer
Use network layer from RSSwiftNetworking 1.1.0
2 parents d60993a + 0c9f569 commit 6311f2e

37 files changed

+198
-935
lines changed

Podfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use_frameworks!
33
inhibit_all_warnings!
44

55
target 'ios-base' do
6-
pod 'Alamofire', '~> 5.2.0'
6+
pod 'RSSwiftNetworking/AlamofireProvider', '~> 1.1.0'
77
pod 'IQKeyboardManagerSwift', '~> 6.1.1'
88
pod 'RSFontSizes', '~> 1.2.0'
99
pod 'R.swift', '~> 5.0.3'

Podfile.lock

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
PODS:
2-
- Alamofire (5.2.1)
2+
- Alamofire (5.2.0)
33
- Device (3.1.2)
44
- FBSDKCoreKit (5.5.0):
55
- FBSDKCoreKit/Basics (= 5.5.0)
@@ -106,11 +106,14 @@ PODS:
106106
- R.swift.Library (5.0.1)
107107
- RSFontSizes (1.2.0):
108108
- Device (~> 3.1.2)
109+
- RSSwiftNetworking/AlamofireProvider (1.1.0):
110+
- Alamofire (= 5.2.0)
111+
- RSSwiftNetworking/Core
112+
- RSSwiftNetworking/Core (1.1.0)
109113
- Swifter (1.5.0)
110114
- SwiftLint (0.43.1)
111115

112116
DEPENDENCIES:
113-
- Alamofire (~> 5.2.0)
114117
- FBSDKCoreKit (~> 5.5.0)
115118
- FBSDKLoginKit (~> 5.5.0)
116119
- Firebase/Analytics (~> 8.6.0)
@@ -119,6 +122,7 @@ DEPENDENCIES:
119122
- IQKeyboardManagerSwift (~> 6.1.1)
120123
- R.swift (~> 5.0.3)
121124
- RSFontSizes (~> 1.2.0)
125+
- RSSwiftNetworking/AlamofireProvider (~> 1.1.0)
122126
- Swifter (~> 1.5.0)
123127
- SwiftLint (~> 0.43.1)
124128

@@ -143,11 +147,12 @@ SPEC REPOS:
143147
- R.swift
144148
- R.swift.Library
145149
- RSFontSizes
150+
- RSSwiftNetworking
146151
- Swifter
147152
- SwiftLint
148153

149154
SPEC CHECKSUMS:
150-
Alamofire: e911732990610fe89af59ac0077f923d72dc3dfd
155+
Alamofire: c1ca147559e730bfb2182c8c7aafbdd90a867987
151156
Device: 62242076214c30fb5760174b3601cefafa70a481
152157
FBSDKCoreKit: 7ade9cfea30eef2f6cf105a1aa904f89ea68fb7d
153158
FBSDKLoginKit: bb28062f24e79590c44ba03297ca9bea4b6436d2
@@ -166,9 +171,10 @@ SPEC CHECKSUMS:
166171
R.swift: f5a87643b91ea569d23d6afb3eee9c743edde239
167172
R.swift.Library: cfe85d569d9bae6cb262922db130e7c3a7a5fad1
168173
RSFontSizes: 78158061f9f6121c6715f746395b1d8390fcb18b
174+
RSSwiftNetworking: 64b76bc39cbce96cd34476a6ce97f2caa164f9ed
169175
Swifter: e71dd674404923d7f03ebb03f3f222d1c570bc8e
170176
SwiftLint: 99f82d07b837b942dd563c668de129a03fc3fb52
171177

172-
PODFILE CHECKSUM: ad8b2fa0cef07782327d22c0570f1659eddad970
178+
PODFILE CHECKSUM: 0979596c2c2fa4d9f8b647d437a0550781538f1a
173179

174-
COCOAPODS: 1.11.2
180+
COCOAPODS: 1.11.3

ios-base.xcodeproj/project.pbxproj

+28-136
Large diffs are not rendered by default.

ios-base/AppDelegate.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
5656

5757
func unexpectedLogout() {
5858
UserDataManager.deleteUser()
59-
SessionManager.deleteSession()
59+
SessionManager.shared.deleteSession()
6060
// Clear any local data if needed
6161
// Take user to onboarding if needed, do NOT redirect the user
6262
// if is already in the landing to avoid losing the current VC stack state.

ios-base/Common/Models/Session.swift

+6-4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//
88

99
import Foundation
10+
import RSSwiftNetworking
1011

1112
struct Session: Codable {
1213
var uid: String?
@@ -31,12 +32,13 @@ struct Session: Codable {
3132
self.expiry = expires
3233
}
3334

34-
init?(headers: [String: Any]) {
35-
var loweredHeaders = headers
36-
loweredHeaders.lowercaseKeys()
37-
guard let stringHeaders = loweredHeaders as? [String: String] else {
35+
init?(headers: [AnyHashable: Any]) {
36+
guard var stringHeaders = headers as? [String: String] else {
3837
return nil
3938
}
39+
40+
stringHeaders.lowercaseKeys()
41+
4042
if let expiryString = stringHeaders[HTTPHeader.expiry.rawValue],
4143
let expiryNumber = Double(expiryString) {
4244
expiry = Date(timeIntervalSince1970: expiryNumber)

ios-base/Extensions/DataExtension.swift

-16
This file was deleted.

ios-base/Home/ViewModels/HomeViewModel.swift

+14-3
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,22 @@ class HomeViewModel {
2929
delegate?.didUpdateState(to: state)
3030
}
3131
}
32+
33+
private let userServices: UserServices
34+
private let authServices: AuthenticationServices
35+
36+
init(
37+
userServices: UserServices = UserServices(),
38+
authServices: AuthenticationServices = AuthenticationServices()
39+
) {
40+
self.userServices = userServices
41+
self.authServices = authServices
42+
}
3243

3344
func loadUserProfile() {
3445
state = .network(state: .loading)
3546

36-
UserServices.getMyProfile { [weak self] (result: Result<User, Error>) in
47+
userServices.getMyProfile { [weak self] (result: Result<User, Error>) in
3748
switch result {
3849
case .success(let user):
3950
self?.userEmail = user.email
@@ -47,7 +58,7 @@ class HomeViewModel {
4758
func logoutUser() {
4859
state = .network(state: .loading)
4960

50-
AuthenticationServices.logout { [weak self] result in
61+
authServices.logout { [weak self] result in
5162
switch result {
5263
case .success:
5364
self?.didlogOutAccount()
@@ -60,7 +71,7 @@ class HomeViewModel {
6071
func deleteAccount() {
6172
state = .network(state: .loading)
6273

63-
AuthenticationServices.deleteAccount { [weak self] result in
74+
authServices.deleteAccount { [weak self] result in
6475
switch result {
6576
case .success:
6677
self?.didlogOutAccount()

ios-base/Managers/SessionManager.swift

+15-7
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,20 @@
88

99
import UIKit
1010

11-
class SessionManager: NSObject {
11+
internal class SessionManager: CurrentUserSessionProvider {
1212

13-
static var currentSession: Session? {
13+
static let shared = SessionManager()
14+
15+
private let userDefaults: UserDefaults
16+
17+
init(userDefaults: UserDefaults = .standard) {
18+
self.userDefaults = userDefaults
19+
}
20+
21+
var currentSession: Session? {
1422
get {
1523
if
16-
let data = UserDefaults.standard.data(forKey: "ios-base-session"),
24+
let data = userDefaults.data(forKey: "ios-base-session"),
1725
let session = try? JSONDecoder().decode(Session.self, from: data)
1826
{
1927
return session
@@ -23,15 +31,15 @@ class SessionManager: NSObject {
2331

2432
set {
2533
let session = try? JSONEncoder().encode(newValue)
26-
UserDefaults.standard.set(session, forKey: "ios-base-session")
34+
userDefaults.set(session, forKey: "ios-base-session")
2735
}
2836
}
2937

30-
class func deleteSession() {
31-
UserDefaults.standard.removeObject(forKey: "ios-base-session")
38+
func deleteSession() {
39+
userDefaults.removeObject(forKey: "ios-base-session")
3240
}
3341

34-
static var validSession: Bool {
42+
var validSession: Bool {
3543
if let session = currentSession, let uid = session.uid,
3644
let tkn = session.accessToken, let client = session.client {
3745
return !uid.isEmpty && !tkn.isEmpty && !client.isEmpty

ios-base/Navigators/AppNavigator.swift

+7-5
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88

99
import Foundation
1010

11-
class AppNavigator: BaseNavigator {
12-
static let shared = AppNavigator()
11+
internal class AppNavigator: BaseNavigator {
1312

14-
init() {
15-
let initialRoute: Route = SessionManager.validSession ?
16-
HomeRoutes.home : OnboardingRoutes.firstScreen
13+
static let shared = AppNavigator(isLoggedIn: SessionManager.shared.validSession)
14+
15+
init(isLoggedIn: Bool) {
16+
let initialRoute: Route = isLoggedIn
17+
? HomeRoutes.home
18+
: OnboardingRoutes.firstScreen
1719
super.init(with: initialRoute)
1820
}
1921

ios-base/Networking/Errors/APIClientError.swift

-20
This file was deleted.

ios-base/Networking/Errors/APIError.swift

-74
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import RSSwiftNetworking
2+
3+
/// Provides an easy-access APIClient implementation to use across the application
4+
/// You can define and configure as many APIClients as needed
5+
internal enum iOSBaseAPIClient {
6+
static let shared = BaseAPIClient(
7+
networkProvider: AlamofireNetworkProvider(),
8+
headersProvider: RailsAPIHeadersProvider(sessionProvider: SessionHeadersProvider())
9+
)
10+
}

ios-base/Networking/Extensions/APIClient+Product.swift

-11
This file was deleted.

ios-base/Networking/Extensions/JSONDecoder+DecodingConfiguration.swift

-13
This file was deleted.

ios-base/Networking/Models/Base64Media.swift

-18
This file was deleted.

0 commit comments

Comments
 (0)