@applicaster/quick-brick-native-apple 6.17.0 → 6.18.0

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": "6.17.0",
3
+ "version": "6.18.0",
4
4
  "platforms": {
5
5
  "ios": "16.0",
6
6
  "tvos": "16.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/6.17.0"
19
+ "tag": "@@applicaster/quick-brick-native-apple/6.18.0"
20
20
  },
21
21
  "requires_arc": true,
22
22
  "source_files": "universal/**/*.{m,swift}",
@@ -0,0 +1,77 @@
1
+ //
2
+ // ContextResolverBridge.swift
3
+ // QuickBrickApple
4
+ //
5
+ // Created by Alex Zchut on 15/01/2026.
6
+ // Copyright © 2026 Applicaster LTD. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+ import React
11
+ import ZappCore
12
+
13
+ @objc(ContextResolverBridge)
14
+ class ContextResolverBridge: NSObject, RCTBridgeModule {
15
+ static func moduleName() -> String! {
16
+ "ContextResolverBridge"
17
+ }
18
+
19
+ class func requiresMainQueueSetup() -> Bool {
20
+ true
21
+ }
22
+
23
+ /// prefered thread on which to run this native module
24
+ @objc var methodQueue: DispatchQueue {
25
+ DispatchQueue.main
26
+ }
27
+
28
+ @objc func resolveContextKeys(_ keys: [String: Any],
29
+ resolver: @escaping RCTPromiseResolveBlock,
30
+ rejecter _: @escaping RCTPromiseRejectBlock) {
31
+ var result: [String: Any] = [:]
32
+
33
+ for (key, value) in keys {
34
+ let isRequired = extractBoolValue(from: value)
35
+ let resolved = resolveStorage(key: key, required: isRequired)
36
+ result[key] = resolved ?? NSNull()
37
+ }
38
+
39
+ resolver(result)
40
+ }
41
+
42
+ private func extractBoolValue(from value: Any) -> Bool {
43
+ if let number = value as? NSNumber {
44
+ number.boolValue
45
+ } else if let boolValue = value as? Bool {
46
+ boolValue
47
+ } else {
48
+ false
49
+ }
50
+ }
51
+
52
+ private func resolveStorage(key: String, required _: Bool) -> String? {
53
+ let data = key.split(separator: ".", maxSplits: 1)
54
+ let (namespace, storageKey): (String?, String) = {
55
+ switch data.count {
56
+ case 2:
57
+ let namespace = String(data.first ?? "")
58
+ let storageKey = String(data.last ?? "")
59
+ return (namespace.isEmpty ? nil : namespace, storageKey)
60
+ default:
61
+ return (nil, key)
62
+ }
63
+ }()
64
+
65
+ if let value = FacadeConnector.connector?.storage?.sessionStorageValue(for: storageKey,
66
+ namespace: namespace) {
67
+ return value
68
+ }
69
+
70
+ if let value = FacadeConnector.connector?.storage?.localStorageValue(for: storageKey,
71
+ namespace: namespace) {
72
+ return value
73
+ }
74
+
75
+ return nil
76
+ }
77
+ }
@@ -30,7 +30,7 @@ RCT_EXTERN_METHOD(setAppLanguage:(NSString *)language
30
30
 
31
31
  @interface RCT_EXTERN_MODULE (AnalyticsBridge, NSObject)
32
32
  RCT_EXTERN_METHOD(postEvent:(NSString *)event
33
- payload:(NSDictionary *)payload);
33
+ payload:(NSDictionary *)payload);
34
34
  RCT_EXTERN_METHOD(postTimedEvent:(NSString *)event
35
35
  payload:(NSDictionary *)payload);
36
36
  RCT_EXTERN_METHOD(endTimedEvent:(NSString *)event
@@ -151,18 +151,24 @@ RCT_EXTERN_METHOD(switchLayout:(NSString *)layoutId
151
151
  rejecter:(RCTPromiseRejectBlock)reject);
152
152
 
153
153
  RCT_EXTERN_METHOD(getCurrentLayoutId:(RCTPromiseResolveBlock)resolve
154
- rejecter:(RCTPromiseRejectBlock)reject);
154
+ rejecter:(RCTPromiseRejectBlock)reject);
155
155
 
156
156
  RCT_EXTERN_METHOD(getDefaultLayoutId:(RCTPromiseResolveBlock)resolve
157
- rejecter:(RCTPromiseRejectBlock)reject);
157
+ rejecter:(RCTPromiseRejectBlock)reject);
158
158
  @end
159
159
 
160
- @interface RCT_EXTERN_MODULE(AirPlayButtonModule, RCTViewManager)
160
+ @interface RCT_EXTERN_MODULE (AirPlayButtonModule, RCTViewManager)
161
161
  RCT_EXPORT_VIEW_PROPERTY(tintColor, UIColor);
162
162
  RCT_EXPORT_VIEW_PROPERTY(activeTintColor, UIColor);
163
-
163
+
164
164
  @end
165
165
 
166
166
  @interface RCT_EXTERN_MODULE (ReactNativeEventBusBridge, NSObject)
167
167
  RCT_EXTERN_METHOD(postEvent:(NSDictionary *)event);
168
168
  @end
169
+
170
+ @interface RCT_EXTERN_MODULE (ContextResolverBridge, NSObject)
171
+ RCT_EXTERN_METHOD(resolveContextKeys:(NSDictionary *)keys
172
+ resolver:(RCTPromiseResolveBlock)resolver
173
+ rejecter:(RCTPromiseRejectBlock)rejecter);
174
+ @end
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applicaster/quick-brick-native-apple",
3
- "version": "6.17.0",
3
+ "version": "6.18.0",
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"