Skip to content

Commit 3eacb0f

Browse files
author
DominicGBauer
committed
fix: remove need for main thread
1 parent 433a2dc commit 3eacb0f

File tree

3 files changed

+15
-16
lines changed

3 files changed

+15
-16
lines changed

Sources/PowerSyncSwift/Kotlin/KotlinPowerSyncDatabaseImpl.swift

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,12 @@ final class KotlinPowerSyncDatabaseImpl: PowerSyncDatabaseProtocol {
117117
}
118118
}
119119

120-
@MainActor
121120
public func writeTransaction<R>(callback: @escaping (any PowerSyncTransaction) async throws -> R) async throws -> R {
122121
return try await kmpDatabase.writeTransaction(callback: SuspendTaskWrapper { transaction in
123122
return try await callback(transaction)
124123
}) as! R
125124
}
126125

127-
@MainActor
128126
public func readTransaction<R>(callback: @escaping (any PowerSyncTransaction) async throws -> R) async throws -> R {
129127
return try await kmpDatabase.writeTransaction(callback: SuspendTaskWrapper { transaction in
130128
return try await callback(transaction)
@@ -136,24 +134,22 @@ enum PowerSyncError: Error {
136134
case invalidTransaction
137135
}
138136

139-
@MainActor
140137
class SuspendTaskWrapper: KotlinSuspendFunction1 {
141138
let handle: (any PowerSyncTransaction) async throws -> Any
142139

143140
init(_ handle: @escaping (any PowerSyncTransaction) async throws -> Any) {
144141
self.handle = handle
145142
}
146143

147-
nonisolated func __invoke(p1: Any?, completionHandler: @escaping (Any?, Error?) -> Void) {
148-
DispatchQueue.main.async {
149-
Task { @MainActor in
150-
do {
151-
let result = try await self.handle(p1 as! any PowerSyncTransaction)
152-
completionHandler(result, nil)
153-
} catch {
154-
completionHandler(nil, error)
155-
}
144+
func __invoke(p1: Any?, completionHandler: @escaping (Any?, Error?) -> Void) {
145+
Task {
146+
do {
147+
let result = try await self.handle(p1 as! any PowerSyncTransaction)
148+
completionHandler(result, nil)
149+
} catch {
150+
completionHandler(nil, error)
156151
}
157152
}
158153
}
159154
}
155+

Sources/PowerSyncSwift/PowerSyncDatabase.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ public let DEFAULT_DB_FILENAME = "powersync.db"
88
/// - schema: The database schema
99
/// - dbFilename: The database filename. Defaults to "powersync.db"
1010
/// - Returns: A configured PowerSyncDatabase instance
11-
@MainActor
1211
public func PowerSyncDatabase(
1312
schema: Schema,
1413
dbFilename: String = DEFAULT_DB_FILENAME

Tests/PowerSyncSwiftTests/Kotlin/KotlinPowerSyncDatabaseImplTests.swift

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ final class KotlinPowerSyncDatabaseImplTests: XCTestCase {
1818
schema: schema,
1919
dbFilename: ":memory:"
2020
)
21+
try await database.disconnectAndClear()
2122
}
2223

2324
override func tearDown() async throws {
@@ -130,13 +131,17 @@ final class KotlinPowerSyncDatabaseImplTests: XCTestCase {
130131
XCTAssertEqual(results[1], ["User 1", "User 2"])
131132
}
132133

133-
@MainActor
134134
func testWriteTransaction() async throws {
135135
try await database.writeTransaction { transaction in
136136
_ = try await transaction.execute(
137137
sql: "INSERT INTO users (id, name, email) VALUES (?, ?, ?)",
138138
parameters: ["1", "Test User", "test@example.com"]
139139
)
140+
141+
_ = try await transaction.execute(
142+
sql: "INSERT INTO users (id, name, email) VALUES (?, ?, ?)",
143+
parameters: ["2", "Test User 2", "test2@example.com"]
144+
)
140145
}
141146

142147

@@ -147,10 +152,9 @@ final class KotlinPowerSyncDatabaseImplTests: XCTestCase {
147152
cursor.getLong(index: 0)
148153
}
149154

150-
XCTAssertEqual(result as! Int, 1)
155+
XCTAssertEqual(result as! Int, 2)
151156
}
152157

153-
@MainActor
154158
func testReadTransaction() async throws {
155159
_ = try await database.execute(
156160
sql: "INSERT INTO users (id, name, email) VALUES (?, ?, ?)",

0 commit comments

Comments
 (0)