react-native-sdk-pianoio 0.2.1 → 0.2.3

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.
Files changed (35) hide show
  1. package/README.md +33 -110
  2. package/SdkPianoio.podspec +1 -1
  3. package/android/generated/jni/RNSdkPianoioSpec-generated.cpp +1 -65
  4. package/android/generated/jni/RNSdkPianoioSpec.h +0 -7
  5. package/android/generated/jni/react/renderer/components/RNSdkPianoioSpec/RNSdkPianoioSpecJSI-generated.cpp +0 -72
  6. package/android/generated/jni/react/renderer/components/RNSdkPianoioSpec/RNSdkPianoioSpecJSI.h +0 -133
  7. package/ios/ComposerPiano.swift +124 -9
  8. package/ios/MyComposerDelegate.swift +204 -0
  9. package/ios/SdkPianoio.h +2 -4
  10. package/ios/SdkPianoio.mm +90 -48
  11. package/ios/generated/RNSdkPianoioSpec/RNSdkPianoioSpec-generated.mm +0 -86
  12. package/ios/generated/RNSdkPianoioSpec/RNSdkPianoioSpec.h +0 -52
  13. package/ios/generated/RNSdkPianoioSpecJSI-generated.cpp +0 -72
  14. package/ios/generated/RNSdkPianoioSpecJSI.h +0 -133
  15. package/ios/services/ComposerService.swift +49 -0
  16. package/ios/services/TokenService.swift +67 -0
  17. package/lib/commonjs/NativeSdkPianoio.ts +18 -14
  18. package/lib/commonjs/PianoComposer.js +22 -0
  19. package/lib/commonjs/PianoComposer.js.map +1 -1
  20. package/lib/module/NativeSdkPianoio.ts +18 -14
  21. package/lib/module/PianoComposer.js +22 -0
  22. package/lib/module/PianoComposer.js.map +1 -1
  23. package/lib/typescript/commonjs/src/NativeSdkPianoio.d.ts +16 -13
  24. package/lib/typescript/commonjs/src/NativeSdkPianoio.d.ts.map +1 -1
  25. package/lib/typescript/commonjs/src/PianoComposer.d.ts +13 -9
  26. package/lib/typescript/commonjs/src/PianoComposer.d.ts.map +1 -1
  27. package/lib/typescript/module/src/NativeSdkPianoio.d.ts +16 -13
  28. package/lib/typescript/module/src/NativeSdkPianoio.d.ts.map +1 -1
  29. package/lib/typescript/module/src/PianoComposer.d.ts +13 -9
  30. package/lib/typescript/module/src/PianoComposer.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/src/NativeSdkPianoio.ts +18 -14
  33. package/src/PianoComposer.tsx +95 -71
  34. package/src/index.tsx +0 -2
  35. package/android/generated/java/com/sdkpianoio/NativeSdkPianoioSpec.java +0 -75
@@ -9,24 +9,33 @@ import PianoComposer
9
9
  import PianoOAuth
10
10
  import PianoConsents
11
11
  import PianoTemplate
12
+ import React
13
+
14
+ import SwiftUI
15
+
12
16
 
13
17
  @objcMembers public class ComposerPianoImpl: NSObject {
14
-
15
18
  private var composer: PianoComposer?;
19
+ private var delegateHelper : MyComposerDelegate?;
20
+ public static var aid = "";
16
21
 
17
22
  @objc public func initializeComposer(_ aid: String) -> PianoComposer? {
18
- print("ASSING AID");
19
- composer = PianoComposer(aid: aid);
23
+ ComposerPianoImpl.aid = aid;
24
+ let tokenService = TokenService();
25
+ delegateHelper = MyComposerDelegate(tokenService: tokenService);
26
+ composer = PianoComposer(aid: ComposerPianoImpl.aid, endpoint: PianoEndpoint.sandbox);
27
+ composer = delegateHelper?.setComposerAndDelegate(composer!);
20
28
  return composer;
21
29
  }
22
30
 
23
31
  @objc public func addTag(_ tag: String) -> PianoComposer? {
24
- print("ASSIGN TAG");
25
32
  return composer?.tag(tag);
26
33
  }
34
+ @objc public func addTagToComposer(_ composer: PianoComposer, tag: String) {
35
+ composer.tag(tag);
36
+ }
27
37
 
28
38
  @objc public func addTags(_ tags: [String]) -> PianoComposer? {
29
- print("ASSIGN TAGS");
30
39
  return composer?.tags(tags);
31
40
  }
32
41
 
@@ -44,19 +53,96 @@ import PianoTemplate
44
53
 
45
54
  @objc public func setCustomVariable(_ name: String, value: String) -> PianoComposer? {
46
55
  return composer?.customVariable(name: name, value: value);
47
-
48
56
  }
49
57
 
50
58
  @objc public func setUserToken(_ token: String) -> PianoComposer? {
51
59
  return composer?.userToken(token);
52
60
  }
53
61
 
54
- @objc public func executeComposer() -> PianoComposer? {
62
+ /*@objc public func executeComposer() -> PianoComposer? {
55
63
  return composer?.execute();
64
+ }*/
65
+ @objc public func executeComposer() {
66
+ DispatchQueue.main.async {
67
+ guard let rootVC = UIApplication.shared.connectedScenes
68
+ .compactMap({ $0 as? UIWindowScene })
69
+ .first(where: { $0.activationState == .foregroundActive })?.windows
70
+ .first(where: { $0.isKeyWindow })?.rootViewController else {
71
+ return
72
+ }
73
+
74
+ self.composer?.execute()
75
+ }
76
+ }
77
+
78
+
79
+
80
+ // Delegate handler
81
+ @objc public func executeExperience() {
82
+ let eventDict: [String: Any] = [
83
+ "eventType": "login"
84
+ ];
85
+
86
+ let xpEvent = XpEvent(dict: eventDict);
87
+
88
+ if(composer != nil && composer!.delegate != nil ) {
89
+ delegateHelper?.executeExperience(composer: composer!, event: xpEvent, params: nil);
90
+ }
56
91
  }
92
+
93
+ @objc public func showLogin() {
94
+ let eventDict: [String: Any] = [
95
+ "eventType": "login"
96
+ ];
97
+
98
+ let xpEvent = XpEvent(dict: eventDict);
99
+
100
+ if(composer != nil && composer!.delegate != nil ) {
101
+ delegateHelper?.myShowLogin(composer: composer!, event: xpEvent, params: nil);
102
+ }
103
+ }
104
+
105
+ @objc public func showTemplate() {
106
+ DispatchQueue.main.async {
107
+ guard let rootVC = UIApplication.shared
108
+ .connectedScenes
109
+ .compactMap({ $0 as? UIWindowScene })
110
+ .flatMap({ $0.windows })
111
+ .first(where: { $0.isKeyWindow })?
112
+ .rootViewController else {
113
+ print("⚠️ rootViewController non trovato")
114
+ return
115
+ }
116
+
117
+ let tokenService = self.delegateHelper!.tokenService
118
+ let view = ShowTemplateView(tokenService: tokenService)
119
+ let hostingController = UIHostingController(rootView: view)
120
+ hostingController.modalPresentationStyle = .fullScreen
121
+
122
+ rootVC.present(hostingController, animated: true, completion: nil)
123
+ }
124
+ }
125
+
126
+ @objc public func showForm() {
127
+ let eventDict: [String: Any] = [
128
+ "eventType": "form"
129
+ ];
130
+
131
+ let xpEvent = XpEvent(dict: eventDict);
57
132
 
133
+ if(composer != nil && composer!.delegate != nil ) {
134
+ delegateHelper?.myShowForm(composer: composer!, event: xpEvent, params: nil);
135
+ }
136
+ }
137
+
138
+
139
+
140
+ public func findViewBySelector(selector: String) -> UIView? {
141
+ return nil;
142
+ }
143
+
58
144
 
59
- // metodi di aiuto :)
145
+ // method to get values and helpers
60
146
  @objc public func getAid() -> String {
61
147
  if(composer != nil){
62
148
  return composer?.aid ?? "";
@@ -74,7 +160,6 @@ import PianoTemplate
74
160
  }
75
161
 
76
162
  @objc public func getComposer() -> PianoComposer? {
77
- print("GET COMPOSER");
78
163
  return composer;
79
164
  }
80
165
 
@@ -93,5 +178,35 @@ import PianoTemplate
93
178
  @objc public func getUserToken() -> String {
94
179
  return composer?.userToken ?? ""
95
180
  }
181
+
182
+ @objc public func addTagsToComposer(_ composer: PianoComposer, tags: [String]) {
183
+ composer.tags(tags)
184
+ }
185
+
186
+ @objc public func setCustomVariable(_ composer: PianoComposer, name: String, value: String) {
187
+ composer.customVariable(name: name, value: value)
188
+ }
189
+
190
+ @objc public func setReferrer(_ composer: PianoComposer, referrer: String) {
191
+ composer.referrer(referrer)
192
+ }
193
+
194
+ @objc public func setUrl(_ composer: PianoComposer, url: String) {
195
+ composer.url(url)
196
+ }
197
+
198
+ @objc public func setUserToken(_ composer: PianoComposer, token: String) {
199
+ composer.userToken(token)
200
+ }
201
+
202
+ @objc public func setZoneId(_ composer: PianoComposer, zoneId: String) {
203
+ composer.zoneId(zoneId)
204
+ }
205
+
206
+ @objc public func executeComposer(_ composer: PianoComposer) {
207
+ DispatchQueue.main.async {
208
+ composer.execute()
209
+ }
210
+ }
96
211
 
97
212
  }
@@ -0,0 +1,204 @@
1
+ //
2
+ // MyComposerDelegate.swift
3
+ // Pods
4
+ //
5
+ // Created by Alessia Sarak on 23.04.2025.
6
+ //
7
+
8
+ import Foundation
9
+ import PianoComposer
10
+ import PianoOAuth
11
+ import PianoCommon
12
+ import PianoTemplate
13
+
14
+ import SwiftUI
15
+ import WebKit
16
+
17
+ public class MyComposerDelegate: ComposerService, PianoShowTemplateDelegate {
18
+
19
+ var view: WKWebView?
20
+
21
+ func showTemplate(params: ShowTemplateEventParams) {
22
+ if params.displayMode == .inline {
23
+ let request = URLRequest(url: URL(string: params.templateUrl)!)
24
+ view?.load(request)
25
+ }
26
+ }
27
+
28
+ public func setComposerAndDelegate(_ myComposer: PianoComposer) -> PianoComposer? {
29
+ myComposer.delegate = self;
30
+ return myComposer;
31
+ }
32
+
33
+ public func myShowLogin(composer: PianoComposer, event: XpEvent, params: [AnyHashable: Any]?) {
34
+ DispatchQueue.main.async {
35
+ PianoID.shared.aid = composer.aid;
36
+ PianoID.shared.endpoint = composer.endpoint;
37
+ PianoID.shared.signUpEnabled = true;
38
+
39
+ PianoID.shared.signIn();
40
+ };
41
+ }
42
+
43
+ public func myShowForm(composer: PianoComposer, event: XpEvent, params: [AnyHashable: Any]?) {
44
+ DispatchQueue.main.async {
45
+ PianoID.shared.formInfo(accessToken: PianoIDToken.description()) { formInfo, error in
46
+ if let error = error {
47
+ print("Errore nel recuperare il form: \(error.localizedDescription)")
48
+ return
49
+ }
50
+
51
+ guard let formInfo = formInfo else {
52
+ print("FormInfo non disponibile.")
53
+ return
54
+ }
55
+
56
+ composer.delegate?.showForm?(composer: composer, event: event, params: nil)
57
+ }
58
+ }
59
+ }
60
+
61
+
62
+
63
+ public func myShowTemplate(composer: PianoComposer, event: XpEvent, params: ShowTemplateEventParams?) {
64
+ if let p = params {
65
+ let webView = WKWebView()
66
+ let request = URLRequest(url: URL(string: p.templateUrl)!)
67
+ webView.load(request)
68
+
69
+ // Aggiungi webView alla vista principale
70
+ let controller = PianoShowTemplateController(p)
71
+ controller.delegate = self
72
+ controller.show()
73
+
74
+ self.execute();
75
+ }
76
+ }
77
+
78
+ public func executeExperience(composer: PianoComposer, event: XpEvent, params: ExperienceExecuteEventParams?) {
79
+ composer.delegate?.experienceExecute?(composer: composer, event: event, params: params)
80
+ }
81
+
82
+
83
+
84
+ public func findViewBySelector(selector: String) -> UIView? {
85
+ return nil;
86
+ }
87
+ }
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+ struct WebView : UIViewRepresentable {
114
+
115
+ let webView: WKWebView
116
+
117
+ @Binding var height: CGFloat
118
+
119
+ class Coordinator: NSObject, WKNavigationDelegate {
120
+
121
+ var parent: WebView
122
+
123
+ init(_ parent: WebView) {
124
+ self.parent = parent
125
+ }
126
+
127
+ func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
128
+ webView.evaluateJavaScript("document.documentElement.scrollHeight", completionHandler: { (height, error) in
129
+ DispatchQueue.main.async {
130
+ self.parent.height = height as! CGFloat
131
+ }
132
+ })
133
+ }
134
+ }
135
+
136
+ func makeCoordinator() -> Coordinator {
137
+ Coordinator(self)
138
+ }
139
+
140
+ func makeUIView(context: Context) -> WKWebView {
141
+ webView.scrollView.bounces = false
142
+ webView.navigationDelegate = context.coordinator
143
+
144
+ return webView
145
+ }
146
+
147
+ func updateUIView(_ uiView: WKWebView, context: Context) {}
148
+ }
149
+
150
+ fileprivate class ShowTemplateService: ComposerService, PianoShowTemplateDelegate {
151
+
152
+ @Published var webView: WKWebView? = nil
153
+
154
+ override func prepare(composer: PianoComposer) {
155
+ webView = nil
156
+ _ = composer.tag("templates")
157
+ }
158
+
159
+ func showTemplate(composer: PianoComposer, event: XpEvent, params: ShowTemplateEventParams?) {
160
+ if let p = params {
161
+ if p.displayMode == .inline {
162
+ webView = WKWebView()
163
+ }
164
+
165
+ let controller = PianoShowTemplateController(p)
166
+ controller.delegate = self
167
+ controller.show()
168
+ }
169
+ }
170
+
171
+ func findViewBySelector(selector: String) -> UIView? {
172
+ selector == "template" ? webView : nil
173
+ }
174
+ }
175
+
176
+ struct ShowTemplateView: View {
177
+
178
+ @ObservedObject private var service: ShowTemplateService
179
+
180
+ @State private var height: CGFloat = .zero
181
+
182
+ init(tokenService: TokenService) {
183
+ service = ShowTemplateService(tokenService: tokenService)
184
+ }
185
+
186
+ var body: some View {
187
+ if #available(iOS 14.0, *) {
188
+ VStack(spacing: 20) {
189
+ if !service.loading {
190
+ Button("Execute") {
191
+ service.execute()
192
+ }
193
+
194
+ if let wv = service.webView {
195
+ WebView(webView: wv, height: $height)
196
+ .frame(height: height > 320 ? 320 : height)
197
+ }
198
+ } else {
199
+
200
+ }
201
+ }.navigationTitle("Show template")
202
+ }
203
+ }
204
+ }
package/ios/SdkPianoio.h CHANGED
@@ -1,6 +1,4 @@
1
+ #import <React/RCTBridgeModule.h>
1
2
 
2
- #import "generated/RNSdkPianoioSpec/RNSdkPianoioSpec.h"
3
-
4
- @interface SdkPianoio : NSObject <NativeSdkPianoioSpec>
5
-
3
+ @interface SdkPianoio : NSObject <RCTBridgeModule>
6
4
  @end
package/ios/SdkPianoio.mm CHANGED
@@ -1,40 +1,41 @@
1
1
  #import "SdkPianoio.h"
2
2
  #import "SdkPianoio-Swift.h"
3
+ #import <React/RCTBridgeModule.h>
3
4
 
4
5
  @implementation SdkPianoio {
5
6
  ComposerPianoImpl *moduleImpl;
6
7
  }
7
8
 
8
- - (instancetype) init {
9
+ RCT_EXPORT_MODULE(SdkPianoio)
10
+
11
+
12
+ - (instancetype)init {
9
13
  self = [super init];
10
- if(self){
14
+ if (self) {
11
15
  moduleImpl = [ComposerPianoImpl new];
12
16
  }
13
17
  return self;
14
18
  }
15
19
 
16
- RCT_EXPORT_MODULE()
17
-
18
- - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params
20
+ RCT_EXPORT_METHOD(initializeComposer:(NSString *)aid
21
+ resolver:(RCTPromiseResolveBlock)resolve
22
+ rejecter:(RCTPromiseRejectBlock)reject)
19
23
  {
20
- return std::make_shared<facebook::react::NativeSdkPianoioSpecJSI>(params);
21
- }
22
-
23
- // initialize composer with one parameter
24
- - (void) initializeComposer:(nonnull NSString *)aid
25
- resolve:(nonnull RCTPromiseResolveBlock)resolve
26
- reject:(nonnull RCTPromiseRejectBlock)reject {
24
+ if (!moduleImpl) {
25
+ moduleImpl = [ComposerPianoImpl new];
26
+ }
27
+
27
28
  PianoComposer *composer = [moduleImpl initializeComposer:aid];
28
29
  if (composer) {
29
30
  resolve(composer);
30
31
  } else {
31
- reject(@"composer_error", @"Impossibile aggiungere il tag", nil);
32
+ reject(@"composer_error", @"Impossibile inizializzare il composer", nil);
32
33
  }
33
34
  }
34
35
 
35
- // get composer
36
- - (void) getComposer:(nonnull RCTPromiseResolveBlock)resolve
37
- reject:(nonnull RCTPromiseRejectBlock)reject {
36
+ RCT_EXPORT_METHOD(getComposer:(RCTPromiseResolveBlock)resolve
37
+ rejecter:(RCTPromiseRejectBlock)reject)
38
+ {
38
39
  PianoComposer *composer = [moduleImpl getComposer];
39
40
  if (composer) {
40
41
  NSMutableDictionary *response = [NSMutableDictionary new];
@@ -44,16 +45,15 @@ RCT_EXPORT_MODULE()
44
45
  [response setObject:[moduleImpl getReferrer] forKey:@"referrer"];
45
46
  [response setObject:[moduleImpl getUrl] forKey:@"url"];
46
47
  [response setObject:[moduleImpl getUserToken] forKey:@"userToken"];
47
-
48
48
  resolve(response);
49
49
  } else {
50
- reject(@"composer_error", @"Impossibile aggiungere il tag", nil);
50
+ reject(@"composer_error", @"Impossibile ottenere il composer", nil);
51
51
  }
52
52
  }
53
53
 
54
- - (void)addComposerTag:(nonnull NSString *)tag
55
- resolve:(nonnull RCTPromiseResolveBlock)resolve
56
- reject:(nonnull RCTPromiseRejectBlock)reject
54
+ RCT_EXPORT_METHOD(addComposerTag:(NSString *)tag
55
+ resolver:(RCTPromiseResolveBlock)resolve
56
+ rejecter:(RCTPromiseRejectBlock)reject)
57
57
  {
58
58
  PianoComposer *composer = [moduleImpl addTag:tag];
59
59
  if (composer) {
@@ -63,9 +63,9 @@ RCT_EXPORT_MODULE()
63
63
  }
64
64
  }
65
65
 
66
- - (void)addComposerTags:(nonnull NSArray *)tags
67
- resolve:(nonnull RCTPromiseResolveBlock)resolve
68
- reject:(nonnull RCTPromiseRejectBlock)reject
66
+ RCT_EXPORT_METHOD(addComposerTags:(NSArray *)tags
67
+ resolver:(RCTPromiseResolveBlock)resolve
68
+ rejecter:(RCTPromiseRejectBlock)reject)
69
69
  {
70
70
  PianoComposer *composer = [moduleImpl addTags:tags];
71
71
  if (composer) {
@@ -75,21 +75,17 @@ RCT_EXPORT_MODULE()
75
75
  }
76
76
  }
77
77
 
78
- - (void)executeComposer:(nonnull RCTPromiseResolveBlock)resolve
79
- reject:(nonnull RCTPromiseRejectBlock)reject
78
+ RCT_EXPORT_METHOD(executeComposer:(RCTPromiseResolveBlock)resolve
79
+ rejecter:(RCTPromiseRejectBlock)reject)
80
80
  {
81
- PianoComposer *composer = [moduleImpl executeComposer];
82
- if (composer) {
83
- resolve(nil);
84
- } else {
85
- reject(@"composer_error", @"Impossibile eseguire il composer", nil);
86
- }
81
+ [moduleImpl executeComposer];
82
+ resolve(nil);
87
83
  }
88
84
 
89
- - (void)setComposerCustomVariable:(nonnull NSString *)name
90
- value:(nonnull NSString *)value
91
- resolve:(nonnull RCTPromiseResolveBlock)resolve
92
- reject:(nonnull RCTPromiseRejectBlock)reject
85
+ RCT_EXPORT_METHOD(setComposerCustomVariable:(NSString *)name
86
+ value:(NSString *)value
87
+ resolver:(RCTPromiseResolveBlock)resolve
88
+ rejecter:(RCTPromiseRejectBlock)reject)
93
89
  {
94
90
  PianoComposer *composer = [moduleImpl setCustomVariable:name value:value];
95
91
  if (composer) {
@@ -99,9 +95,9 @@ RCT_EXPORT_MODULE()
99
95
  }
100
96
  }
101
97
 
102
- - (void)setComposerReferrer:(nonnull NSString *)referrer
103
- resolve:(nonnull RCTPromiseResolveBlock)resolve
104
- reject:(nonnull RCTPromiseRejectBlock)reject
98
+ RCT_EXPORT_METHOD(setComposerReferrer:(NSString *)referrer
99
+ resolver:(RCTPromiseResolveBlock)resolve
100
+ rejecter:(RCTPromiseRejectBlock)reject)
105
101
  {
106
102
  PianoComposer *composer = [moduleImpl setReferrer:referrer];
107
103
  if (composer) {
@@ -111,9 +107,9 @@ RCT_EXPORT_MODULE()
111
107
  }
112
108
  }
113
109
 
114
- - (void)setComposerUrl:(nonnull NSString *)url
115
- resolve:(nonnull RCTPromiseResolveBlock)resolve
116
- reject:(nonnull RCTPromiseRejectBlock)reject
110
+ RCT_EXPORT_METHOD(setComposerUrl:(NSString *)url
111
+ resolver:(RCTPromiseResolveBlock)resolve
112
+ rejecter:(RCTPromiseRejectBlock)reject)
117
113
  {
118
114
  PianoComposer *composer = [moduleImpl setUrl:url];
119
115
  if (composer) {
@@ -123,9 +119,9 @@ RCT_EXPORT_MODULE()
123
119
  }
124
120
  }
125
121
 
126
- - (void)setComposerUserToken:(nonnull NSString *)token
127
- resolve:(nonnull RCTPromiseResolveBlock)resolve
128
- reject:(nonnull RCTPromiseRejectBlock)reject
122
+ RCT_EXPORT_METHOD(setComposerUserToken:(NSString *)token
123
+ resolver:(RCTPromiseResolveBlock)resolve
124
+ rejecter:(RCTPromiseRejectBlock)reject)
129
125
  {
130
126
  PianoComposer *composer = [moduleImpl setUserToken:token];
131
127
  if (composer) {
@@ -135,9 +131,9 @@ RCT_EXPORT_MODULE()
135
131
  }
136
132
  }
137
133
 
138
- - (void)setComposerZoneId:(nonnull NSString *)zoneId
139
- resolve:(nonnull RCTPromiseResolveBlock)resolve
140
- reject:(nonnull RCTPromiseRejectBlock)reject
134
+ RCT_EXPORT_METHOD(setComposerZoneId:(NSString *)zoneId
135
+ resolver:(RCTPromiseResolveBlock)resolve
136
+ rejecter:(RCTPromiseRejectBlock)reject)
141
137
  {
142
138
  PianoComposer *composer = [moduleImpl setZoneId:zoneId];
143
139
  if (composer) {
@@ -147,6 +143,52 @@ RCT_EXPORT_MODULE()
147
143
  }
148
144
  }
149
145
 
146
+ RCT_EXPORT_METHOD(showLogin:(RCTPromiseResolveBlock)resolve
147
+ rejecter:(RCTPromiseRejectBlock)reject)
148
+ {
149
+ @try {
150
+ [moduleImpl showLogin];
151
+ resolve(@(YES));
152
+ }
153
+ @catch (NSException *exception) {
154
+ reject(@"show_login_error", @"Errore in showLogin", nil);
155
+ }
156
+ }
157
+
158
+ RCT_EXPORT_METHOD(showTemplate:(RCTPromiseResolveBlock)resolve
159
+ rejecter:(RCTPromiseRejectBlock)reject)
160
+ {
161
+ @try {
162
+ [moduleImpl showTemplate];
163
+ resolve(@(YES));
164
+ }
165
+ @catch (NSException *exception) {
166
+ reject(@"show_template_error", @"Errore in showTemplate", nil);
167
+ }
168
+ }
150
169
 
170
+ RCT_EXPORT_METHOD(showForm:(RCTPromiseResolveBlock)resolve
171
+ rejecter:(RCTPromiseRejectBlock)reject)
172
+ {
173
+ @try {
174
+ [moduleImpl showForm];
175
+ resolve(@(YES));
176
+ }
177
+ @catch (NSException *exception) {
178
+ reject(@"show_template_error", @"Errore in showForm", nil);
179
+ }
180
+ }
181
+
182
+ RCT_EXPORT_METHOD(experienceExecute:(RCTPromiseResolveBlock)resolve
183
+ rejecter:(RCTPromiseRejectBlock)reject)
184
+ {
185
+ @try {
186
+ [moduleImpl executeExperience];
187
+ resolve(@(YES));
188
+ }
189
+ @catch (NSException *exception) {
190
+ reject(@"experience_execute_error", @"Errore in experienceExecute", nil);
191
+ }
192
+ }
151
193
 
152
194
  @end