From a717e4e12d47d29f56f9a9b13de309eee02483cd Mon Sep 17 00:00:00 2001 From: Artur Guseinov Date: Wed, 25 Oct 2023 19:06:26 +0800 Subject: [PATCH 01/15] Database package --- .../xcshareddata/xcschemes/Database.xcscheme | 66 +++++++++++++++++++ Package.swift | 6 ++ Sources/Database/Sqlite.swift | 53 +++++++++++++++ Sources/Database/SqliteError.swift | 8 +++ Sources/Database/SqliteRow.swift | 7 ++ Sources/Database/SqliteRowDecoder.swift | 29 ++++++++ 6 files changed, 169 insertions(+) create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/Database.xcscheme create mode 100644 Sources/Database/Sqlite.swift create mode 100644 Sources/Database/SqliteError.swift create mode 100644 Sources/Database/SqliteRow.swift create mode 100644 Sources/Database/SqliteRowDecoder.swift diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/Database.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/Database.xcscheme new file mode 100644 index 000000000..af7725d2f --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/Database.xcscheme @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Package.swift b/Package.swift index b4c69b94b..052bd1772 100644 --- a/Package.swift +++ b/Package.swift @@ -49,6 +49,9 @@ let package = Package( .library( name: "WalletConnectModal", targets: ["WalletConnectModal"]), + .library( + name: "Database", // TODO: Remove library + targets: ["Database"]), ], dependencies: [ @@ -130,6 +133,9 @@ let package = Package( .target( name: "WalletConnectVerify", dependencies: ["WalletConnectUtils", "WalletConnectNetworking"]), + .target( + name: "Database", + dependencies: []), .target( name: "WalletConnectModal", dependencies: ["QRCode", "WalletConnectSign"], diff --git a/Sources/Database/Sqlite.swift b/Sources/Database/Sqlite.swift new file mode 100644 index 000000000..e6f008cde --- /dev/null +++ b/Sources/Database/Sqlite.swift @@ -0,0 +1,53 @@ +import Foundation +import SQLite3 + +public final class Sqlite { + + private var db: OpaquePointer? + + /// Opening A New Database Connection + /// - Parameter path: Path to database + public func openDatabase(path: String) throws { + guard sqlite3_open(path, &db) == SQLITE_OK else { + throw SQLiteError.openDatabase(path: path) + } + var error: UnsafeMutablePointer? + guard sqlite3_exec(db, "PRAGMA journal_mode=WAL;", nil, nil, &error) == SQLITE_OK else { + let message = error.map { String(cString: $0) } + throw SQLiteError.exec(error: message) + } + } + + /// Evaluate an SQL Statement + /// - Parameter sql: SQL query + /// - Returns: Table rows array + public func query(sql: String) throws -> [Row] { + var queryStatement: OpaquePointer? + guard sqlite3_prepare_v2(db, sql, -1, &queryStatement, nil) == SQLITE_OK else { + throw SQLiteError.queryPrepare(statement: sql) + } + var rows: [Row] = [] + while sqlite3_step(queryStatement) == SQLITE_ROW { + let decoder = SqliteRowDecoder(statement: queryStatement) + guard let row = try? Row(decoder: decoder) else { continue } + rows.append(row) + } + sqlite3_finalize(queryStatement) + return rows + } + + /// One-Step query execution + /// - Parameter sql: SQL query + public func executeBatchUpdate(sql: String) throws { + var error: UnsafeMutablePointer? + guard sqlite3_exec(db, sql, nil, nil, &error) == SQLITE_OK else { + let message = error.map { String(cString: $0) } + throw SQLiteError.exec(error: message) + } + } + + /// Closing A Database Connection + public func closeConnection() { + sqlite3_close(db) + } +} diff --git a/Sources/Database/SqliteError.swift b/Sources/Database/SqliteError.swift new file mode 100644 index 000000000..f5c7e2492 --- /dev/null +++ b/Sources/Database/SqliteError.swift @@ -0,0 +1,8 @@ +import Foundation + +public enum SQLiteError: Error { + case openDatabase(path: String) + case queryPrepare(statement: String) + case exec(error: String?) + case decodeString(index: Int32) +} diff --git a/Sources/Database/SqliteRow.swift b/Sources/Database/SqliteRow.swift new file mode 100644 index 000000000..a088bb551 --- /dev/null +++ b/Sources/Database/SqliteRow.swift @@ -0,0 +1,7 @@ +import Foundation + +public protocol SqliteRow { + /// SqliteRow initialization + /// - Parameter decoder: SqliteRowDecoder instance + init(decoder: SqliteRowDecoder) throws +} diff --git a/Sources/Database/SqliteRowDecoder.swift b/Sources/Database/SqliteRowDecoder.swift new file mode 100644 index 000000000..cbad01265 --- /dev/null +++ b/Sources/Database/SqliteRowDecoder.swift @@ -0,0 +1,29 @@ +import Foundation +import SQLite3 + +public class SqliteRowDecoder { + + private let statement: OpaquePointer? + + init(statement: OpaquePointer?) { + self.statement = statement + } + + /// Decode string from column at index + /// - Parameter index: Column index + /// - Returns: Decoded string + public func decodeString(at index: Int32) throws -> String { + guard let raw = sqlite3_column_text(statement, index) else { + throw SQLiteError.decodeString(index: index) + } + return String(cString: raw) + } + + /// Decode bool from column at index + /// - Parameter index: Column index + /// - Returns: Decoded bool + public func decodeBool(at index: Int32) throws -> Bool { + let string = try decodeString(at: index) + return (string as NSString).boolValue + } +} From db9a6271ac49213fae948825d732dd948d229510 Mon Sep 17 00:00:00 2001 From: Artur Guseinov Date: Fri, 27 Oct 2023 03:09:49 +0800 Subject: [PATCH 02/15] NotifyDatabase --- Package.swift | 2 +- Sources/Database/SQLiteQuery.swift | 25 +++++++ Sources/Database/Sqlite.swift | 2 +- Sources/Database/SqliteError.swift | 2 + Sources/Database/SqliteRow.swift | 7 +- Sources/Database/SqliteRowDecoder.swift | 22 ++++++ Sources/Database/SqliteRowEncoder.swift | 33 +++++++++ .../Client/Wallet/NotifyDatabase.swift | 70 +++++++++++++++++++ .../WalletConnectNotify/NotifyImports.swift | 1 + .../DataStructures/NotifySubscription.swift | 25 ++++++- 10 files changed, 185 insertions(+), 4 deletions(-) create mode 100644 Sources/Database/SQLiteQuery.swift create mode 100644 Sources/Database/SqliteRowEncoder.swift create mode 100644 Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift diff --git a/Package.swift b/Package.swift index 052bd1772..f43771ef7 100644 --- a/Package.swift +++ b/Package.swift @@ -77,7 +77,7 @@ let package = Package( path: "Sources/Web3Wallet"), .target( name: "WalletConnectNotify", - dependencies: ["WalletConnectPairing", "WalletConnectPush", "WalletConnectIdentity", "WalletConnectSigner"], + dependencies: ["WalletConnectPairing", "WalletConnectPush", "WalletConnectIdentity", "WalletConnectSigner", "Database"], path: "Sources/WalletConnectNotify"), .target( name: "WalletConnectPush", diff --git a/Sources/Database/SQLiteQuery.swift b/Sources/Database/SQLiteQuery.swift new file mode 100644 index 000000000..9cfce38b9 --- /dev/null +++ b/Sources/Database/SQLiteQuery.swift @@ -0,0 +1,25 @@ +import Foundation + +public struct SqliteQuery { + + public static func replace(table: String, row: SqliteRow) -> String { + let encoder = row.encode() + + let arguments = encoder.values + .map { $0.argument } + .joined(separator: ", ") + + let values = encoder.values + .map { $0.value } + .joined(separator: ", ") + + return """ + REPLACE INTO \(table) (\(arguments)) + VALUES (\(values)) + """ + } + + public static func select(table: String) -> String { + return "SELECT * FROM \(table)" + } +} diff --git a/Sources/Database/Sqlite.swift b/Sources/Database/Sqlite.swift index e6f008cde..61b2cd8de 100644 --- a/Sources/Database/Sqlite.swift +++ b/Sources/Database/Sqlite.swift @@ -38,7 +38,7 @@ public final class Sqlite { /// One-Step query execution /// - Parameter sql: SQL query - public func executeBatchUpdate(sql: String) throws { + public func execute(sql: String) throws { var error: UnsafeMutablePointer? guard sqlite3_exec(db, sql, nil, nil, &error) == SQLITE_OK else { let message = error.map { String(cString: $0) } diff --git a/Sources/Database/SqliteError.swift b/Sources/Database/SqliteError.swift index f5c7e2492..cecf7dd89 100644 --- a/Sources/Database/SqliteError.swift +++ b/Sources/Database/SqliteError.swift @@ -5,4 +5,6 @@ public enum SQLiteError: Error { case queryPrepare(statement: String) case exec(error: String?) case decodeString(index: Int32) + case stringIsNotBase64 + case stringIsNotTimestamp } diff --git a/Sources/Database/SqliteRow.swift b/Sources/Database/SqliteRow.swift index a088bb551..f1a683083 100644 --- a/Sources/Database/SqliteRow.swift +++ b/Sources/Database/SqliteRow.swift @@ -1,7 +1,12 @@ import Foundation public protocol SqliteRow { - /// SqliteRow initialization + + /// SqliteRow initialization /// - Parameter decoder: SqliteRowDecoder instance init(decoder: SqliteRowDecoder) throws + + /// SqliteRow encoding + /// - Returns: SqliteRowEncoder instance + func encode() -> SqliteRowEncoder } diff --git a/Sources/Database/SqliteRowDecoder.swift b/Sources/Database/SqliteRowDecoder.swift index cbad01265..bd9bde816 100644 --- a/Sources/Database/SqliteRowDecoder.swift +++ b/Sources/Database/SqliteRowDecoder.swift @@ -26,4 +26,26 @@ public class SqliteRowDecoder { let string = try decodeString(at: index) return (string as NSString).boolValue } + + /// Decode codable object from column at index + /// - Parameter index: Column index + /// - Returns: Decoded codable object + public func decodeCodable(at index: Int32) throws -> T { + let string = try decodeString(at: index) + guard let data = Data(base64Encoded: string) else { + throw SQLiteError.stringIsNotBase64 + } + return try JSONDecoder().decode(T.self, from: data) + } + + /// Decode date from column at index + /// - Parameter index: Column index + /// - Returns: Decoded date + public func decodeDate(at index: Int32) throws -> Date { + let string = try decodeString(at: index) + guard let interval = TimeInterval(string) else { + throw SQLiteError.stringIsNotTimestamp + } + return Date(timeIntervalSince1970: interval) + } } diff --git a/Sources/Database/SqliteRowEncoder.swift b/Sources/Database/SqliteRowEncoder.swift new file mode 100644 index 000000000..9c7516b41 --- /dev/null +++ b/Sources/Database/SqliteRowEncoder.swift @@ -0,0 +1,33 @@ +import Foundation + +public struct SqliteRowEncoder { + struct Value { + let argument: String + let value: String + } + + var values: [Value] = [] + + public init() { } + + public mutating func encodeString(_ value: String, for argument: String) { + let value = Value(argument: argument, value: value) + values.append(value) + } + + public mutating func encodeDate(_ value: Date, for argument: String) { + let value = Value(argument: argument, value: String(value.timeIntervalSince1970)) + values.append(value) + } + + public mutating func encodeCodable(_ value: T, for argument: String) { + let data = try! JSONEncoder().encode(value) + let value = Value(argument: argument, value: data.base64EncodedString()) + values.append(value) + } + + public mutating func encodeBool(_ value: Bool, for argument: String) { + let value = Value(argument: argument, value: String(value)) + values.append(value) + } +} diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift new file mode 100644 index 000000000..8085cdcdc --- /dev/null +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift @@ -0,0 +1,70 @@ +import Foundation +import Database + +final class NotifyDatabase { + + enum Table { + static let subscriptions = "NotifySubscription" + } + + private let appGroup: String + private let database: String + private let sqlite: Sqlite + + init(appGroup: String, database: String, sqlite: Sqlite) { + self.appGroup = appGroup + self.database = database + self.sqlite = sqlite + + prepareDatabase() + } + + func save(subscription: NotifySubscription) throws { + try sqlite.openDatabase(path: path) + defer { sqlite.closeConnection() } + + let sql = SqliteQuery.replace(table: Table.subscriptions, row: subscription) + try sqlite.execute(sql: sql) + + sqlite.closeConnection() + } + + func getSubscription(topic: String) throws -> NotifySubscription? { + try sqlite.openDatabase(path: path) + defer { sqlite.closeConnection() } + + let sql = SqliteQuery.select(table: Table.subscriptions) + let subscriptions: [NotifySubscription] = try sqlite.query(sql: sql) + return subscriptions.first(where: { $0.topic == topic }) + } +} + +private extension NotifyDatabase { + + var path: String { + guard let path = FileManager.default + .containerURL(forSecurityApplicationGroupIdentifier: appGroup)? + .appendingPathComponent(database) else { + + fatalError("Database path not exists") + } + + return path.absoluteString + } + + func prepareDatabase() { + defer { sqlite.closeConnection() } + try? sqlite.openDatabase(path: path) + try? sqlite.execute(sql: """ + CREATE TABLE NotifySubscription ( + topic TEXT PRIMARY KEY, + account TEXT NOT NULL, + relay TEXT NOT NULL, + metadata TEXT NOT NULL, + scope TEXT NOT NULL, + expiry TEXT NOT NULL, + symKey TEXT NOT NULL + ); + """) + } +} diff --git a/Sources/WalletConnectNotify/NotifyImports.swift b/Sources/WalletConnectNotify/NotifyImports.swift index 74fcfa250..43b543236 100644 --- a/Sources/WalletConnectNotify/NotifyImports.swift +++ b/Sources/WalletConnectNotify/NotifyImports.swift @@ -3,4 +3,5 @@ @_exported import WalletConnectPush @_exported import WalletConnectIdentity @_exported import WalletConnectSigner +@_exported import Database #endif diff --git a/Sources/WalletConnectNotify/Types/DataStructures/NotifySubscription.swift b/Sources/WalletConnectNotify/Types/DataStructures/NotifySubscription.swift index cb4982555..5a5701d24 100644 --- a/Sources/WalletConnectNotify/Types/DataStructures/NotifySubscription.swift +++ b/Sources/WalletConnectNotify/Types/DataStructures/NotifySubscription.swift @@ -1,6 +1,7 @@ import Foundation +import Database -public struct NotifySubscription: DatabaseObject { +public struct NotifySubscription: DatabaseObject, SqliteRow { public let topic: String public let account: Account public let relay: RelayProtocolOptions @@ -13,6 +14,28 @@ public struct NotifySubscription: DatabaseObject { public var databaseId: String { return topic } + + public init(decoder: SqliteRowDecoder) throws { + self.topic = try decoder.decodeString(at: 0) + self.account = try Account(decoder.decodeString(at: 1))! + self.relay = try decoder.decodeCodable(at: 2) + self.metadata = try decoder.decodeCodable(at: 3) + self.scope = try decoder.decodeCodable(at: 4) + self.expiry = try decoder.decodeDate(at: 5) + self.symKey = try decoder.decodeString(at: 6) + } + + public func encode() -> SqliteRowEncoder { + var encoder = SqliteRowEncoder() + encoder.encodeString(topic, for: "topic") + encoder.encodeString(account.absoluteString, for: "account") + encoder.encodeCodable(relay, for: "relay") + encoder.encodeCodable(metadata, for: "metadata") + encoder.encodeCodable(scope, for: "scope") + encoder.encodeDate(expiry, for: "expiry") + encoder.encodeString(symKey, for: "symKey") + return encoder + } } public struct ScopeValue: Codable, Equatable { From 7a9519c3599164a6da94afb0065776508f6753fa Mon Sep 17 00:00:00 2001 From: Artur Guseinov Date: Mon, 30 Oct 2023 18:45:01 +0800 Subject: [PATCH 03/15] SQlite for subscriptions --- Sources/Database/SQLiteQuery.swift | 39 +++++++-- Sources/Database/Sqlite.swift | 4 +- .../Client/Wallet/NotifyAccountProvider.swift | 2 +- .../Client/Wallet/NotifyClient.swift | 5 +- .../Client/Wallet/NotifyClientFactory.swift | 5 +- .../Client/Wallet/NotifyDatabase.swift | 87 ++++++++++++++----- .../Client/Wallet/NotifyStorage.swift | 59 +++++++------ .../DeleteNotifySubscriptionRequester.swift | 2 +- ...ubscriptionsChangedRequestSubscriber.swift | 4 +- .../NotifyUpdateRequester.swift | 2 +- ...WatchSubscriptionsResponseSubscriber.swift | 4 +- .../DataStructures/NotifySubscription.swift | 24 +++++ 12 files changed, 164 insertions(+), 73 deletions(-) diff --git a/Sources/Database/SQLiteQuery.swift b/Sources/Database/SQLiteQuery.swift index 9cfce38b9..33447c371 100644 --- a/Sources/Database/SQLiteQuery.swift +++ b/Sources/Database/SQLiteQuery.swift @@ -2,24 +2,45 @@ import Foundation public struct SqliteQuery { - public static func replace(table: String, row: SqliteRow) -> String { - let encoder = row.encode() + public static func replace(table: String, rows: [SqliteRow]) throws -> String { + var values: [String] = [] - let arguments = encoder.values + for row in rows { + values.append(row.encode().values + .map { "'\($0.value)'" } + .joined(separator: ", ")) + } + + guard let first = rows.first else { + throw Errors.rowsNotFound + } + + let formattedArguments = first.encode().values .map { $0.argument } .joined(separator: ", ") - let values = encoder.values - .map { $0.value } - .joined(separator: ", ") + let formattedValues = values + .map { "(\($0))" } + .joined(separator: ",\n") return """ - REPLACE INTO \(table) (\(arguments)) - VALUES (\(values)) + REPLACE INTO \(table) (\(formattedArguments)) VALUES + \(formattedValues); """ } public static func select(table: String) -> String { - return "SELECT * FROM \(table)" + return "SELECT * FROM \(table);" + } + + public static func delete(table: String, where argument: String, equals value: String) -> String { + return "DELETE FROM \(table) WHERE \(argument) = '\(value)';" + } +} + +extension SqliteQuery { + + enum Errors: Error { + case rowsNotFound } } diff --git a/Sources/Database/Sqlite.swift b/Sources/Database/Sqlite.swift index 61b2cd8de..4ffa53143 100644 --- a/Sources/Database/Sqlite.swift +++ b/Sources/Database/Sqlite.swift @@ -5,10 +5,12 @@ public final class Sqlite { private var db: OpaquePointer? + public init() { } + /// Opening A New Database Connection /// - Parameter path: Path to database public func openDatabase(path: String) throws { - guard sqlite3_open(path, &db) == SQLITE_OK else { + guard sqlite3_open_v2(path, &db, SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_FULLMUTEX, nil) == SQLITE_OK else { throw SQLiteError.openDatabase(path: path) } var error: UnsafeMutablePointer? diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyAccountProvider.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyAccountProvider.swift index 8a702fabd..48df9c09c 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyAccountProvider.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyAccountProvider.swift @@ -5,7 +5,7 @@ final class NotifyAccountProvider { case currentAccountNotFound } - private var currentAccount: Account? + private(set) var currentAccount: Account? func setAccount(_ account: Account) { self.currentAccount = account diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyClient.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyClient.swift index b4e04c5be..1da1f0629 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyClient.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyClient.swift @@ -84,7 +84,7 @@ public class NotifyClient { public func unregister(account: Account) async throws { try await identityService.unregister(account: account) notifyWatcherAgreementKeysProvider.removeAgreement(account: account) - notifyStorage.clearDatabase(account: account) + try notifyStorage.clearDatabase(account: account) notifyAccountProvider.logout() subscriptionWatcher.stop() } @@ -102,7 +102,8 @@ public class NotifyClient { } public func getActiveSubscriptions(account: Account) -> [NotifySubscription] { - return notifyStorage.getSubscriptions(account: account) + // TODO: Handle or remove error + return (try? notifyStorage.getSubscriptions(account: account)) ?? [] } public func getMessageHistory(topic: String) -> [NotifyMessageRecord] { diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyClientFactory.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyClientFactory.swift index 9d0e41f4a..6e50ece69 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyClientFactory.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyClientFactory.swift @@ -12,6 +12,7 @@ public struct NotifyClientFactory { return NotifyClientFactory.create( projectId: projectId, keyserverURL: keyserverURL, + groupIdentifier: groupIdentifier, logger: logger, keyValueStorage: keyValueStorage, keychainStorage: keychainStorage, @@ -28,6 +29,7 @@ public struct NotifyClientFactory { static func create( projectId: String, keyserverURL: URL, + groupIdentifier: String, logger: ConsoleLogging, keyValueStorage: KeyValueStorage, keychainStorage: KeychainStorageProtocol, @@ -43,7 +45,8 @@ public struct NotifyClientFactory { let subscriptionStore = KeyedDatabase(storage: keyValueStorage, identifier: NotifyStorageIdntifiers.notifySubscription) let messagesStore = KeyedDatabase(storage: keyValueStorage, identifier: NotifyStorageIdntifiers.notifyMessagesRecords) let notifyAccountProvider = NotifyAccountProvider() - let notifyStorage = NotifyStorage(subscriptionStore: subscriptionStore, messagesStore: messagesStore, accountProvider: notifyAccountProvider) + let database = NotifyDatabase(appGroup: groupIdentifier, database: "notify.db", sqlite: Sqlite(), logger: logger) + let notifyStorage = NotifyStorage(database: database, subscriptionStore: subscriptionStore, messagesStore: messagesStore, accountProvider: notifyAccountProvider) let identityClient = IdentityClientFactory.create(keyserver: keyserverURL, keychain: keychainStorage, logger: logger) let notifyMessageSubscriber = NotifyMessageSubscriber(keyserver: keyserverURL, networkingInteractor: networkInteractor, identityClient: identityClient, notifyStorage: notifyStorage, crypto: crypto, logger: logger) let webDidResolver = NotifyWebDidResolver() diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift index 8085cdcdc..28d83e7a5 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift @@ -1,5 +1,6 @@ import Foundation import Database +import Combine final class NotifyDatabase { @@ -10,32 +11,52 @@ final class NotifyDatabase { private let appGroup: String private let database: String private let sqlite: Sqlite + private let logger: ConsoleLogging - init(appGroup: String, database: String, sqlite: Sqlite) { + var onSubscriptionsUpdate: (() throws -> Void)? + + init(appGroup: String, database: String, sqlite: Sqlite, logger: ConsoleLogging) { self.appGroup = appGroup self.database = database self.sqlite = sqlite + self.logger = logger prepareDatabase() } func save(subscription: NotifySubscription) throws { - try sqlite.openDatabase(path: path) - defer { sqlite.closeConnection() } - - let sql = SqliteQuery.replace(table: Table.subscriptions, row: subscription) - try sqlite.execute(sql: sql) + try save(subscriptions: [subscription]) + } - sqlite.closeConnection() + func save(subscriptions: [NotifySubscription]) throws { + let sql = try SqliteQuery.replace(table: Table.subscriptions, rows: subscriptions) + try execute(sql: sql) + try onSubscriptionsUpdate?() } func getSubscription(topic: String) throws -> NotifySubscription? { - try sqlite.openDatabase(path: path) - defer { sqlite.closeConnection() } + return try getAllSubscriptions().first(where: { $0.topic == topic }) + } + func getAllSubscriptions() throws -> [NotifySubscription] { let sql = SqliteQuery.select(table: Table.subscriptions) - let subscriptions: [NotifySubscription] = try sqlite.query(sql: sql) - return subscriptions.first(where: { $0.topic == topic }) + return try query(sql: sql) + } + + func getSubscriptions(account: Account) throws -> [NotifySubscription] { + return try getAllSubscriptions().filter { $0.account == account } + } + + func deleteSubscription(topic: String) throws { + let sql = SqliteQuery.delete(table: Table.subscriptions, where: "topic", equals: topic) + try execute(sql: sql) + try onSubscriptionsUpdate?() + } + + func deleteSubscription(account: Account) throws { + let sql = SqliteQuery.delete(table: Table.subscriptions, where: "account", equals: account.absoluteString) + try execute(sql: sql) + try onSubscriptionsUpdate?() } } @@ -53,18 +74,38 @@ private extension NotifyDatabase { } func prepareDatabase() { + do { + defer { sqlite.closeConnection() } + try sqlite.openDatabase(path: path) + try sqlite.execute(sql: """ + CREATE TABLE IF NOT EXISTS NotifySubscription ( + topic TEXT PRIMARY KEY, + account TEXT NOT NULL, + relay TEXT NOT NULL, + metadata TEXT NOT NULL, + scope TEXT NOT NULL, + expiry TEXT NOT NULL, + symKey TEXT NOT NULL, + appAuthenticationKey TEXT NOT NULL + ); + """) + logger.debug("SQlite database created at path \(path)") + } catch { + logger.error("SQlite database creation error: \(error.localizedDescription)") + } + } + + func execute(sql: String) throws { + try sqlite.openDatabase(path: path) defer { sqlite.closeConnection() } - try? sqlite.openDatabase(path: path) - try? sqlite.execute(sql: """ - CREATE TABLE NotifySubscription ( - topic TEXT PRIMARY KEY, - account TEXT NOT NULL, - relay TEXT NOT NULL, - metadata TEXT NOT NULL, - scope TEXT NOT NULL, - expiry TEXT NOT NULL, - symKey TEXT NOT NULL - ); - """) + + try sqlite.execute(sql: sql) + } + + func query(sql: String) throws -> [T] { + try sqlite.openDatabase(path: path) + defer { sqlite.closeConnection() } + + return try sqlite.query(sql: sql) } } diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyStorage.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyStorage.swift index ab873dcf1..d51b5a88b 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyStorage.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyStorage.swift @@ -3,19 +3,21 @@ import Combine protocol NotifyStoring { func getAllSubscriptions() -> [NotifySubscription] - func getSubscriptions(account: Account) -> [NotifySubscription] - func getSubscription(topic: String) -> NotifySubscription? - func setSubscription(_ subscription: NotifySubscription) async throws - func deleteSubscription(topic: String) async throws - func clearDatabase(account: Account) + func getSubscriptions(account: Account) throws -> [NotifySubscription] + func getSubscription(topic: String) throws -> NotifySubscription? + func setSubscription(_ subscription: NotifySubscription) throws + func replaceAllSubscriptions(_ subscriptions: [NotifySubscription]) throws + func deleteSubscription(topic: String) throws + func clearDatabase(account: Account) throws + func updateSubscription(_ subscription: NotifySubscription, scope: [String: ScopeValue], expiry: UInt64) throws } final class NotifyStorage: NotifyStoring { private var publishers = Set() - private let subscriptionStore: KeyedDatabase private let messagesStore: KeyedDatabase + private let database: NotifyDatabase private let newSubscriptionSubject = PassthroughSubject() private let updateSubscriptionSubject = PassthroughSubject() @@ -41,8 +43,8 @@ final class NotifyStorage: NotifyStoring { return subscriptionsSubject.eraseToAnyPublisher() } - init(subscriptionStore: KeyedDatabase, messagesStore: KeyedDatabase, accountProvider: NotifyAccountProvider) { - self.subscriptionStore = subscriptionStore + init(database: NotifyDatabase, subscriptionStore: KeyedDatabase, messagesStore: KeyedDatabase, accountProvider: NotifyAccountProvider) { + self.database = database self.messagesStore = messagesStore self.accountProvider = accountProvider @@ -52,45 +54,42 @@ final class NotifyStorage: NotifyStoring { // MARK: Subscriptions func getAllSubscriptions() -> [NotifySubscription] { - return subscriptionStore.getAll() + return (try? database.getAllSubscriptions()) ?? [] } - func getSubscriptions(account: Account) -> [NotifySubscription] { - return subscriptionStore.getAll(for: account.absoluteString) + func getSubscriptions(account: Account) throws -> [NotifySubscription] { + return try database.getSubscriptions(account: account) } - func getSubscription(topic: String) -> NotifySubscription? { - return subscriptionStore.getAll().first(where: { $0.topic == topic }) + func getSubscription(topic: String) throws -> NotifySubscription? { + return try database.getSubscription(topic: topic) } - func setSubscription(_ subscription: NotifySubscription) { - subscriptionStore.set(element: subscription, for: subscription.account.absoluteString) + func setSubscription(_ subscription: NotifySubscription) throws { + try database.save(subscription: subscription) newSubscriptionSubject.send(subscription) } - func replaceAllSubscriptions(_ subscriptions: [NotifySubscription], account: Account) { - subscriptionStore.replace(elements: subscriptions, for: account.absoluteString) + func replaceAllSubscriptions(_ subscriptions: [NotifySubscription]) throws { + try database.save(subscriptions: subscriptions) } func deleteSubscription(topic: String) throws { - guard let subscription = getSubscription(topic: topic) else { - throw Errors.subscriptionNotFound - } - subscriptionStore.delete(id: topic, for: subscription.account.absoluteString) + try database.deleteSubscription(topic: topic) deleteSubscriptionSubject.send(topic) } - func clearDatabase(account: Account) { - for subscription in getSubscriptions(account: account) { + func clearDatabase(account: Account) throws { + for subscription in try getSubscriptions(account: account) { deleteMessages(topic: subscription.topic) } - subscriptionStore.deleteAll(for: account.absoluteString) + try database.deleteSubscription(account: account) } - func updateSubscription(_ subscription: NotifySubscription, scope: [String: ScopeValue], expiry: UInt64) { + func updateSubscription(_ subscription: NotifySubscription, scope: [String: ScopeValue], expiry: UInt64) throws { let expiry = Date(timeIntervalSince1970: TimeInterval(expiry)) - let updated = NotifySubscription(topic: subscription.topic, account: subscription.account, relay: subscription.relay, metadata: subscription.metadata, scope: scope, expiry: expiry, symKey: subscription.symKey, appAuthenticationKey: subscription.appAuthenticationKey) - subscriptionStore.set(element: updated, for: updated.account.absoluteString) + let updated = NotifySubscription(subscription: subscription, scope: scope, expiry: expiry) + try database.save(subscription: updated) updateSubscriptionSubject.send(updated) } @@ -132,9 +131,9 @@ private extension NotifyStorage { messagesSubject.send(messagesStore.getAll()) } - subscriptionStore.onUpdate = { [unowned self] in - guard let account = try? accountProvider.getCurrentAccount() else { return } - subscriptionsSubject.send(getSubscriptions(account: account)) + database.onSubscriptionsUpdate = { [unowned self] in + let account = try accountProvider.getCurrentAccount() + subscriptionsSubject.send(try getSubscriptions(account: account)) } } } diff --git a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyDelete/DeleteNotifySubscriptionRequester.swift b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyDelete/DeleteNotifySubscriptionRequester.swift index a94e86420..ae3cc6977 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyDelete/DeleteNotifySubscriptionRequester.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyDelete/DeleteNotifySubscriptionRequester.swift @@ -30,7 +30,7 @@ class DeleteNotifySubscriptionRequester { func delete(topic: String) async throws { logger.debug("Will delete notify subscription") - guard let subscription = notifyStorage.getSubscription(topic: topic) + guard let subscription = try notifyStorage.getSubscription(topic: topic) else { throw Errors.notifySubscriptionNotFound} let protocolMethod = NotifyDeleteProtocolMethod() diff --git a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifySubscriptionsChanged/NotifySubscriptionsChangedRequestSubscriber.swift b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifySubscriptionsChanged/NotifySubscriptionsChangedRequestSubscriber.swift index 18c8bbc31..91f299e59 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifySubscriptionsChanged/NotifySubscriptionsChangedRequestSubscriber.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifySubscriptionsChanged/NotifySubscriptionsChangedRequestSubscriber.swift @@ -51,7 +51,7 @@ class NotifySubscriptionsChangedRequestSubscriber { // TODO: varify signature with notify server diddoc authentication key - let oldSubscriptions = notifyStorage.getSubscriptions(account: account) + let oldSubscriptions = try notifyStorage.getSubscriptions(account: account) let newSubscriptions = try await notifySubscriptionsBuilder.buildSubscriptions(jwtPayload.subscriptions) subscriptionChangedSubject.send(newSubscriptions) @@ -63,7 +63,7 @@ class NotifySubscriptionsChangedRequestSubscriber { logger.debug("Received: \(newSubscriptions.count), changed: \(subscriptions.count)") if subscriptions.count > 0 { - notifyStorage.replaceAllSubscriptions(newSubscriptions, account: account) + try notifyStorage.replaceAllSubscriptions(newSubscriptions) for subscription in newSubscriptions { let symKey = try SymmetricKey(hex: subscription.symKey) diff --git a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyUpdate/NotifyUpdateRequester.swift b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyUpdate/NotifyUpdateRequester.swift index 104c5d31a..cf9a44f02 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyUpdate/NotifyUpdateRequester.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyUpdate/NotifyUpdateRequester.swift @@ -35,7 +35,7 @@ class NotifyUpdateRequester: NotifyUpdateRequesting { func update(topic: String, scope: Set) async throws { logger.debug("NotifyUpdateRequester: updating subscription for topic: \(topic)") - guard let subscription = notifyStorage.getSubscription(topic: topic) else { throw Errors.noSubscriptionForGivenTopic } + guard let subscription = try notifyStorage.getSubscription(topic: topic) else { throw Errors.noSubscriptionForGivenTopic } let dappAuthenticationKey = try DIDKey(did: subscription.appAuthenticationKey) diff --git a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyWatchSubscriptions/NotifyWatchSubscriptionsResponseSubscriber.swift b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyWatchSubscriptions/NotifyWatchSubscriptionsResponseSubscriber.swift index 55323843e..541c0279e 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyWatchSubscriptions/NotifyWatchSubscriptionsResponseSubscriber.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyWatchSubscriptions/NotifyWatchSubscriptionsResponseSubscriber.swift @@ -40,7 +40,7 @@ class NotifyWatchSubscriptionsResponseSubscriber { let account = watchSubscriptionPayloadRequest.subscriptionAccount // TODO: varify signature with notify server diddoc authentication key - let oldSubscriptions = notifyStorage.getSubscriptions(account: account) + let oldSubscriptions = try notifyStorage.getSubscriptions(account: account) let newSubscriptions = try await notifySubscriptionsBuilder.buildSubscriptions(responsePayload.subscriptions) try Task.checkCancellation() @@ -51,7 +51,7 @@ class NotifyWatchSubscriptionsResponseSubscriber { if subscriptions.count > 0 { // TODO: unsubscribe for oldSubscriptions topics that are not included in new subscriptions - notifyStorage.replaceAllSubscriptions(newSubscriptions, account: account) + try notifyStorage.replaceAllSubscriptions(newSubscriptions) for subscription in newSubscriptions { let symKey = try SymmetricKey(hex: subscription.symKey) diff --git a/Sources/WalletConnectNotify/Types/DataStructures/NotifySubscription.swift b/Sources/WalletConnectNotify/Types/DataStructures/NotifySubscription.swift index 5a5701d24..9a5ac3609 100644 --- a/Sources/WalletConnectNotify/Types/DataStructures/NotifySubscription.swift +++ b/Sources/WalletConnectNotify/Types/DataStructures/NotifySubscription.swift @@ -23,6 +23,7 @@ public struct NotifySubscription: DatabaseObject, SqliteRow { self.scope = try decoder.decodeCodable(at: 4) self.expiry = try decoder.decodeDate(at: 5) self.symKey = try decoder.decodeString(at: 6) + self.appAuthenticationKey = try decoder.decodeString(at: 7) } public func encode() -> SqliteRowEncoder { @@ -34,8 +35,31 @@ public struct NotifySubscription: DatabaseObject, SqliteRow { encoder.encodeCodable(scope, for: "scope") encoder.encodeDate(expiry, for: "expiry") encoder.encodeString(symKey, for: "symKey") + encoder.encodeString(appAuthenticationKey, for: "appAuthenticationKey") return encoder } + + init(topic: String, account: Account, relay: RelayProtocolOptions, metadata: AppMetadata, scope: [String : ScopeValue], expiry: Date, symKey: String, appAuthenticationKey: String) { + self.topic = topic + self.account = account + self.relay = relay + self.metadata = metadata + self.scope = scope + self.expiry = expiry + self.symKey = symKey + self.appAuthenticationKey = appAuthenticationKey + } + + init(subscription: NotifySubscription, scope: [String : ScopeValue], expiry: Date) { + self.topic = subscription.topic + self.account = subscription.account + self.relay = subscription.relay + self.metadata = subscription.metadata + self.symKey = subscription.symKey + self.appAuthenticationKey = subscription.appAuthenticationKey + self.scope = scope + self.expiry = expiry + } } public struct ScopeValue: Codable, Equatable { From c3677b4dd2d3e19d5b78d001ae283db6f8653c30 Mon Sep 17 00:00:00 2001 From: Artur Guseinov Date: Thu, 2 Nov 2023 00:38:32 +0800 Subject: [PATCH 04/15] SQlite for Messages --- .../ApplicationLayer/LoggingService.swift | 2 +- Sources/Database/SQLiteQuery.swift | 4 + .../Client/Wallet/NotifyClient.swift | 5 +- .../Client/Wallet/NotifyClientFactory.swift | 4 +- .../Client/Wallet/NotifyDatabase.swift | 74 +++++++++++++++++-- .../Client/Wallet/NotifyMessageRecord.swift | 37 +++++++++- .../Client/Wallet/NotifyStorage.swift | 40 +++++----- .../DeleteNotifySubscriptionRequester.swift | 4 +- .../NotifyMessageSubscriber.swift | 2 +- .../NotifySubscribeRequester.swift | 2 - .../NotifyStorageIdntifiers.swift | 8 -- .../Types/DataStructures/NotifyMessage.swift | 4 +- 12 files changed, 134 insertions(+), 52 deletions(-) delete mode 100644 Sources/WalletConnectNotify/NotifyStorageIdntifiers.swift diff --git a/Example/WalletApp/ApplicationLayer/LoggingService.swift b/Example/WalletApp/ApplicationLayer/LoggingService.swift index e7a74cb9b..b03f7002b 100644 --- a/Example/WalletApp/ApplicationLayer/LoggingService.swift +++ b/Example/WalletApp/ApplicationLayer/LoggingService.swift @@ -49,7 +49,7 @@ final class LoggingService { SentrySDK.capture(error: LoggingError.networking(log.aggregated)) case .warn(let log): // Example of setting level to warning - var event = Event(level: .warning) + let event = Event(level: .warning) event.message = SentryMessage(formatted: log.aggregated) SentrySDK.capture(event: event) default: diff --git a/Sources/Database/SQLiteQuery.swift b/Sources/Database/SQLiteQuery.swift index 33447c371..9afa8c66a 100644 --- a/Sources/Database/SQLiteQuery.swift +++ b/Sources/Database/SQLiteQuery.swift @@ -33,6 +33,10 @@ public struct SqliteQuery { return "SELECT * FROM \(table);" } + public static func select(table: String, where argument: String, equals value: String) -> String { + return "SELECT * FROM \(table) WHERE \(argument) = '\(value);" + } + public static func delete(table: String, where argument: String, equals value: String) -> String { return "DELETE FROM \(table) WHERE \(argument) = '\(value)';" } diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyClient.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyClient.swift index 1da1f0629..bba5af964 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyClient.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyClient.swift @@ -102,8 +102,7 @@ public class NotifyClient { } public func getActiveSubscriptions(account: Account) -> [NotifySubscription] { - // TODO: Handle or remove error - return (try? notifyStorage.getSubscriptions(account: account)) ?? [] + return notifyStorage.getSubscriptions(account: account) } public func getMessageHistory(topic: String) -> [NotifyMessageRecord] { @@ -115,7 +114,7 @@ public class NotifyClient { } public func deleteNotifyMessage(id: String) { - notifyStorage.deleteMessage(id: id) + try? notifyStorage.deleteMessage(id: id) } public func register(deviceToken: Data) async throws { diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyClientFactory.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyClientFactory.swift index 6e50ece69..3e093c089 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyClientFactory.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyClientFactory.swift @@ -42,11 +42,9 @@ public struct NotifyClientFactory { explorerHost: String ) -> NotifyClient { let kms = KeyManagementService(keychain: keychainStorage) - let subscriptionStore = KeyedDatabase(storage: keyValueStorage, identifier: NotifyStorageIdntifiers.notifySubscription) - let messagesStore = KeyedDatabase(storage: keyValueStorage, identifier: NotifyStorageIdntifiers.notifyMessagesRecords) let notifyAccountProvider = NotifyAccountProvider() let database = NotifyDatabase(appGroup: groupIdentifier, database: "notify.db", sqlite: Sqlite(), logger: logger) - let notifyStorage = NotifyStorage(database: database, subscriptionStore: subscriptionStore, messagesStore: messagesStore, accountProvider: notifyAccountProvider) + let notifyStorage = NotifyStorage(database: database, accountProvider: notifyAccountProvider) let identityClient = IdentityClientFactory.create(keyserver: keyserverURL, keychain: keychainStorage, logger: logger) let notifyMessageSubscriber = NotifyMessageSubscriber(keyserver: keyserverURL, networkingInteractor: networkInteractor, identityClient: identityClient, notifyStorage: notifyStorage, crypto: crypto, logger: logger) let webDidResolver = NotifyWebDidResolver() diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift index 28d83e7a5..19134981e 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift @@ -6,6 +6,7 @@ final class NotifyDatabase { enum Table { static let subscriptions = "NotifySubscription" + static let messages = "NotifyMessage" } private let appGroup: String @@ -14,6 +15,7 @@ final class NotifyDatabase { private let logger: ConsoleLogging var onSubscriptionsUpdate: (() throws -> Void)? + var onMessagesUpdate: (() throws -> Void)? init(appGroup: String, database: String, sqlite: Sqlite, logger: ConsoleLogging) { self.appGroup = appGroup @@ -24,6 +26,8 @@ final class NotifyDatabase { prepareDatabase() } + // MARK: - NotifySubscriptions + func save(subscription: NotifySubscription) throws { try save(subscriptions: [subscription]) } @@ -34,17 +38,22 @@ final class NotifyDatabase { try onSubscriptionsUpdate?() } - func getSubscription(topic: String) throws -> NotifySubscription? { - return try getAllSubscriptions().first(where: { $0.topic == topic }) + func getSubscription(topic: String) -> NotifySubscription? { + let sql = SqliteQuery.select(table: Table.subscriptions, where: "topic", equals: topic) + let subscriptions: [NotifySubscription]? = try? query(sql: sql) + return subscriptions?.first } - func getAllSubscriptions() throws -> [NotifySubscription] { + func getAllSubscriptions() -> [NotifySubscription] { let sql = SqliteQuery.select(table: Table.subscriptions) - return try query(sql: sql) + let subscriptions: [NotifySubscription]? = try? query(sql: sql) + return subscriptions ?? [] } - func getSubscriptions(account: Account) throws -> [NotifySubscription] { - return try getAllSubscriptions().filter { $0.account == account } + func getSubscriptions(account: Account) -> [NotifySubscription] { + let sql = SqliteQuery.select(table: Table.subscriptions, where: "account", equals: account.absoluteString) + let subscriptions: [NotifySubscription]? = try? query(sql: sql) + return subscriptions ?? [] } func deleteSubscription(topic: String) throws { @@ -58,6 +67,42 @@ final class NotifyDatabase { try execute(sql: sql) try onSubscriptionsUpdate?() } + + // MARK: - NotifyMessageRecord + + func getAllMessages() -> [NotifyMessageRecord] { + let sql = SqliteQuery.select(table: Table.messages) + let messages: [NotifyMessageRecord]? = try? query(sql: sql) + return messages ?? [] + } + + func getMessages(topic: String) -> [NotifyMessageRecord] { + let sql = SqliteQuery.select(table: Table.messages, where: "topic", equals: topic) + let messages: [NotifyMessageRecord]? = try? query(sql: sql) + return messages ?? [] + } + + func deleteMessages(topic: String) throws { + let sql = SqliteQuery.delete(table: Table.messages, where: "topic", equals: topic) + try execute(sql: sql) + try onMessagesUpdate?() + } + + func deleteMessage(id: String) throws { + let sql = SqliteQuery.delete(table: Table.messages, where: "id", equals: id) + try execute(sql: sql) + try onMessagesUpdate?() + } + + func save(message: NotifyMessageRecord) throws { + try save(messages: [message]) + } + + func save(messages: [NotifyMessageRecord]) throws { + let sql = try SqliteQuery.replace(table: Table.messages, rows: messages) + try execute(sql: sql) + try onMessagesUpdate?() + } } private extension NotifyDatabase { @@ -77,8 +122,9 @@ private extension NotifyDatabase { do { defer { sqlite.closeConnection() } try sqlite.openDatabase(path: path) + try sqlite.execute(sql: """ - CREATE TABLE IF NOT EXISTS NotifySubscription ( + CREATE TABLE IF NOT EXISTS \(Table.subscriptions) ( topic TEXT PRIMARY KEY, account TEXT NOT NULL, relay TEXT NOT NULL, @@ -89,6 +135,20 @@ private extension NotifyDatabase { appAuthenticationKey TEXT NOT NULL ); """) + + try sqlite.execute(sql: """ + CREATE TABLE IF NOT EXISTS \(Table.messages) ( + id TEXT PRIMARY KEY, + topic TEXT NOT NULL, + title TEXT NOT NULL, + body TEXT NOT NULL, + icon TEXT NOT NULL, + url TEXT NOT NULL, + type TEXT NOT NULL, + publishedAt TEXT NOT NULL, + ); + """) + logger.debug("SQlite database created at path \(path)") } catch { logger.error("SQlite database creation error: \(error.localizedDescription)") diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyMessageRecord.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyMessageRecord.swift index a9431587a..d12331d34 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyMessageRecord.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyMessageRecord.swift @@ -1,6 +1,6 @@ import Foundation -public struct NotifyMessageRecord: Codable, Equatable, DatabaseObject { +public struct NotifyMessageRecord: Codable, Equatable, SqliteRow { public let id: String public let topic: String public let message: NotifyMessage @@ -9,4 +9,39 @@ public struct NotifyMessageRecord: Codable, Equatable, DatabaseObject { public var databaseId: String { return id } + + public init(id: String, topic: String, message: NotifyMessage, publishedAt: Date) { + self.id = id + self.topic = topic + self.message = message + self.publishedAt = publishedAt + } + + public init(decoder: SqliteRowDecoder) throws { + self.id = try decoder.decodeString(at: 0) + self.topic = try decoder.decodeString(at: 1) + + self.message = NotifyMessage( + title: try decoder.decodeString(at: 2), + body: try decoder.decodeString(at: 3), + icon: try decoder.decodeString(at: 4), + url: try decoder.decodeString(at: 5), + type: try decoder.decodeString(at: 6) + ) + + self.publishedAt = try decoder.decodeDate(at: 7) + } + + public func encode() -> SqliteRowEncoder { + var encoder = SqliteRowEncoder() + encoder.encodeString(id, for: "id") + encoder.encodeString(topic, for: "topic") + encoder.encodeString(message.title, for: "title") + encoder.encodeString(message.body, for: "body") + encoder.encodeString(message.icon, for: "icon") + encoder.encodeString(message.url, for: "url") + encoder.encodeString(message.type, for: "type") + encoder.encodeDate(publishedAt, for: "publishedAt") + return encoder + } } diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyStorage.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyStorage.swift index d51b5a88b..92bac470f 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyStorage.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyStorage.swift @@ -16,7 +16,6 @@ final class NotifyStorage: NotifyStoring { private var publishers = Set() - private let messagesStore: KeyedDatabase private let database: NotifyDatabase private let newSubscriptionSubject = PassthroughSubject() @@ -43,9 +42,8 @@ final class NotifyStorage: NotifyStoring { return subscriptionsSubject.eraseToAnyPublisher() } - init(database: NotifyDatabase, subscriptionStore: KeyedDatabase, messagesStore: KeyedDatabase, accountProvider: NotifyAccountProvider) { + init(database: NotifyDatabase, accountProvider: NotifyAccountProvider) { self.database = database - self.messagesStore = messagesStore self.accountProvider = accountProvider setupSubscriptions() @@ -54,15 +52,15 @@ final class NotifyStorage: NotifyStoring { // MARK: Subscriptions func getAllSubscriptions() -> [NotifySubscription] { - return (try? database.getAllSubscriptions()) ?? [] + return database.getAllSubscriptions() } - func getSubscriptions(account: Account) throws -> [NotifySubscription] { - return try database.getSubscriptions(account: account) + func getSubscriptions(account: Account) -> [NotifySubscription] { + return database.getSubscriptions(account: account) } - func getSubscription(topic: String) throws -> NotifySubscription? { - return try database.getSubscription(topic: topic) + func getSubscription(topic: String) -> NotifySubscription? { + return database.getSubscription(topic: topic) } func setSubscription(_ subscription: NotifySubscription) throws { @@ -80,8 +78,8 @@ final class NotifyStorage: NotifyStoring { } func clearDatabase(account: Account) throws { - for subscription in try getSubscriptions(account: account) { - deleteMessages(topic: subscription.topic) + for subscription in getSubscriptions(account: account) { + try database.deleteMessages(topic: subscription.topic) } try database.deleteSubscription(account: account) } @@ -102,21 +100,19 @@ final class NotifyStorage: NotifyStoring { } func getMessages(topic: String) -> [NotifyMessageRecord] { - return messagesStore.getAll(for: topic) - .sorted{$0.publishedAt > $1.publishedAt} + return database.getMessages(topic: topic) } - func deleteMessages(topic: String) { - messagesStore.deleteAll(for: topic) + func deleteMessages(topic: String) throws { + try database.deleteMessages(topic: topic) } - func deleteMessage(id: String) { - guard let result = messagesStore.find(id: id) else { return } - messagesStore.delete(id: id, for: result.key) + func deleteMessage(id: String) throws { + try database.deleteMessage(id: id) } - func setMessage(_ record: NotifyMessageRecord) { - messagesStore.set(element: record, for: record.topic) + func setMessage(_ message: NotifyMessageRecord) throws { + try database.save(message: message) } } @@ -127,13 +123,13 @@ private extension NotifyStorage { } func setupSubscriptions() { - messagesStore.onUpdate = { [unowned self] in - messagesSubject.send(messagesStore.getAll()) + database.onMessagesUpdate = { [unowned self] in + messagesSubject.send(database.getAllMessages()) } database.onSubscriptionsUpdate = { [unowned self] in let account = try accountProvider.getCurrentAccount() - subscriptionsSubject.send(try getSubscriptions(account: account)) + subscriptionsSubject.send(getSubscriptions(account: account)) } } } diff --git a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyDelete/DeleteNotifySubscriptionRequester.swift b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyDelete/DeleteNotifySubscriptionRequester.swift index ae3cc6977..b9c86009c 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyDelete/DeleteNotifySubscriptionRequester.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyDelete/DeleteNotifySubscriptionRequester.swift @@ -30,7 +30,7 @@ class DeleteNotifySubscriptionRequester { func delete(topic: String) async throws { logger.debug("Will delete notify subscription") - guard let subscription = try notifyStorage.getSubscription(topic: topic) + guard let subscription = notifyStorage.getSubscription(topic: topic) else { throw Errors.notifySubscriptionNotFound} let protocolMethod = NotifyDeleteProtocolMethod() @@ -47,7 +47,7 @@ class DeleteNotifySubscriptionRequester { try await networkingInteractor.request(request, topic: topic, protocolMethod: protocolMethod) try notifyStorage.deleteSubscription(topic: topic) - notifyStorage.deleteMessages(topic: topic) + try notifyStorage.deleteMessages(topic: topic) networkingInteractor.unsubscribe(topic: topic) diff --git a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyMessage/NotifyMessageSubscriber.swift b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyMessage/NotifyMessageSubscriber.swift index 2ebd5125f..9b9a2cd8f 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyMessage/NotifyMessageSubscriber.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyMessage/NotifyMessageSubscriber.swift @@ -38,7 +38,7 @@ class NotifyMessageSubscriber { let dappPubKey = try DIDKey(did: claims.iss) let record = NotifyMessageRecord(id: payload.id.string, topic: payload.topic, message: messagePayload.message, publishedAt: payload.publishedAt) - notifyStorage.setMessage(record) + try notifyStorage.setMessage(record) notifyMessagePublisherSubject.send(record) let receiptPayload = NotifyMessageReceiptPayload( diff --git a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_pushSubscribe/NotifySubscribeRequester.swift b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_pushSubscribe/NotifySubscribeRequester.swift index 32a875b43..1907d640e 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_pushSubscribe/NotifySubscribeRequester.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_pushSubscribe/NotifySubscribeRequester.swift @@ -36,8 +36,6 @@ class NotifySubscribeRequester { logger.debug("Subscribing for Notify, dappUrl: \(appDomain)") - let config = await notifyConfigProvider.resolveNotifyConfig(appDomain: appDomain) - let didDoc = try await webDidResolver.resolveDidDoc(appDomain: appDomain) let peerPublicKey = try webDidResolver.resolveAgreementKey(didDoc: didDoc) let subscribeTopic = peerPublicKey.rawRepresentation.sha256().toHexString() diff --git a/Sources/WalletConnectNotify/NotifyStorageIdntifiers.swift b/Sources/WalletConnectNotify/NotifyStorageIdntifiers.swift deleted file mode 100644 index b68272b25..000000000 --- a/Sources/WalletConnectNotify/NotifyStorageIdntifiers.swift +++ /dev/null @@ -1,8 +0,0 @@ -import Foundation - -enum NotifyStorageIdntifiers { - static let notifySubscription = "com.walletconnect.notify.notifySubscription" - - static let notifyMessagesRecords = "com.walletconnect.sdk.notifyMessagesRecords" - static let coldStartStore = "com.walletconnect.sdk.coldStartStore" -} diff --git a/Sources/WalletConnectNotify/Types/DataStructures/NotifyMessage.swift b/Sources/WalletConnectNotify/Types/DataStructures/NotifyMessage.swift index 783721bbd..2cd90ad8c 100644 --- a/Sources/WalletConnectNotify/Types/DataStructures/NotifyMessage.swift +++ b/Sources/WalletConnectNotify/Types/DataStructures/NotifyMessage.swift @@ -5,9 +5,9 @@ public struct NotifyMessage: Codable, Equatable { public let body: String public let icon: String public let url: String - public let type: String? + public let type: String - public init(title: String, body: String, icon: String, url: String, type: String? = nil) { + public init(title: String, body: String, icon: String, url: String, type: String) { self.title = title self.body = body self.icon = icon From 0ad5de70465d40553ba54b8a5b6f64428b98ef6a Mon Sep 17 00:00:00 2001 From: Artur Guseinov Date: Thu, 2 Nov 2023 00:48:27 +0800 Subject: [PATCH 05/15] Manual testing session --- Sources/Database/SQLiteQuery.swift | 2 +- Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift | 2 +- .../NotifySubscriptionsChangedRequestSubscriber.swift | 2 +- .../ProtocolEngine/wc_notifyUpdate/NotifyUpdateRequester.swift | 2 +- .../NotifyWatchSubscriptionsResponseSubscriber.swift | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Sources/Database/SQLiteQuery.swift b/Sources/Database/SQLiteQuery.swift index 9afa8c66a..a21927639 100644 --- a/Sources/Database/SQLiteQuery.swift +++ b/Sources/Database/SQLiteQuery.swift @@ -34,7 +34,7 @@ public struct SqliteQuery { } public static func select(table: String, where argument: String, equals value: String) -> String { - return "SELECT * FROM \(table) WHERE \(argument) = '\(value);" + return "SELECT * FROM \(table) WHERE \(argument) = '\(value)';" } public static func delete(table: String, where argument: String, equals value: String) -> String { diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift index 19134981e..62d1576fc 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift @@ -145,7 +145,7 @@ private extension NotifyDatabase { icon TEXT NOT NULL, url TEXT NOT NULL, type TEXT NOT NULL, - publishedAt TEXT NOT NULL, + publishedAt TEXT NOT NULL ); """) diff --git a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifySubscriptionsChanged/NotifySubscriptionsChangedRequestSubscriber.swift b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifySubscriptionsChanged/NotifySubscriptionsChangedRequestSubscriber.swift index 91f299e59..a7c9cdd95 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifySubscriptionsChanged/NotifySubscriptionsChangedRequestSubscriber.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifySubscriptionsChanged/NotifySubscriptionsChangedRequestSubscriber.swift @@ -51,7 +51,7 @@ class NotifySubscriptionsChangedRequestSubscriber { // TODO: varify signature with notify server diddoc authentication key - let oldSubscriptions = try notifyStorage.getSubscriptions(account: account) + let oldSubscriptions = notifyStorage.getSubscriptions(account: account) let newSubscriptions = try await notifySubscriptionsBuilder.buildSubscriptions(jwtPayload.subscriptions) subscriptionChangedSubject.send(newSubscriptions) diff --git a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyUpdate/NotifyUpdateRequester.swift b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyUpdate/NotifyUpdateRequester.swift index cf9a44f02..104c5d31a 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyUpdate/NotifyUpdateRequester.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyUpdate/NotifyUpdateRequester.swift @@ -35,7 +35,7 @@ class NotifyUpdateRequester: NotifyUpdateRequesting { func update(topic: String, scope: Set) async throws { logger.debug("NotifyUpdateRequester: updating subscription for topic: \(topic)") - guard let subscription = try notifyStorage.getSubscription(topic: topic) else { throw Errors.noSubscriptionForGivenTopic } + guard let subscription = notifyStorage.getSubscription(topic: topic) else { throw Errors.noSubscriptionForGivenTopic } let dappAuthenticationKey = try DIDKey(did: subscription.appAuthenticationKey) diff --git a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyWatchSubscriptions/NotifyWatchSubscriptionsResponseSubscriber.swift b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyWatchSubscriptions/NotifyWatchSubscriptionsResponseSubscriber.swift index 541c0279e..dccdcbdd7 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyWatchSubscriptions/NotifyWatchSubscriptionsResponseSubscriber.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/ProtocolEngine/wc_notifyWatchSubscriptions/NotifyWatchSubscriptionsResponseSubscriber.swift @@ -40,7 +40,7 @@ class NotifyWatchSubscriptionsResponseSubscriber { let account = watchSubscriptionPayloadRequest.subscriptionAccount // TODO: varify signature with notify server diddoc authentication key - let oldSubscriptions = try notifyStorage.getSubscriptions(account: account) + let oldSubscriptions = notifyStorage.getSubscriptions(account: account) let newSubscriptions = try await notifySubscriptionsBuilder.buildSubscriptions(responsePayload.subscriptions) try Task.checkCancellation() From 9cd1164bec73709421aa804f698475e21537848a Mon Sep 17 00:00:00 2001 From: Artur Guseinov Date: Thu, 2 Nov 2023 01:27:34 +0800 Subject: [PATCH 06/15] Memory database for tests --- .../IntegrationTests/Push/NotifyTests.swift | 4 +- Sources/Database/DiskSqlite.swift | 51 +++++++++++++++++++ Sources/Database/MemorySqlite.swift | 49 ++++++++++++++++++ Sources/Database/Sqlite.swift | 45 ++-------------- Sources/Database/SqliteError.swift | 1 + .../Client/Wallet/NotifyClientFactory.swift | 19 +++++-- .../Client/Wallet/NotifyDatabase.swift | 25 ++------- .../Client/Wallet/NotifyStorage.swift | 6 +-- .../NotifyTests/Mocks/MockNotifyStoring.swift | 4 +- 9 files changed, 134 insertions(+), 70 deletions(-) create mode 100644 Sources/Database/DiskSqlite.swift create mode 100644 Sources/Database/MemorySqlite.swift diff --git a/Example/IntegrationTests/Push/NotifyTests.swift b/Example/IntegrationTests/Push/NotifyTests.swift index 9c9fdc96d..1fbb8aaae 100644 --- a/Example/IntegrationTests/Push/NotifyTests.swift +++ b/Example/IntegrationTests/Push/NotifyTests.swift @@ -74,9 +74,11 @@ final class NotifyTests: XCTestCase { keychainStorage: keychain, environment: .sandbox) let keyserverURL = URL(string: "https://keys.walletconnect.com")! + let sqlite = try! MemorySqlite() // Note:- prod project_id do not exists on staging, we can use gmDappProjectId let client = NotifyClientFactory.create(projectId: InputConfig.gmDappProjectId, - keyserverURL: keyserverURL, + keyserverURL: keyserverURL, + sqlite: sqlite, logger: notifyLogger, keyValueStorage: keyValueStorage, keychainStorage: keychain, diff --git a/Sources/Database/DiskSqlite.swift b/Sources/Database/DiskSqlite.swift new file mode 100644 index 000000000..516d75c63 --- /dev/null +++ b/Sources/Database/DiskSqlite.swift @@ -0,0 +1,51 @@ +import Foundation +import SQLite3 + +public final class DiskSqlite: Sqlite { + + private let path: String + + private var db: OpaquePointer? + + public init(path: String) { + self.path = path + } + + public func openDatabase() throws { + guard sqlite3_open_v2(path, &db, SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_FULLMUTEX, nil) == SQLITE_OK else { + throw SQLiteError.openDatabase(path: path) + } + var error: UnsafeMutablePointer? + guard sqlite3_exec(db, "PRAGMA journal_mode=WAL;", nil, nil, &error) == SQLITE_OK else { + let message = error.map { String(cString: $0) } + throw SQLiteError.exec(error: message) + } + } + + public func query(sql: String) throws -> [Row] { + var queryStatement: OpaquePointer? + guard sqlite3_prepare_v2(db, sql, -1, &queryStatement, nil) == SQLITE_OK else { + throw SQLiteError.queryPrepare(statement: sql) + } + var rows: [Row] = [] + while sqlite3_step(queryStatement) == SQLITE_ROW { + let decoder = SqliteRowDecoder(statement: queryStatement) + guard let row = try? Row(decoder: decoder) else { continue } + rows.append(row) + } + sqlite3_finalize(queryStatement) + return rows + } + + public func execute(sql: String) throws { + var error: UnsafeMutablePointer? + guard sqlite3_exec(db, sql, nil, nil, &error) == SQLITE_OK else { + let message = error.map { String(cString: $0) } + throw SQLiteError.exec(error: message) + } + } + + public func closeConnection() { + sqlite3_close(db) + } +} diff --git a/Sources/Database/MemorySqlite.swift b/Sources/Database/MemorySqlite.swift new file mode 100644 index 000000000..b0ea8ba3d --- /dev/null +++ b/Sources/Database/MemorySqlite.swift @@ -0,0 +1,49 @@ +import Foundation +import SQLite3 + +public final class MemorySqlite: Sqlite { + + private var db: OpaquePointer? + + public init() throws { + guard sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_FULLMUTEX, nil) == SQLITE_OK else { + throw SQLiteError.openDatabaseMemory + } + var error: UnsafeMutablePointer? + guard sqlite3_exec(db, "PRAGMA journal_mode=WAL;", nil, nil, &error) == SQLITE_OK else { + let message = error.map { String(cString: $0) } + throw SQLiteError.exec(error: message) + } + } + + public func openDatabase() throws { + // No op + } + + public func query(sql: String) throws -> [Row] { + var queryStatement: OpaquePointer? + guard sqlite3_prepare_v2(db, sql, -1, &queryStatement, nil) == SQLITE_OK else { + throw SQLiteError.queryPrepare(statement: sql) + } + var rows: [Row] = [] + while sqlite3_step(queryStatement) == SQLITE_ROW { + let decoder = SqliteRowDecoder(statement: queryStatement) + guard let row = try? Row(decoder: decoder) else { continue } + rows.append(row) + } + sqlite3_finalize(queryStatement) + return rows + } + + public func execute(sql: String) throws { + var error: UnsafeMutablePointer? + guard sqlite3_exec(db, sql, nil, nil, &error) == SQLITE_OK else { + let message = error.map { String(cString: $0) } + throw SQLiteError.exec(error: message) + } + } + + public func closeConnection() { + // No op + } +} diff --git a/Sources/Database/Sqlite.swift b/Sources/Database/Sqlite.swift index 4ffa53143..1770872af 100644 --- a/Sources/Database/Sqlite.swift +++ b/Sources/Database/Sqlite.swift @@ -1,55 +1,20 @@ import Foundation import SQLite3 -public final class Sqlite { - - private var db: OpaquePointer? - - public init() { } +public protocol Sqlite { /// Opening A New Database Connection - /// - Parameter path: Path to database - public func openDatabase(path: String) throws { - guard sqlite3_open_v2(path, &db, SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_FULLMUTEX, nil) == SQLITE_OK else { - throw SQLiteError.openDatabase(path: path) - } - var error: UnsafeMutablePointer? - guard sqlite3_exec(db, "PRAGMA journal_mode=WAL;", nil, nil, &error) == SQLITE_OK else { - let message = error.map { String(cString: $0) } - throw SQLiteError.exec(error: message) - } - } + func openDatabase() throws /// Evaluate an SQL Statement /// - Parameter sql: SQL query /// - Returns: Table rows array - public func query(sql: String) throws -> [Row] { - var queryStatement: OpaquePointer? - guard sqlite3_prepare_v2(db, sql, -1, &queryStatement, nil) == SQLITE_OK else { - throw SQLiteError.queryPrepare(statement: sql) - } - var rows: [Row] = [] - while sqlite3_step(queryStatement) == SQLITE_ROW { - let decoder = SqliteRowDecoder(statement: queryStatement) - guard let row = try? Row(decoder: decoder) else { continue } - rows.append(row) - } - sqlite3_finalize(queryStatement) - return rows - } + func query(sql: String) throws -> [Row] /// One-Step query execution /// - Parameter sql: SQL query - public func execute(sql: String) throws { - var error: UnsafeMutablePointer? - guard sqlite3_exec(db, sql, nil, nil, &error) == SQLITE_OK else { - let message = error.map { String(cString: $0) } - throw SQLiteError.exec(error: message) - } - } + func execute(sql: String) throws /// Closing A Database Connection - public func closeConnection() { - sqlite3_close(db) - } + func closeConnection() } diff --git a/Sources/Database/SqliteError.swift b/Sources/Database/SqliteError.swift index cecf7dd89..9915bca06 100644 --- a/Sources/Database/SqliteError.swift +++ b/Sources/Database/SqliteError.swift @@ -2,6 +2,7 @@ import Foundation public enum SQLiteError: Error { case openDatabase(path: String) + case openDatabaseMemory case queryPrepare(statement: String) case exec(error: String?) case decodeString(index: Int32) diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyClientFactory.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyClientFactory.swift index 3e093c089..807927a7f 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyClientFactory.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyClientFactory.swift @@ -8,11 +8,13 @@ public struct NotifyClientFactory { let keyserverURL = URL(string: "https://keys.walletconnect.com")! let keychainStorage = KeychainStorage(serviceIdentifier: "com.walletconnect.sdk") let groupKeychainService = GroupKeychainStorage(serviceIdentifier: groupIdentifier) + let databasePath = databasePath(appGroup: groupIdentifier, database: "notify.db") + let sqlite = DiskSqlite(path: databasePath) return NotifyClientFactory.create( projectId: projectId, keyserverURL: keyserverURL, - groupIdentifier: groupIdentifier, + sqlite: sqlite, logger: logger, keyValueStorage: keyValueStorage, keychainStorage: keychainStorage, @@ -29,7 +31,7 @@ public struct NotifyClientFactory { static func create( projectId: String, keyserverURL: URL, - groupIdentifier: String, + sqlite: Sqlite, logger: ConsoleLogging, keyValueStorage: KeyValueStorage, keychainStorage: KeychainStorageProtocol, @@ -43,7 +45,7 @@ public struct NotifyClientFactory { ) -> NotifyClient { let kms = KeyManagementService(keychain: keychainStorage) let notifyAccountProvider = NotifyAccountProvider() - let database = NotifyDatabase(appGroup: groupIdentifier, database: "notify.db", sqlite: Sqlite(), logger: logger) + let database = NotifyDatabase(sqlite: sqlite, logger: logger) let notifyStorage = NotifyStorage(database: database, accountProvider: notifyAccountProvider) let identityClient = IdentityClientFactory.create(keyserver: keyserverURL, keychain: keychainStorage, logger: logger) let notifyMessageSubscriber = NotifyMessageSubscriber(keyserver: keyserverURL, networkingInteractor: networkInteractor, identityClient: identityClient, notifyStorage: notifyStorage, crypto: crypto, logger: logger) @@ -93,4 +95,15 @@ public struct NotifyClientFactory { subscriptionWatcher: subscriptionWatcher ) } + + static func databasePath(appGroup: String, database: String) -> String { + guard let path = FileManager.default + .containerURL(forSecurityApplicationGroupIdentifier: appGroup)? + .appendingPathComponent(database) else { + + fatalError("Database path not exists") + } + + return path.absoluteString + } } diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift index 62d1576fc..9e6110e2b 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyDatabase.swift @@ -9,17 +9,13 @@ final class NotifyDatabase { static let messages = "NotifyMessage" } - private let appGroup: String - private let database: String private let sqlite: Sqlite private let logger: ConsoleLogging var onSubscriptionsUpdate: (() throws -> Void)? var onMessagesUpdate: (() throws -> Void)? - init(appGroup: String, database: String, sqlite: Sqlite, logger: ConsoleLogging) { - self.appGroup = appGroup - self.database = database + init(sqlite: Sqlite, logger: ConsoleLogging) { self.sqlite = sqlite self.logger = logger @@ -107,21 +103,10 @@ final class NotifyDatabase { private extension NotifyDatabase { - var path: String { - guard let path = FileManager.default - .containerURL(forSecurityApplicationGroupIdentifier: appGroup)? - .appendingPathComponent(database) else { - - fatalError("Database path not exists") - } - - return path.absoluteString - } - func prepareDatabase() { do { defer { sqlite.closeConnection() } - try sqlite.openDatabase(path: path) + try sqlite.openDatabase() try sqlite.execute(sql: """ CREATE TABLE IF NOT EXISTS \(Table.subscriptions) ( @@ -149,21 +134,21 @@ private extension NotifyDatabase { ); """) - logger.debug("SQlite database created at path \(path)") + logger.debug("SQlite database created") } catch { logger.error("SQlite database creation error: \(error.localizedDescription)") } } func execute(sql: String) throws { - try sqlite.openDatabase(path: path) + try sqlite.openDatabase() defer { sqlite.closeConnection() } try sqlite.execute(sql: sql) } func query(sql: String) throws -> [T] { - try sqlite.openDatabase(path: path) + try sqlite.openDatabase() defer { sqlite.closeConnection() } return try sqlite.query(sql: sql) diff --git a/Sources/WalletConnectNotify/Client/Wallet/NotifyStorage.swift b/Sources/WalletConnectNotify/Client/Wallet/NotifyStorage.swift index 92bac470f..832e92dc3 100644 --- a/Sources/WalletConnectNotify/Client/Wallet/NotifyStorage.swift +++ b/Sources/WalletConnectNotify/Client/Wallet/NotifyStorage.swift @@ -3,13 +3,11 @@ import Combine protocol NotifyStoring { func getAllSubscriptions() -> [NotifySubscription] - func getSubscriptions(account: Account) throws -> [NotifySubscription] - func getSubscription(topic: String) throws -> NotifySubscription? + func getSubscriptions(account: Account) -> [NotifySubscription] + func getSubscription(topic: String) -> NotifySubscription? func setSubscription(_ subscription: NotifySubscription) throws - func replaceAllSubscriptions(_ subscriptions: [NotifySubscription]) throws func deleteSubscription(topic: String) throws func clearDatabase(account: Account) throws - func updateSubscription(_ subscription: NotifySubscription, scope: [String: ScopeValue], expiry: UInt64) throws } final class NotifyStorage: NotifyStoring { diff --git a/Tests/NotifyTests/Mocks/MockNotifyStoring.swift b/Tests/NotifyTests/Mocks/MockNotifyStoring.swift index bd773936c..e5df4531f 100644 --- a/Tests/NotifyTests/Mocks/MockNotifyStoring.swift +++ b/Tests/NotifyTests/Mocks/MockNotifyStoring.swift @@ -21,7 +21,7 @@ class MockNotifyStoring: NotifyStoring { return subscriptions } - func setSubscription(_ subscription: NotifySubscription) async throws { + func setSubscription(_ subscription: NotifySubscription) { if let index = subscriptions.firstIndex(where: { $0.topic == subscription.topic }) { subscriptions[index] = subscription } else { @@ -33,7 +33,7 @@ class MockNotifyStoring: NotifyStoring { subscriptions = subscriptions.filter { $0.account != account } } - func deleteSubscription(topic: String) async throws { + func deleteSubscription(topic: String) throws { subscriptions.removeAll(where: { $0.topic == topic }) } } From d59c8c51192651a0c627c8cbdf191966a9b6c069 Mon Sep 17 00:00:00 2001 From: Artur Guseinov Date: Thu, 2 Nov 2023 01:30:23 +0800 Subject: [PATCH 07/15] Database library def removed --- Package.swift | 3 --- 1 file changed, 3 deletions(-) diff --git a/Package.swift b/Package.swift index f43771ef7..0f7ce4e77 100644 --- a/Package.swift +++ b/Package.swift @@ -49,9 +49,6 @@ let package = Package( .library( name: "WalletConnectModal", targets: ["WalletConnectModal"]), - .library( - name: "Database", // TODO: Remove library - targets: ["Database"]), ], dependencies: [ From bd40f8e8dfee1bb5e608ca94e5a53f89e97ce2e8 Mon Sep 17 00:00:00 2001 From: Artur Guseinov Date: Thu, 2 Nov 2023 15:02:43 +0800 Subject: [PATCH 08/15] Sqlite journal_mode disabled --- Sources/Database/DiskSqlite.swift | 5 ----- Sources/Database/MemorySqlite.swift | 5 ----- 2 files changed, 10 deletions(-) diff --git a/Sources/Database/DiskSqlite.swift b/Sources/Database/DiskSqlite.swift index 516d75c63..19ffba05e 100644 --- a/Sources/Database/DiskSqlite.swift +++ b/Sources/Database/DiskSqlite.swift @@ -15,11 +15,6 @@ public final class DiskSqlite: Sqlite { guard sqlite3_open_v2(path, &db, SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_FULLMUTEX, nil) == SQLITE_OK else { throw SQLiteError.openDatabase(path: path) } - var error: UnsafeMutablePointer? - guard sqlite3_exec(db, "PRAGMA journal_mode=WAL;", nil, nil, &error) == SQLITE_OK else { - let message = error.map { String(cString: $0) } - throw SQLiteError.exec(error: message) - } } public func query(sql: String) throws -> [Row] { diff --git a/Sources/Database/MemorySqlite.swift b/Sources/Database/MemorySqlite.swift index b0ea8ba3d..640098d04 100644 --- a/Sources/Database/MemorySqlite.swift +++ b/Sources/Database/MemorySqlite.swift @@ -9,11 +9,6 @@ public final class MemorySqlite: Sqlite { guard sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_FULLMUTEX, nil) == SQLITE_OK else { throw SQLiteError.openDatabaseMemory } - var error: UnsafeMutablePointer? - guard sqlite3_exec(db, "PRAGMA journal_mode=WAL;", nil, nil, &error) == SQLITE_OK else { - let message = error.map { String(cString: $0) } - throw SQLiteError.exec(error: message) - } } public func openDatabase() throws { From cdef5d9bbd65bb7ef7c8e3cbd0436a31c47b1947 Mon Sep 17 00:00:00 2001 From: Radek Novak Date: Fri, 3 Nov 2023 12:36:26 +0100 Subject: [PATCH 09/15] Remove unnecessary import --- Sources/WalletConnectModal/Networking/Explorer/ExplorerAPI.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/Sources/WalletConnectModal/Networking/Explorer/ExplorerAPI.swift b/Sources/WalletConnectModal/Networking/Explorer/ExplorerAPI.swift index 806ae02c7..f52a3db67 100644 --- a/Sources/WalletConnectModal/Networking/Explorer/ExplorerAPI.swift +++ b/Sources/WalletConnectModal/Networking/Explorer/ExplorerAPI.swift @@ -1,5 +1,4 @@ import Foundation -import HTTPClient enum ExplorerAPI: HTTPService { case getListings( From 625aa0fd28064946e9b852936f8b0a333554a3f8 Mon Sep 17 00:00:00 2001 From: Radek Novak Date: Fri, 3 Nov 2023 12:45:29 +0100 Subject: [PATCH 10/15] Fix Bundle.module --- Sources/WalletConnectModal/Extensions/Bundle.swift | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Sources/WalletConnectModal/Extensions/Bundle.swift diff --git a/Sources/WalletConnectModal/Extensions/Bundle.swift b/Sources/WalletConnectModal/Extensions/Bundle.swift new file mode 100644 index 000000000..a68d32564 --- /dev/null +++ b/Sources/WalletConnectModal/Extensions/Bundle.swift @@ -0,0 +1,7 @@ +import Foundation + +#if CocoaPods +extension Bundle { + static var module: Bundle { Bundle.init(for: WalletConnectModal.self) } +} +#endif From 692372fcd54c4ef2ef0bf94f85bce28ddce2c527 Mon Sep 17 00:00:00 2001 From: Radek Novak Date: Fri, 3 Nov 2023 17:12:21 +0100 Subject: [PATCH 11/15] Update podspec + fix macos 10.15 support --- .../Extensions/Image+Backport.swift | 12 ++++++++++++ .../Extensions/View+Backport.swift | 14 ++++++++++++++ .../Modal/ModalContainerView.swift | 12 ++++++++---- Sources/WalletConnectModal/Modal/ModalSheet.swift | 4 ++-- .../Modal/Screens/GetAWalletView.swift | 2 +- .../Modal/Screens/WalletDetail/WalletDetail.swift | 6 +++--- Sources/WalletConnectModal/UI/Common/Toast.swift | 4 ++-- .../UI/Common/Web3ModalPicker.swift | 2 +- WalletConnectSwiftV2.podspec | 6 ++++++ 9 files changed, 49 insertions(+), 13 deletions(-) create mode 100644 Sources/WalletConnectModal/Extensions/Image+Backport.swift diff --git a/Sources/WalletConnectModal/Extensions/Image+Backport.swift b/Sources/WalletConnectModal/Extensions/Image+Backport.swift new file mode 100644 index 000000000..bab1f5e17 --- /dev/null +++ b/Sources/WalletConnectModal/Extensions/Image+Backport.swift @@ -0,0 +1,12 @@ +import SwiftUI + +extension Image { + + init(sfSymbolName: String) { + if #available(macOS 11, iOS 13, *) { + self.init(systemName: sfSymbolName) + } else { + self.init("", bundle: nil) + } + } +} diff --git a/Sources/WalletConnectModal/Extensions/View+Backport.swift b/Sources/WalletConnectModal/Extensions/View+Backport.swift index c8025f061..b93de0e16 100644 --- a/Sources/WalletConnectModal/Extensions/View+Backport.swift +++ b/Sources/WalletConnectModal/Extensions/View+Backport.swift @@ -2,6 +2,9 @@ import Combine import SwiftUI extension View { + + #if os(iOS) + /// A backwards compatible wrapper for iOS 14 `onChange` @ViewBuilder func onChangeBackported(of value: T, perform: @escaping (T) -> Void) -> some View { @@ -13,4 +16,15 @@ extension View { } } } + + #elseif os(macOS) + + @ViewBuilder + func onChangeBackported(of value: T, perform: @escaping (T) -> Void) -> some View { + self.onReceive(Just(value)) { value in + perform(value) + } + } + + #endif } diff --git a/Sources/WalletConnectModal/Modal/ModalContainerView.swift b/Sources/WalletConnectModal/Modal/ModalContainerView.swift index 4bdbefc8a..ab24e444b 100644 --- a/Sources/WalletConnectModal/Modal/ModalContainerView.swift +++ b/Sources/WalletConnectModal/Modal/ModalContainerView.swift @@ -37,11 +37,15 @@ struct ModalContainerView: View { ) .edgesIgnoringSafeArea(.all) .transform { - if #available(iOS 14.0, *) { - $0.ignoresSafeArea(.keyboard, edges: .bottom) - } else { + #if os(iOS) + if #available(iOS 14.0, *) { + $0.ignoresSafeArea(.keyboard, edges: .bottom) + } else { + $0 + } + #else $0 - } + #endif } .onChangeBackported(of: showModal, perform: { newValue in if newValue == false { diff --git a/Sources/WalletConnectModal/Modal/ModalSheet.swift b/Sources/WalletConnectModal/Modal/ModalSheet.swift index c51e69d2b..b09226db0 100644 --- a/Sources/WalletConnectModal/Modal/ModalSheet.swift +++ b/Sources/WalletConnectModal/Modal/ModalSheet.swift @@ -81,7 +81,7 @@ public struct ModalSheet: View { VStack { if viewModel.destination.hasSearch { HStack { - Image(systemName: "magnifyingglass") + Image(sfSymbolName: "magnifyingglass") TextField("Search", text: $viewModel.searchTerm, onEditingChanged: { editing in self.searchEditing = editing }) @@ -186,7 +186,7 @@ extension ModalSheet { viewModel.onBackButton() } } label: { - Image(systemName: "chevron.backward") + Image(sfSymbolName: "chevron.backward") .padding(20) } } diff --git a/Sources/WalletConnectModal/Modal/Screens/GetAWalletView.swift b/Sources/WalletConnectModal/Modal/Screens/GetAWalletView.swift index d9f8e1f30..b5f2c7438 100644 --- a/Sources/WalletConnectModal/Modal/Screens/GetAWalletView.swift +++ b/Sources/WalletConnectModal/Modal/Screens/GetAWalletView.swift @@ -22,7 +22,7 @@ struct GetAWalletView: View { Spacer() - Image(systemName: "chevron.right") + Image(sfSymbolName: "chevron.right") .font(.system(.footnote).weight(.semibold)) } } diff --git a/Sources/WalletConnectModal/Modal/Screens/WalletDetail/WalletDetail.swift b/Sources/WalletConnectModal/Modal/Screens/WalletDetail/WalletDetail.swift index 3bae82d17..2fb5f1bff 100644 --- a/Sources/WalletConnectModal/Modal/Screens/WalletDetail/WalletDetail.swift +++ b/Sources/WalletConnectModal/Modal/Screens/WalletDetail/WalletDetail.swift @@ -18,9 +18,9 @@ struct WalletDetail: View { HStack { switch item { case .native: - Image(systemName: "iphone") + Image(sfSymbolName: "iphone") case .browser: - Image(systemName: "safari") + Image(sfSymbolName: "safari") } Text(item.rawValue.capitalized) } @@ -181,7 +181,7 @@ struct WalletDetail: View { .foregroundColor(.foreground2) .font(.system(size: 14).weight(.semibold)) - Image(systemName: "chevron.right") + Image(sfSymbolName: "chevron.right") .foregroundColor(.foreground2) } } diff --git a/Sources/WalletConnectModal/UI/Common/Toast.swift b/Sources/WalletConnectModal/UI/Common/Toast.swift index f8e276a25..e637cee46 100644 --- a/Sources/WalletConnectModal/UI/Common/Toast.swift +++ b/Sources/WalletConnectModal/UI/Common/Toast.swift @@ -40,7 +40,7 @@ struct ToastView: View { var body: some View { HStack(alignment: .center, spacing: 12) { - Image(systemName: style.iconFileName) + Image(sfSymbolName: style.iconFileName) .foregroundColor(style.themeColor) Text(message) .font(Font.caption) @@ -51,7 +51,7 @@ struct ToastView: View { Button { onCancelTapped() } label: { - Image(systemName: "xmark") + Image(sfSymbolName: "xmark") .foregroundColor(style.themeColor) } } diff --git a/Sources/WalletConnectModal/UI/Common/Web3ModalPicker.swift b/Sources/WalletConnectModal/UI/Common/Web3ModalPicker.swift index 0822b7fc9..31ba098ad 100644 --- a/Sources/WalletConnectModal/UI/Common/Web3ModalPicker.swift +++ b/Sources/WalletConnectModal/UI/Common/Web3ModalPicker.swift @@ -94,7 +94,7 @@ struct PreviewWeb3ModalPicker: View { ) { item in HStack { - Image(systemName: "iphone") + Image(sfSymbolName: "iphone") Text(item.rawValue.capitalized) } .font(.system(size: 14).weight(.semibold)) diff --git a/WalletConnectSwiftV2.podspec b/WalletConnectSwiftV2.podspec index cc6ab4f3d..29cf98ffe 100644 --- a/WalletConnectSwiftV2.podspec +++ b/WalletConnectSwiftV2.podspec @@ -189,4 +189,10 @@ Pod::Spec.new do |spec| spec.subspec 'HTTPClient' do |ss| ss.source_files = 'Sources/HTTPClient/**/*.{h,m,swift}' end + + spec.subspec 'WalletConnectModal' do |ss| + ss.source_files = 'Sources/WalletConnectModal/**/*.{h,m,swift}' + ss.dependency 'WalletConnectSwiftV2/WalletConnectSign' + ss.dependency 'DSF_QRCode', '~> 16.1.1' + end end From 63b78dfe528c8f77eca91f297daf7f44f032114f Mon Sep 17 00:00:00 2001 From: Artur Guseinov Date: Mon, 6 Nov 2023 10:17:28 +0800 Subject: [PATCH 12/15] Subscriptions empty screen --- .../Contents.json | 12 +++ .../subscriptions_empty_background.png | Bin 0 -> 265141 bytes .../Contents.json | 12 +++ .../subscriptions_empty_icon.svg | 30 ++++++ .../Notifications/NotificationsView.swift | 95 +++++++++++------- 5 files changed, 114 insertions(+), 35 deletions(-) create mode 100644 Example/WalletApp/Other/Assets.xcassets/subscriptions_empty_background.imageset/Contents.json create mode 100644 Example/WalletApp/Other/Assets.xcassets/subscriptions_empty_background.imageset/subscriptions_empty_background.png create mode 100644 Example/WalletApp/Other/Assets.xcassets/subscriptions_empty_icon.imageset/Contents.json create mode 100644 Example/WalletApp/Other/Assets.xcassets/subscriptions_empty_icon.imageset/subscriptions_empty_icon.svg diff --git a/Example/WalletApp/Other/Assets.xcassets/subscriptions_empty_background.imageset/Contents.json b/Example/WalletApp/Other/Assets.xcassets/subscriptions_empty_background.imageset/Contents.json new file mode 100644 index 000000000..14f69feeb --- /dev/null +++ b/Example/WalletApp/Other/Assets.xcassets/subscriptions_empty_background.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "subscriptions_empty_background.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/WalletApp/Other/Assets.xcassets/subscriptions_empty_background.imageset/subscriptions_empty_background.png b/Example/WalletApp/Other/Assets.xcassets/subscriptions_empty_background.imageset/subscriptions_empty_background.png new file mode 100644 index 0000000000000000000000000000000000000000..cfdcc06ae140430c12d37a4acf3766cda6151bc0 GIT binary patch literal 265141 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%0A@qop~P)k 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

Cvk~C4ilL(C@nyhsOVSV#t#gBxt0AVB!MT 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/WalletApp/PresentationLayer/Wallet/Notifications/NotificationsView.swift b/Example/WalletApp/PresentationLayer/Wallet/Notifications/NotificationsView.swift index 73151545c..343eac466 100644 --- a/Example/WalletApp/PresentationLayer/Wallet/Notifications/NotificationsView.swift +++ b/Example/WalletApp/PresentationLayer/Wallet/Notifications/NotificationsView.swift @@ -15,35 +15,51 @@ struct NotificationsView: View { List { Section { if selectedIndex == 0 { - notifications() + if presenter.subscriptionViewModels.isEmpty { + emptySubscriptionsView() + } else { + notifications() + } } else { discover() } } header: { - HStack { - SegmentedPicker(["Notifications", "Discover"], - selectedIndex: Binding( - get: { selectedIndex }, - set: { selectedIndex = $0 ?? 0 }), - content: { item, isSelected in - Text(item) - .font(.system(size: 16, weight: .medium)) - .foregroundColor(isSelected ? Color.primary : Color.secondary ) - .padding(.trailing, 32) - .padding(.vertical, 8) - }, selection: { - VStack(spacing: 0) { - Spacer() - Rectangle() - .fill(.Blue100) - .frame(height: 2) + VStack(spacing: 0) { + HStack { + SegmentedPicker(["Subscriptions", "Discover"], + selectedIndex: Binding( + get: { selectedIndex }, + set: { selectedIndex = $0 ?? 0 }), + content: { item, isSelected in + Text(item) + .font(.system(size: 16, weight: .medium)) + .foregroundColor(isSelected ? Color.primary : Color.secondary ) .padding(.trailing, 32) - } - }) + .padding(.vertical, 8) + }, selection: { + VStack(spacing: 0) { + Spacer() + Rectangle() + .fill(.Blue100) + .frame(height: 2) + .padding(.trailing, 32) + } + }) + .padding(.horizontal, 20) + .animation(.easeInOut(duration: 0.3)) + + Spacer() + } + + Rectangle() + .foregroundColor(.black.opacity(0.03)) + .frame(maxWidth: .infinity) + .frame(height: 1) } - .animation(.easeInOut(duration: 0.3)) .listRowBackground(Color.clear) } + .listRowInsets(EdgeInsets()) + .listRowSeparator(.hidden) } .listStyle(PlainListStyle()) } @@ -57,28 +73,37 @@ struct NotificationsView: View { discoverListRow(listing: listing) .listRowSeparator(.hidden) .listRowBackground(Color.clear) + .listRowInsets(EdgeInsets(top: 16, leading: 20, bottom: 0, trailing: 20)) } } private func emptySubscriptionsView() -> some View { - VStack(spacing: 10) { - Spacer() - - Image(systemName: "bell.badge.fill") + ZStack { + Image("subscriptions_empty_background") .resizable() - .frame(width: 32, height: 32) - .aspectRatio(contentMode: .fit) - .foregroundColor(.grey50) + .frame(maxWidth: .infinity) + .ignoresSafeArea() - Text("Notifications from connected apps will appear here. To enable notifications, visit the app in your browser and look for a \(Image(systemName: "bell.fill")) notifications toggle \(Image(systemName: "switch.2"))") - .foregroundColor(.grey50) - .font(.system(size: 15, weight: .regular, design: .rounded)) - .multilineTextAlignment(.center) - .lineSpacing(4) + VStack(spacing: 0) { + Image("subscriptions_empty_icon") - Spacer() + Text("Add your first app") + .foregroundColor(.Foreground100) + .font(.large700) + .padding(.bottom, 8.0) + + Text("Head over to “Discover” and\nsubscribe to one of our apps to start\nreceiving notifications") + .multilineTextAlignment(.center) + .foregroundColor(.Foreground200) + .font(.paragraph500) + .padding(.bottom, 16.0) + + Button("Discover apps") { + selectedIndex = 1 + } + .buttonStyle(W3MButtonStyle(size: .m, variant: .main)) + } } - .padding(20) } private func notifications() -> some View { From ff33d379bbe3fdda0b068978dbd90d93ba7ebdd1 Mon Sep 17 00:00:00 2001 From: Artur Guseinov Date: Mon, 6 Nov 2023 10:56:57 +0800 Subject: [PATCH 13/15] Subscription empty view --- .../Contents.json | 12 ++++++++ .../subscription_empty_icon.png | Bin 0 -> 36776 bytes .../PushMessages/SubscriptionView.swift | 28 ++++++++++-------- 3 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 Example/WalletApp/Other/Assets.xcassets/subscription_empty_icon.imageset/Contents.json create mode 100644 Example/WalletApp/Other/Assets.xcassets/subscription_empty_icon.imageset/subscription_empty_icon.png diff --git a/Example/WalletApp/Other/Assets.xcassets/subscription_empty_icon.imageset/Contents.json b/Example/WalletApp/Other/Assets.xcassets/subscription_empty_icon.imageset/Contents.json new file mode 100644 index 000000000..2410c5c51 --- /dev/null +++ b/Example/WalletApp/Other/Assets.xcassets/subscription_empty_icon.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "subscription_empty_icon.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/WalletApp/Other/Assets.xcassets/subscription_empty_icon.imageset/subscription_empty_icon.png b/Example/WalletApp/Other/Assets.xcassets/subscription_empty_icon.imageset/subscription_empty_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..70f324724b807f23e57f0de20bef822940ac86ab GIT binary patch literal 36776 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 some View { - VStack(spacing: 10) { - Image(systemName: "bell.badge.fill") - .resizable() - .frame(width: 32, height: 32) - .aspectRatio(contentMode: .fit) - .foregroundColor(.grey50) - - Text("Notifications from connected apps will appear here. To enable notifications, visit the app in your browser and look for a \(Image(systemName: "bell.fill")) notifications toggle \(Image(systemName: "switch.2"))") - .foregroundColor(.grey50) - .font(.system(size: 15, weight: .regular, design: .rounded)) - .multilineTextAlignment(.center) - .lineSpacing(4) + VStack(spacing: 0) { + Image("subscription_empty_icon") + .padding(.bottom, 24) + + Text("You’re ready to go") + .font(.large700) + .foregroundColor(.Foreground100) + .padding(.bottom, 8) + + Text("All new notifications will appear here.") + .font(.paragraph500) + .foregroundColor(.Foreground150) } - .padding(20) + .frame(maxWidth: .infinity) + .frame(height: 410) } } From 8756f4af012f1fcb835e6db55a68f4ba5bf1d651 Mon Sep 17 00:00:00 2001 From: Artur Guseinov Date: Mon, 6 Nov 2023 11:03:26 +0800 Subject: [PATCH 14/15] Router cocoapods fix --- Sources/WalletConnectRouter/Router/Router.swift | 2 -- Sources/WalletConnectRouter/Router/RouterImports.swift | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 Sources/WalletConnectRouter/Router/RouterImports.swift diff --git a/Sources/WalletConnectRouter/Router/Router.swift b/Sources/WalletConnectRouter/Router/Router.swift index b97566675..75a227b31 100644 --- a/Sources/WalletConnectRouter/Router/Router.swift +++ b/Sources/WalletConnectRouter/Router/Router.swift @@ -1,7 +1,5 @@ import UIKit -@_exported import WalletConnectRouter - public struct WalletConnectRouter { public static func goBack(uri: String) { if #available(iOS 17, *) { diff --git a/Sources/WalletConnectRouter/Router/RouterImports.swift b/Sources/WalletConnectRouter/Router/RouterImports.swift new file mode 100644 index 000000000..e2e65b0f9 --- /dev/null +++ b/Sources/WalletConnectRouter/Router/RouterImports.swift @@ -0,0 +1,3 @@ +#if !CocoaPods +@_exported import WalletConnectRouter +#endif From 43baa1ad33757e3d3f8b5b05e88651b271e4eafd Mon Sep 17 00:00:00 2001 From: radeknovis Date: Mon, 6 Nov 2023 12:43:52 +0100 Subject: [PATCH 15/15] Set User Agent --- Sources/WalletConnectRelay/PackageConfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/WalletConnectRelay/PackageConfig.json b/Sources/WalletConnectRelay/PackageConfig.json index ae47f4ee5..f828972fc 100644 --- a/Sources/WalletConnectRelay/PackageConfig.json +++ b/Sources/WalletConnectRelay/PackageConfig.json @@ -1 +1 @@ -{"version": "1.9.5"} +{"version": "1.9.6"}

bY_?j<{nm+ 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