Skip to content

Commit 6732456

Browse files
authored
Merge pull request #48 from blackcandy-org/initial-request-failed
Prevent get error when first time send request while didn't get network permission
2 parents 2b4bcf3 + 15c81e0 commit 6732456

File tree

3 files changed

+25
-16
lines changed

3 files changed

+25
-16
lines changed

.github/workflows/ci.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on: [push, pull_request]
44

55
jobs:
66
test_lint:
7-
runs-on: macos-latest
7+
runs-on: macos-13
88

99
steps:
1010
- uses: actions/checkout@v3
@@ -15,4 +15,4 @@ jobs:
1515
- name: Test and Lint
1616
run: |
1717
swiftlint
18-
set -o pipefail && xcodebuild test -scheme "BlackCandy" -destination platform="iOS Simulator,name=iPhone 14 Pro Max,OS=16.2" | xcpretty --test
18+
set -o pipefail && xcodebuild test -scheme "BlackCandy" -destination platform="iOS Simulator,name=iPhone 15 Pro Max,OS=17.2" | xcpretty --test

BlackCandy.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

+2-2
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@
9595
"kind" : "remoteSourceControl",
9696
"location" : "https://github.com/pointfreeco/swift-custom-dump",
9797
"state" : {
98-
"revision" : "edd66cace818e1b1c6f1b3349bb1d8e00d6f8b01",
99-
"version" : "1.0.0"
98+
"revision" : "f01efb26f3a192a0e88dcdb7c3c391ec2fc25d9c",
99+
"version" : "1.3.0"
100100
}
101101
},
102102
{

BlackCandy/Clients/APIClient/LiveAPIClient.swift

+21-12
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ extension APIClient: DependencyKey {
77
@Dependency(\.userDefaultsClient) var userDefaultClient
88
@Dependency(\.keychainClient) var keychainClient
99

10+
lazy var session: Session = {
11+
let configuration = URLSessionConfiguration.af.default
12+
13+
configuration.waitsForConnectivity = true
14+
configuration.timeoutIntervalForResource = 300
15+
16+
return Session(configuration: configuration)
17+
}()
18+
1019
var headers: HTTPHeaders {
1120
var basicHeaders: HTTPHeaders = [
1221
.userAgent(BLACK_CANDY_USER_AGENT)
@@ -99,7 +108,7 @@ extension APIClient: DependencyKey {
99108
]
100109
]
101110

102-
let request = AF.request(
111+
let request = session.request(
103112
requestURL("/authentication"),
104113
method: .post,
105114
parameters: parameters,
@@ -126,7 +135,7 @@ extension APIClient: DependencyKey {
126135
},
127136

128137
logout: {
129-
let request = AF.request(
138+
let request = session.request(
130139
requestURL("/authentication"),
131140
method: .delete,
132141
headers: headers
@@ -140,7 +149,7 @@ extension APIClient: DependencyKey {
140149
},
141150

142151
getSongsFromCurrentPlaylist: {
143-
let request = AF.request(
152+
let request = session.request(
144153
requestURL("/current_playlist/songs"),
145154
headers: headers
146155
)
@@ -153,7 +162,7 @@ extension APIClient: DependencyKey {
153162
},
154163

155164
addSongToFavorite: { song in
156-
let request = AF.request(
165+
let request = session.request(
157166
requestURL("/favorite_playlist/songs"),
158167
method: .post,
159168
parameters: ["song_id": song.id],
@@ -169,7 +178,7 @@ extension APIClient: DependencyKey {
169178
},
170179

171180
deleteSongInFavorite: { song in
172-
let request = AF.request(
181+
let request = session.request(
173182
requestURL("/favorite_playlist/songs/\(song.id)"),
174183
method: .delete,
175184
headers: headers
@@ -184,7 +193,7 @@ extension APIClient: DependencyKey {
184193
},
185194

186195
deleteSongInCurrentPlaylist: { song in
187-
let request = AF.request(
196+
let request = session.request(
188197
requestURL("/current_playlist/songs/\(song.id)"),
189198
method: .delete,
190199
headers: headers
@@ -198,7 +207,7 @@ extension APIClient: DependencyKey {
198207
},
199208

200209
moveSongInCurrentPlaylist: { songId, destinationSongId in
201-
let request = AF.request(
210+
let request = session.request(
202211
requestURL("/current_playlist/songs/\(songId)/move"),
203212
method: .put,
204213
parameters: ["destination_song_id": destinationSongId],
@@ -213,7 +222,7 @@ extension APIClient: DependencyKey {
213222
},
214223

215224
getSong: { songId in
216-
let request = AF.request(
225+
let request = session.request(
217226
requestURL("/songs/\(songId)"),
218227
headers: headers
219228
)
@@ -228,7 +237,7 @@ extension APIClient: DependencyKey {
228237
getSystemInfo: { serverAddressState in
229238
let url = "\(serverAddressState.url)/api/v1/system"
230239

231-
let request = AF.request(
240+
let request = session.request(
232241
url,
233242
headers: headers
234243
)
@@ -256,7 +265,7 @@ extension APIClient: DependencyKey {
256265
parameters["location"] = location
257266
}
258267

259-
let request = AF.request(
268+
let request = session.request(
260269
requestURL("/current_playlist/songs"),
261270
method: .post,
262271
parameters: parameters,
@@ -271,7 +280,7 @@ extension APIClient: DependencyKey {
271280
},
272281

273282
replaceCurrentPlaylistWithAlbumSongs: { albumId in
274-
let request = AF.request(
283+
let request = session.request(
275284
requestURL("/current_playlist/songs/albums/\(albumId)"),
276285
method: .put,
277286
headers: headers
@@ -285,7 +294,7 @@ extension APIClient: DependencyKey {
285294
},
286295

287296
replaceCurrentPlaylistWithPlaylistSongs: { playlistId in
288-
let request = AF.request(
297+
let request = session.request(
289298
requestURL("/current_playlist/songs/playlists/\(playlistId)"),
290299
method: .put,
291300
headers: headers

0 commit comments

Comments
 (0)