@applicaster/quick-brick-native-apple 5.14.2-alpha.2 → 5.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "QuickBrickApple",
3
- "version": "5.14.2-alpha.2",
3
+ "version": "5.14.2",
4
4
  "platforms": {
5
5
  "ios": "12.0",
6
6
  "tvos": "12.0"
@@ -16,7 +16,7 @@
16
16
  "authors": "Applicaster LTD.",
17
17
  "source": {
18
18
  "git": "https://github.com/applicaster/Zapp-Frameworks.git",
19
- "tag": "@@applicaster/quick-brick-native-apple/5.14.2-alpha.2"
19
+ "tag": "@@applicaster/quick-brick-native-apple/5.14.2"
20
20
  },
21
21
  "requires_arc": true,
22
22
  "source_files": "universal/**/*.{m,swift}",
@@ -13,8 +13,6 @@ import ZappCore
13
13
  class LocalNotificationBridge: NSObject, RCTBridgeModule {
14
14
  let kModuleName = "LocalNotificationBridge"
15
15
  let LocalNotificationRecievedEvent = "localNotificationReceived"
16
- let kErrorCodeFailedToScheduleLocalNotification = "FAILED_TO_SCHEDULE_LOCAL_NOTIFICATION"
17
- let kErrorCodeFailedToCancelLocalNotifications = "FAILED_TO_CANCEL_LOCAL_NOTIFICATION"
18
16
 
19
17
  static func moduleName() -> String! {
20
18
  return "LocalNotificationBridge"
@@ -24,42 +22,54 @@ class LocalNotificationBridge: NSObject, RCTBridgeModule {
24
22
  true
25
23
  }
26
24
 
25
+ /// prefered thread on which to run this native module
26
+ @objc public var methodQueue: DispatchQueue {
27
+ return DispatchQueue.main
28
+ }
29
+
30
+ struct Errors {
31
+ static let failedToScheduleLocalNotificationCode = "FAILED_TO_SCHEDULE_LOCAL_NOTIFICATION"
32
+ static let failedToCancelLocalNotifications = "FAILED_TO_CANCEL_LOCAL_NOTIFICATION"
33
+ }
34
+
27
35
  @objc func cancelLocalNotifications(_ identifiers: [String]?,
28
36
  resolver: @escaping RCTPromiseResolveBlock,
29
37
  rejecter: @escaping RCTPromiseRejectBlock) {
30
- DispatchQueue.main.async {
31
- guard let identifiers = identifiers else {
32
- rejecter(self.kErrorCodeFailedToCancelLocalNotifications,
38
+ guard let identifiers = identifiers else {
39
+ rejecter(Errors.failedToCancelLocalNotifications,
40
+ nil,
41
+ nil)
42
+ return
43
+ }
44
+
45
+ FacadeConnector.connector?.localNotification?.cancel(for: identifiers, completion: { result in
46
+ switch result {
47
+ case let .success(value):
48
+ resolver(value)
49
+ case let .failure(error):
50
+ rejecter(Errors.failedToCancelLocalNotifications,
33
51
  nil,
34
- nil)
35
- return
52
+ error)
36
53
  }
37
-
38
- FacadeConnector.connector?.localNotification?.cancelLocalNotifications(identifiers,
39
- completion: { success, error in
40
- success && error == nil ? resolver(success) :
41
- rejecter(self.kErrorCodeFailedToCancelLocalNotifications,
42
- nil,
43
- error)
44
- })
45
- }
54
+ })
46
55
  }
47
56
 
48
57
  @objc public func presentLocalNotification(_ payload: [AnyHashable: Any]?,
49
58
  resolver: @escaping RCTPromiseResolveBlock,
50
59
  rejecter: @escaping RCTPromiseRejectBlock) {
51
- DispatchQueue.main.async {
52
- guard let payload = payload as [AnyHashable: Any]? else {
53
- return
54
- }
55
-
56
- FacadeConnector.connector?.localNotification?.presentLocalNotification(payload,
57
- completion: { isScheduled, error in
58
- isScheduled && error == nil ? resolver(isScheduled) :
59
- rejecter(self.kErrorCodeFailedToScheduleLocalNotification,
60
- nil,
61
- error)
62
- })
60
+ guard let payload = payload as [AnyHashable: Any]? else {
61
+ return
63
62
  }
63
+
64
+ FacadeConnector.connector?.localNotification?.present(with: payload, completion: { result in
65
+ switch result {
66
+ case let .success(value):
67
+ resolver(value)
68
+ case let .failure(error):
69
+ rejecter(Errors.failedToScheduleLocalNotificationCode,
70
+ nil,
71
+ error)
72
+ }
73
+ })
64
74
  }
65
75
  }
@@ -19,6 +19,16 @@ class OfflineAssetsBridge: NSObject, RCTBridgeModule {
19
19
  static let url = "url"
20
20
  }
21
21
 
22
+ struct Errors {
23
+ static let failedToFetchCode = "failed to fetch files"
24
+ static let failedToFetchBody = "files arrray is empty"
25
+ static let unableToGetDirPathCode = "unable to get directory path"
26
+ static let failedToDeleteFileCode = "failed to delete file"
27
+ static let filePathNotProvidedBody = "File path was not provided"
28
+ static let fileNotExitstAtPathBody = "File not exists at path: "
29
+ static let failedToDeleteFileAtPathBody = "Failed to delete file at path: "
30
+ }
31
+
22
32
  static func moduleName() -> String! {
23
33
  return "OfflineAssetsBridge"
24
34
  }
@@ -44,8 +54,8 @@ class OfflineAssetsBridge: NSObject, RCTBridgeModule {
44
54
  let dispatchGroup = DispatchGroup()
45
55
 
46
56
  guard let files = filesList, files.count > 0 else {
47
- rejecter("failed to fetch files",
48
- "files arrray is empty",
57
+ rejecter(Errors.failedToFetchCode,
58
+ Errors.failedToFetchBody,
49
59
  nil)
50
60
  return
51
61
  }
@@ -73,7 +83,7 @@ class OfflineAssetsBridge: NSObject, RCTBridgeModule {
73
83
  }
74
84
 
75
85
  dispatchGroup.notify(queue: .main) { [unowned self] in
76
- let responseObj = self.tasks.map { ["\($0.saveTo.absoluteString)": $0.state == .completed ? true : false ] }
86
+ let responseObj = self.tasks.map { ["\($0.saveTo.absoluteString)": $0.state == .completed ? true : false] }
77
87
  resolver(responseObj)
78
88
  }
79
89
  }
@@ -85,7 +95,7 @@ class OfflineAssetsBridge: NSObject, RCTBridgeModule {
85
95
  if let folderUrl = FileManager.default.getContentFolder(appendingFolderName: folderName) {
86
96
  resolver(folderUrl.relativePath)
87
97
  } else {
88
- rejecter("unable to get directory path",
98
+ rejecter(Errors.unableToGetDirPathCode,
89
99
  "",
90
100
  nil)
91
101
  }
@@ -98,16 +108,16 @@ class OfflineAssetsBridge: NSObject, RCTBridgeModule {
98
108
  let fileManager = FileManager.default
99
109
 
100
110
  guard let path = path else {
101
- rejecter("failed to delete file",
102
- "File path was not provided",
111
+ rejecter(Errors.failedToDeleteFileCode,
112
+ Errors.filePathNotProvidedBody,
103
113
  nil)
104
114
  return
105
115
  }
106
116
 
107
117
  let url = URL(fileURLWithPath: path.replacingOccurrences(of: "file://", with: ""))
108
118
  guard fileManager.fileExists(atPath: url.path) == true else {
109
- rejecter("failed to delete file",
110
- "File not exists at path: \(String(describing: path))",
119
+ rejecter(Errors.failedToDeleteFileCode,
120
+ Errors.fileNotExitstAtPathBody + String(describing: path),
111
121
  nil)
112
122
  return
113
123
  }
@@ -122,8 +132,8 @@ class OfflineAssetsBridge: NSObject, RCTBridgeModule {
122
132
  if success {
123
133
  resolver(true)
124
134
  } else {
125
- rejecter("failed to delete file",
126
- "Failed to delete file at path: \(path)",
135
+ rejecter(Errors.failedToDeleteFileCode,
136
+ Errors.failedToDeleteFileAtPathBody + path,
127
137
  nil)
128
138
  }
129
139
  }
@@ -11,12 +11,6 @@ import ZappCore
11
11
 
12
12
  @objc(PluginsManagerBridge)
13
13
  class PluginsManagerBridge: NSObject, RCTBridgeModule {
14
- let noIdentifierErrorCode = "error_identifier_empty"
15
- let noIdentifierErrorBody = "Plugin identifier is nil"
16
-
17
- let noTypeErrorCode = "error_type_empty"
18
- let noTypeErrorBody = "Plugin types is nil"
19
-
20
14
  static func moduleName() -> String! {
21
15
  return "PluginsManager"
22
16
  }
@@ -29,21 +23,38 @@ class PluginsManagerBridge: NSObject, RCTBridgeModule {
29
23
  @objc public var methodQueue: DispatchQueue {
30
24
  return DispatchQueue.main
31
25
  }
26
+
27
+ struct Errors {
28
+ static let noIdentifierCode = "error_identifier_empty"
29
+ static let noIdentifierBody = "Plugin identifier is nil"
30
+ static let noTypeCode = "error_type_empty"
31
+ static let noTypeBody = "Plugin types is nil"
32
+ static let disablePluginCode = "disable_plugin"
33
+ static let disablePluginBody = "Failed to disable plugin with id: "
34
+ static let enablePluginCode = "enable_plugin"
35
+ static let enablePluginBody = "Failed to enable plugin with id: "
36
+ static let isPluginEnabledCode = "check_enabled_plugin"
37
+ static let isPluginEnabledBody = "Failed to check plugin enabled state with id: "
38
+ static let disablePluginsCode = "disable_all_plugins"
39
+ static let disablePluginsBody = "Failed to disable all plugins with type: "
40
+ static let enablePluginsCode = "enable_all_plugins"
41
+ static let enablePluginsBody = "Failed to enable all plugins with type: "
42
+ }
32
43
 
33
44
  @objc public func isPluginEnabled(_ identifier: String?,
34
45
  resolver: @escaping RCTPromiseResolveBlock,
35
46
  rejecter: @escaping RCTPromiseRejectBlock) {
36
47
  guard let identifier = identifier else {
37
- rejecter(noIdentifierErrorCode,
38
- noIdentifierErrorBody,
48
+ rejecter(Errors.noIdentifierCode,
49
+ Errors.noIdentifierBody,
39
50
  nil)
40
51
  return
41
52
  }
42
53
  if let value = FacadeConnector.connector?.pluginManager?.isPluginEnabled(identifier: identifier) {
43
54
  resolver(value)
44
55
  } else {
45
- rejecter("enable_plugins",
46
- "Failed to check plugin enabled state with id:\(identifier)",
56
+ rejecter(Errors.isPluginEnabledCode,
57
+ Errors.isPluginEnabledBody+identifier,
47
58
  nil)
48
59
  }
49
60
  }
@@ -52,8 +63,8 @@ class PluginsManagerBridge: NSObject, RCTBridgeModule {
52
63
  resolver: @escaping RCTPromiseResolveBlock,
53
64
  rejecter: @escaping RCTPromiseRejectBlock) {
54
65
  guard let identifier = identifier else {
55
- rejecter(noIdentifierErrorCode,
56
- noIdentifierErrorBody,
66
+ rejecter(Errors.noIdentifierCode,
67
+ Errors.noIdentifierBody,
57
68
  nil)
58
69
  return
59
70
  }
@@ -61,8 +72,8 @@ class PluginsManagerBridge: NSObject, RCTBridgeModule {
61
72
  if success {
62
73
  resolver(true)
63
74
  } else {
64
- rejecter("disable_plugins",
65
- "Failed to enable plugin with id:\(identifier)",
75
+ rejecter(Errors.disablePluginCode,
76
+ Errors.disablePluginBody+identifier,
66
77
  nil)
67
78
  }
68
79
  })
@@ -72,8 +83,8 @@ class PluginsManagerBridge: NSObject, RCTBridgeModule {
72
83
  resolver: @escaping RCTPromiseResolveBlock,
73
84
  rejecter: @escaping RCTPromiseRejectBlock) {
74
85
  guard let pluginType = pluginType else {
75
- rejecter(noTypeErrorCode,
76
- noTypeErrorBody,
86
+ rejecter(Errors.noTypeCode,
87
+ Errors.noTypeBody,
77
88
  nil)
78
89
  return
79
90
  }
@@ -81,8 +92,8 @@ class PluginsManagerBridge: NSObject, RCTBridgeModule {
81
92
  if success {
82
93
  resolver(true)
83
94
  } else {
84
- rejecter("disable_all_plugins",
85
- "Failed to disable all plugins with type:\(pluginType)",
95
+ rejecter(Errors.disablePluginsCode,
96
+ Errors.disablePluginsBody+pluginType,
86
97
  nil)
87
98
  }
88
99
 
@@ -93,8 +104,8 @@ class PluginsManagerBridge: NSObject, RCTBridgeModule {
93
104
  resolver: @escaping RCTPromiseResolveBlock,
94
105
  rejecter: @escaping RCTPromiseRejectBlock) {
95
106
  guard let identifier = identifier else {
96
- rejecter(noIdentifierErrorCode,
97
- noIdentifierErrorBody,
107
+ rejecter(Errors.noIdentifierCode,
108
+ Errors.noIdentifierBody,
98
109
  nil)
99
110
  return
100
111
  }
@@ -103,8 +114,8 @@ class PluginsManagerBridge: NSObject, RCTBridgeModule {
103
114
  if success {
104
115
  resolver(true)
105
116
  } else {
106
- rejecter("enable_plugins",
107
- "Failed to enable plugin with id:\(identifier)",
117
+ rejecter(Errors.enablePluginCode,
118
+ Errors.enablePluginBody+identifier,
108
119
  nil)
109
120
  }
110
121
 
@@ -115,8 +126,8 @@ class PluginsManagerBridge: NSObject, RCTBridgeModule {
115
126
  resolver: @escaping RCTPromiseResolveBlock,
116
127
  rejecter: @escaping RCTPromiseRejectBlock) {
117
128
  guard let pluginType = pluginType else {
118
- rejecter(noTypeErrorCode,
119
- noTypeErrorBody,
129
+ rejecter(Errors.noTypeCode,
130
+ Errors.noTypeBody,
120
131
  nil)
121
132
  return
122
133
  }
@@ -125,8 +136,8 @@ class PluginsManagerBridge: NSObject, RCTBridgeModule {
125
136
  if success {
126
137
  resolver(true)
127
138
  } else {
128
- rejecter("enable_all_plugins",
129
- "Failed to enable all plugins with type:\(pluginType)",
139
+ rejecter(Errors.enablePluginsCode,
140
+ Errors.enablePluginsBody+pluginType,
130
141
  nil)
131
142
  }
132
143
 
@@ -14,7 +14,6 @@ import ZappCore
14
14
 
15
15
  public let kQBModuleName = "QuickBrickApp"
16
16
  public let suspendApp = "suspend"
17
- public let kQBLoadingTimeout: TimeInterval = 20
18
17
 
19
18
  /// React Native Manager class for Quick Brick
20
19
  open class ReactNativeManager: NSObject, UserInterfaceLayerProtocol, UserInterfaceLayerDelegate {
@@ -24,7 +23,7 @@ open class ReactNativeManager: NSObject, UserInterfaceLayerProtocol, UserInterfa
24
23
 
25
24
  var launchOptions: [UIApplication.LaunchOptionsKey: Any]?
26
25
  var reactNativePackagerRoot: String?
27
- var timeoutTimer: Timer?
26
+
28
27
  var completion: ((_ viewController: UIViewController?, _ error: Error?) -> Void)?
29
28
 
30
29
  /// url of the react server
@@ -89,12 +88,6 @@ open class ReactNativeManager: NSObject, UserInterfaceLayerProtocol, UserInterfa
89
88
 
90
89
  public func prepareLayerForUse(completion: @escaping (_ viewController: UIViewController?, _ error: Error?) -> Void) {
91
90
  setRightToLeftFlag {
92
- self.timeoutTimer = Timer.scheduledTimer(withTimeInterval: kQBLoadingTimeout,
93
- repeats: false,
94
- block: { _ in
95
- EventsBus.post(EventsBus.Event(type: EventsBusType(.userInterfaceLayerLoadingDelayed),
96
- data: self.launchOptions ?? [:]))
97
- })
98
91
  self.mountReactApp(self.launchOptions)
99
92
  self.completion = completion
100
93
  }
@@ -190,12 +183,11 @@ extension ReactNativeManager: RCTBridgeDelegate {
190
183
 
191
184
  extension ReactNativeManager: QuickBrickManagerDelegate {
192
185
  public func setQuickBrickReady() {
193
- timeoutTimer?.invalidate()
194
186
  completion?(reactNativeViewController(), nil)
195
187
  completion = nil
196
188
  }
197
189
 
198
- /// Force application to move to bakckground
190
+ /// Force application to move to background
199
191
  public func moveAppToBackground() {
200
192
  DispatchQueue.main.async {
201
193
  UIApplication.shared.perform(NSSelectorFromString(suspendApp))
@@ -10,13 +10,6 @@ import Foundation
10
10
  import React
11
11
  import ZappCore
12
12
 
13
- public struct LocalErrorCallBack {
14
- public static let errorCode = "LocalStorageError"
15
- public static let errorMessageSet = "Local values could not be saved"
16
- public static let errorMessageGet = "Local values could not be retrieved"
17
- public static let errorMessageRemove = "Local values could not be removed"
18
- }
19
-
20
13
  @objc(LocalStorage)
21
14
  class LocalStorageBridge: NSObject, RCTBridgeModule {
22
15
  var bridge: RCTBridge!
@@ -29,6 +22,18 @@ class LocalStorageBridge: NSObject, RCTBridgeModule {
29
22
  return true
30
23
  }
31
24
 
25
+ /// prefered thread on which to run this native module
26
+ @objc public var methodQueue: DispatchQueue {
27
+ return DispatchQueue.main
28
+ }
29
+
30
+ struct Errors {
31
+ static let errorCode = "LocalErrors"
32
+ static let errorMessageSet = "Local storage value could not be saved"
33
+ static let errorMessageGet = "Local storage value could not be retrieved"
34
+ static let errorMessageRemove = "Local storage value could not be removed"
35
+ }
36
+
32
37
  // MARK: RC extern methods
33
38
 
34
39
  /// Store a stringified object in LocalStorage
@@ -42,21 +47,19 @@ class LocalStorageBridge: NSObject, RCTBridgeModule {
42
47
  @objc public func setItem(_ key: String?, value: String?, namespace: String?,
43
48
  resolver: @escaping RCTPromiseResolveBlock,
44
49
  rejecter: @escaping RCTPromiseRejectBlock) {
45
- DispatchQueue.main.async {
46
- guard let key = key,
47
- let value = value,
48
- let storage = FacadeConnector.connector?.storage else {
49
- rejecter(LocalErrorCallBack.errorCode, LocalErrorCallBack.errorMessageSet, nil)
50
- return
51
- }
52
-
53
- if storage.localStorageSetValue(for: key,
54
- value: value,
55
- namespace: namespace) == true {
56
- resolver(true)
57
- } else {
58
- rejecter(LocalErrorCallBack.errorCode, LocalErrorCallBack.errorMessageSet, nil)
59
- }
50
+ guard let key = key,
51
+ let value = value,
52
+ let storage = FacadeConnector.connector?.storage else {
53
+ rejecter(Errors.errorCode, Errors.errorMessageSet, nil)
54
+ return
55
+ }
56
+
57
+ if storage.localStorageSetValue(for: key,
58
+ value: value,
59
+ namespace: namespace) == true {
60
+ resolver(true)
61
+ } else {
62
+ rejecter(Errors.errorCode, Errors.errorMessageSet, nil)
60
63
  }
61
64
  }
62
65
 
@@ -71,16 +74,14 @@ class LocalStorageBridge: NSObject, RCTBridgeModule {
71
74
  namespace: String?,
72
75
  resolver: @escaping RCTPromiseResolveBlock,
73
76
  rejecter: @escaping RCTPromiseRejectBlock) {
74
- DispatchQueue.main.async {
75
- guard let key = key,
76
- let storage = FacadeConnector.connector?.storage else {
77
- rejecter(LocalErrorCallBack.errorCode, LocalErrorCallBack.errorMessageGet, nil)
78
- return
79
- }
80
-
81
- let retVal = storage.localStorageValue(for: key, namespace: namespace)
82
- resolver(retVal)
77
+ guard let key = key,
78
+ let storage = FacadeConnector.connector?.storage else {
79
+ rejecter(Errors.errorCode, Errors.errorMessageGet, nil)
80
+ return
83
81
  }
82
+
83
+ let retVal = storage.localStorageValue(for: key, namespace: namespace)
84
+ resolver(retVal)
84
85
  }
85
86
 
86
87
  /// Remove previously saved session value by key
@@ -94,17 +95,15 @@ class LocalStorageBridge: NSObject, RCTBridgeModule {
94
95
  namespace: String?,
95
96
  resolver: @escaping RCTPromiseResolveBlock,
96
97
  rejecter: @escaping RCTPromiseRejectBlock) {
97
- DispatchQueue.main.async {
98
- guard let key = key,
99
- let storage = FacadeConnector.connector?.storage else {
100
- rejecter(LocalErrorCallBack.errorCode, LocalErrorCallBack.errorMessageRemove, nil)
101
- return
102
- }
103
-
104
- let retVal = storage.localStorageRemoveValue(for: key,
105
- namespace: namespace)
106
- resolver(retVal)
98
+ guard let key = key,
99
+ let storage = FacadeConnector.connector?.storage else {
100
+ rejecter(Errors.errorCode, Errors.errorMessageRemove, nil)
101
+ return
107
102
  }
103
+
104
+ let retVal = storage.localStorageRemoveValue(for: key,
105
+ namespace: namespace)
106
+ resolver(retVal)
108
107
  }
109
108
 
110
109
  /// Get ALL previously saved session values
@@ -116,15 +115,13 @@ class LocalStorageBridge: NSObject, RCTBridgeModule {
116
115
  @objc public func getAllItems(_ namespace: String?,
117
116
  resolver: @escaping RCTPromiseResolveBlock,
118
117
  rejecter: @escaping RCTPromiseRejectBlock) {
119
- DispatchQueue.main.async {
120
- guard let storage = FacadeConnector.connector?.storage else {
121
- rejecter(LocalErrorCallBack.errorCode, LocalErrorCallBack.errorMessageGet, nil)
122
- return
123
- }
124
-
125
- let retVal = storage.localStorageAllValues(namespace: namespace)
126
- resolver(retVal)
118
+ guard let storage = FacadeConnector.connector?.storage else {
119
+ rejecter(Errors.errorCode, Errors.errorMessageGet, nil)
120
+ return
127
121
  }
122
+
123
+ let retVal = storage.localStorageAllValues(namespace: namespace)
124
+ resolver(retVal)
128
125
  }
129
126
 
130
127
  /// Store a stringified object in Keychain
@@ -140,21 +137,19 @@ class LocalStorageBridge: NSObject, RCTBridgeModule {
140
137
  namespace: String?,
141
138
  resolver: @escaping RCTPromiseResolveBlock,
142
139
  rejecter: @escaping RCTPromiseRejectBlock) {
143
- DispatchQueue.main.async {
144
- guard let key = key,
145
- let value = value,
146
- let storage = FacadeConnector.connector?.storage else {
147
- rejecter(LocalErrorCallBack.errorCode, LocalErrorCallBack.errorMessageSet, nil)
148
- return
149
- }
150
-
151
- if storage.keychainStorageSetValue(for: key,
152
- value: value,
153
- namespace: namespace) == true {
154
- resolver(true)
155
- } else {
156
- rejecter(LocalErrorCallBack.errorCode, LocalErrorCallBack.errorMessageSet, nil)
157
- }
140
+ guard let key = key,
141
+ let value = value,
142
+ let storage = FacadeConnector.connector?.storage else {
143
+ rejecter(Errors.errorCode, Errors.errorMessageSet, nil)
144
+ return
145
+ }
146
+
147
+ if storage.keychainStorageSetValue(for: key,
148
+ value: value,
149
+ namespace: namespace) == true {
150
+ resolver(true)
151
+ } else {
152
+ rejecter(Errors.errorCode, Errors.errorMessageSet, nil)
158
153
  }
159
154
  }
160
155
 
@@ -169,16 +164,14 @@ class LocalStorageBridge: NSObject, RCTBridgeModule {
169
164
  namespace: String?,
170
165
  resolver: @escaping RCTPromiseResolveBlock,
171
166
  rejecter: @escaping RCTPromiseRejectBlock) {
172
- DispatchQueue.main.async {
173
- guard let key = key,
174
- let storage = FacadeConnector.connector?.storage else {
175
- rejecter(LocalErrorCallBack.errorCode, LocalErrorCallBack.errorMessageGet, nil)
176
- return
177
- }
178
-
179
- let retVal = storage.keychainStorageValue(for: key, namespace: namespace)
180
- resolver(retVal)
167
+ guard let key = key,
168
+ let storage = FacadeConnector.connector?.storage else {
169
+ rejecter(Errors.errorCode, Errors.errorMessageGet, nil)
170
+ return
181
171
  }
172
+
173
+ let retVal = storage.keychainStorageValue(for: key, namespace: namespace)
174
+ resolver(retVal)
182
175
  }
183
176
 
184
177
  /// Remove previously saved Keychain value by key
@@ -192,16 +185,14 @@ class LocalStorageBridge: NSObject, RCTBridgeModule {
192
185
  namespace: String?,
193
186
  resolver: @escaping RCTPromiseResolveBlock,
194
187
  rejecter: @escaping RCTPromiseRejectBlock) {
195
- DispatchQueue.main.async {
196
- guard let key = key,
197
- let storage = FacadeConnector.connector?.storage else {
198
- rejecter(LocalErrorCallBack.errorCode, LocalErrorCallBack.errorMessageRemove, nil)
199
- return
200
- }
201
-
202
- let retVal = storage.keychainStorageRemoveValue(for: key,
203
- namespace: namespace)
204
- resolver(retVal)
188
+ guard let key = key,
189
+ let storage = FacadeConnector.connector?.storage else {
190
+ rejecter(Errors.errorCode, Errors.errorMessageRemove, nil)
191
+ return
205
192
  }
193
+
194
+ let retVal = storage.keychainStorageRemoveValue(for: key,
195
+ namespace: namespace)
196
+ resolver(retVal)
206
197
  }
207
198
  }
@@ -10,13 +10,6 @@ import Foundation
10
10
  import React
11
11
  import ZappCore
12
12
 
13
- public struct StorageErrorCallback {
14
- public static let errorCode = "SessionStorageError"
15
- public static let errorMessageSet = "Session values could not be saved"
16
- public static let errorMessageGet = "Session values could not be retrieved"
17
- public static let errorMessageRemove = "Session values could not be removed"
18
- }
19
-
20
13
  @objc(SessionStorage)
21
14
  class SessionStorageBridge: NSObject, RCTBridgeModule {
22
15
  var bridge: RCTBridge!
@@ -29,6 +22,18 @@ class SessionStorageBridge: NSObject, RCTBridgeModule {
29
22
  return true
30
23
  }
31
24
 
25
+ /// prefered thread on which to run this native module
26
+ @objc public var methodQueue: DispatchQueue {
27
+ return DispatchQueue.main
28
+ }
29
+
30
+ struct Errors {
31
+ static let errorCode = "SessionErrors"
32
+ static let errorMessageSet = "Session storage value could not be saved"
33
+ static let errorMessageGet = "Session storage value could not be retrieved"
34
+ static let errorMessageRemove = "Session storage value could not be removed"
35
+ }
36
+
32
37
  // MARK: RC extern methods
33
38
 
34
39
  /// Store a stringified object in SessionStorage
@@ -42,21 +47,19 @@ class SessionStorageBridge: NSObject, RCTBridgeModule {
42
47
  @objc public func setItem(_ key: String?, value: String?, namespace: String?,
43
48
  resolver: @escaping RCTPromiseResolveBlock,
44
49
  rejecter: @escaping RCTPromiseRejectBlock) {
45
- DispatchQueue.main.async {
46
- guard let key = key,
47
- let value = value,
48
- let storage = FacadeConnector.connector?.storage else {
49
- rejecter(StorageErrorCallback.errorCode, StorageErrorCallback.errorMessageSet, nil)
50
- return
51
- }
50
+ guard let key = key,
51
+ let value = value,
52
+ let storage = FacadeConnector.connector?.storage else {
53
+ rejecter(Errors.errorCode, Errors.errorMessageSet, nil)
54
+ return
55
+ }
52
56
 
53
- if storage.sessionStorageSetValue(for: key,
54
- value: value,
55
- namespace: namespace) == true {
56
- resolver(true)
57
- } else {
58
- rejecter(StorageErrorCallback.errorCode, StorageErrorCallback.errorMessageSet, nil)
59
- }
57
+ if storage.sessionStorageSetValue(for: key,
58
+ value: value,
59
+ namespace: namespace) == true {
60
+ resolver(true)
61
+ } else {
62
+ rejecter(Errors.errorCode, Errors.errorMessageSet, nil)
60
63
  }
61
64
  }
62
65
 
@@ -70,16 +73,15 @@ class SessionStorageBridge: NSObject, RCTBridgeModule {
70
73
  @objc public func getItem(_ key: String?, namespace: String?,
71
74
  resolver: @escaping RCTPromiseResolveBlock,
72
75
  rejecter: @escaping RCTPromiseRejectBlock) {
73
- DispatchQueue.main.async {
74
- guard let key = key,
75
- let storage = FacadeConnector.connector?.storage else {
76
- rejecter(StorageErrorCallback.errorCode, StorageErrorCallback.errorMessageGet, nil)
77
- return
78
- }
79
-
80
- let retVal = storage.sessionStorageValue(for: key, namespace: namespace)
81
- resolver(retVal)
76
+ guard let key = key,
77
+ let storage = FacadeConnector.connector?.storage else {
78
+ rejecter(Errors.errorCode, Errors.errorMessageGet, nil)
79
+ return
82
80
  }
81
+
82
+ let retVal = storage.sessionStorageValue(for: key,
83
+ namespace: namespace)
84
+ resolver(retVal)
83
85
  }
84
86
 
85
87
  /// Remove previously saved session value by key
@@ -93,17 +95,15 @@ class SessionStorageBridge: NSObject, RCTBridgeModule {
93
95
  namespace: String?,
94
96
  resolver: @escaping RCTPromiseResolveBlock,
95
97
  rejecter: @escaping RCTPromiseRejectBlock) {
96
- DispatchQueue.main.async {
97
- guard let key = key,
98
- let storage = FacadeConnector.connector?.storage else {
99
- rejecter(LocalErrorCallBack.errorCode, StorageErrorCallback.errorMessageRemove, nil)
100
- return
101
- }
102
-
103
- let retVal = storage.sessionStorageRemoveValue(for: key,
104
- namespace: namespace)
105
- resolver(retVal)
98
+ guard let key = key,
99
+ let storage = FacadeConnector.connector?.storage else {
100
+ rejecter(Errors.errorCode, Errors.errorMessageRemove, nil)
101
+ return
106
102
  }
103
+
104
+ let retVal = storage.sessionStorageRemoveValue(for: key,
105
+ namespace: namespace)
106
+ resolver(retVal)
107
107
  }
108
108
 
109
109
  /// Get ALL previously saved session values
@@ -115,13 +115,11 @@ class SessionStorageBridge: NSObject, RCTBridgeModule {
115
115
  @objc public func getAllItems(_ namespace: String?,
116
116
  resolver: @escaping RCTPromiseResolveBlock,
117
117
  rejecter: @escaping RCTPromiseRejectBlock) {
118
- DispatchQueue.main.async {
119
- guard let storage = FacadeConnector.connector?.storage else {
120
- rejecter(StorageErrorCallback.errorCode, StorageErrorCallback.errorMessageGet, nil)
121
- return
122
- }
123
- let retVal = storage.sessionStorageAllValues(namespace: namespace)
124
- resolver(retVal)
118
+ guard let storage = FacadeConnector.connector?.storage else {
119
+ rejecter(Errors.errorCode, Errors.errorMessageGet, nil)
120
+ return
125
121
  }
122
+ let retVal = storage.sessionStorageAllValues(namespace: namespace)
123
+ resolver(retVal)
126
124
  }
127
125
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applicaster/quick-brick-native-apple",
3
- "version": "5.14.2-alpha.2",
3
+ "version": "5.14.2",
4
4
  "description": "iOS and tvOS native code for QuickBrick applications. This package is used to provide native logic for QuickBrick",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"