Skip to content

Commit 5d761d6

Browse files
authored
fix: Improve LiveQuery tasks running (#215)
* fix: Improve LiveQuery tasks running * resume task after creating unless closing socket * resume task after
1 parent 5d9856c commit 5d761d6

3 files changed

Lines changed: 9 additions & 11 deletions

File tree

Sources/ParseSwift/LiveQuery/LiveQuerySocket.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ final class LiveQuerySocket: NSObject, @unchecked Sendable {
3737
func createTask(_ url: URL, taskDelegate: LiveQuerySocketDelegate) async -> URLSessionWebSocketTask {
3838
let task = session.webSocketTask(with: url)
3939
await tasks.updateDelegates([task: taskDelegate])
40-
await receive(task)
4140
return task
4241
}
4342

@@ -97,9 +96,6 @@ extension LiveQuerySocket {
9796
let delegates = await self.tasks.getDelegates()
9897
do {
9998

100-
if task.state == .suspended {
101-
task.resume()
102-
}
10399
let result = try await task.receive()
104100
await self.tasks.removeReceivers([task])
105101

Sources/ParseSwift/LiveQuery/ParseLiveQuery.swift

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -316,15 +316,17 @@ extension ParseLiveQuery {
316316
}
317317
switch task.state {
318318
case .suspended:
319+
task.resume()
319320
await URLSession.liveQuery.receive(task)
320321
case .completed, .canceling:
321322
let oldTask = task
322-
let newTask = await URLSession.liveQuery.createTask(
323+
await URLSession.liveQuery.removeTask(oldTask)
324+
let newTask = await URLSession.liveQuery.createTask(
323325
self.url,
324326
taskDelegate: self
325327
)
326328
self.task = newTask
327-
await URLSession.liveQuery.removeTask(oldTask)
329+
try await resumeTask()
328330
case .running:
329331
try await self.open(isUserWantsToConnect: false)
330332
@unknown default:
@@ -468,15 +470,15 @@ extension ParseLiveQuery {
468470
self.isDisconnectedByUser = true
469471
let oldTask = self.task
470472
await self.setStatus(.socketNotEstablished)
471-
// Prepare new task for future use.
473+
if let oldTask = oldTask {
474+
await URLSession.liveQuery.removeTask(oldTask)
475+
}
476+
// Prepare new task for future use.
472477
let newTask = await URLSession.liveQuery.createTask(
473478
self.url,
474479
taskDelegate: self
475480
)
476481
self.task = newTask
477-
if let oldTask = oldTask {
478-
await URLSession.liveQuery.removeTask(oldTask)
479-
}
480482
}
481483
}
482484

Sources/ParseSwift/ParseConstants.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Foundation
1010

1111
enum ParseConstants {
1212
static let sdk = "swift"
13-
static let version = "6.0.0-beta.2"
13+
static let version = "6.0.0-beta.3"
1414
static let fileManagementDirectory = "parse/"
1515
static let fileManagementPrivateDocumentsDirectory = "Private Documents/"
1616
static let fileManagementLibraryDirectory = "Library/"

0 commit comments

Comments
 (0)