react-native-sdk-pianoio 0.2.0 → 0.2.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.
Files changed (35) hide show
  1. package/README.md +107 -9
  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
package/README.md CHANGED
@@ -4,6 +4,21 @@ Lo scopo di questo pacchetto npm è quello di avere la possibilità di interagir
4
4
 
5
5
  Il progetto è ancora in **work in progress**.
6
6
 
7
+ ## Indice
8
+
9
+ - [Installazione](#installazione)
10
+ - [Expo](#expo)
11
+ - [Adattamento del pacchetto a expo < 52](#adattamento-del-pacchetto-a-expo--52)
12
+ - [React native](#react-native)
13
+ - [Utilizzo](#utilizzo)
14
+ - [Importazione](#importazione)
15
+ - [Creazione del Composer](#creazione-del-composer)
16
+ - [Metodi del Composer](#metodi-del-composer)
17
+ - [Metodi statici](#metodi-statici)
18
+ - [Esempio completo](#esempio-completo)
19
+ <!-- - [Contributing](#contributing)
20
+ - [License](#license) -->
21
+
7
22
  ## Installazione
8
23
 
9
24
  ### Expo
@@ -34,7 +49,93 @@ In seguito si può far partire il progetto, tramite il comando:
34
49
  npx expo start
35
50
  ```
36
51
 
37
- ### React native
52
+ ### Adattamento del pacchetto a Expo < 52
53
+
54
+ Con l’introduzione della versione Expo SDK 52, il team di Expo ha adottato la **New Architecture** di React Native, che introduce importanti novità come i TurboModules, il Codegen e un nuovo sistema di gestione degli eventi (incluso EventEmitterCallback). Questi cambiamenti migliorano performance, interoperabilità con pacchetti nativi complessi e garantiscono una maggiore compatibilità futura con React Native.
55
+
56
+ Tuttavia, questa evoluzione comporta incompatibilità con versioni precedenti (Expo 51 o inferiori), che non includono le definizioni e i meccanismi introdotti dalla nuova architettura.
57
+
58
+ Un esempio concreto è l’uso del tipo facebook::react::EventEmitterCallback, che esiste solo all’interno della New Architecture.
59
+
60
+ Per far funzionare il pacchetto con versioni precedenti alla 52, è necessario usare un approccio un po' forzato, modificando manualmente il codice generato per evitare riferimenti non supportati.
61
+
62
+ Una volta installato il pacchetto e aver eseguito:
63
+
64
+ ```sh
65
+ npx expo run:ios
66
+ ```
67
+
68
+ Dovrebbe comparire una serie di errori simili a questo:
69
+
70
+ ```sh
71
+ ❌ (node_modules/react-native-sdk-pianoio/ios/generated/RNSdkPianoioSpec/RNSdkPianoioSpec.h:72:18)
72
+
73
+ 70 | @interface NativeSdkPianoioSpecBase : NSObject {
74
+ 71 | @protected
75
+ > 72 | facebook::react::EventEmitterCallback _eventEmitterCallback;
76
+ | ^ no type named 'EventEmitterCallback' in namespace 'facebook::react'
77
+ 73 | }
78
+ 74 | - (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *) eventEmitterCallbackWrapper;
79
+ 75 |
80
+ ```
81
+
82
+ I file causanti di questi errori sono:
83
+
84
+ - RNSdkPianoioSpec.h
85
+ - RNSdkPianoioSpec-generated.mm
86
+
87
+ Quindi, cliccare sulla referenza del file e andare alla linea dell'errore.
88
+
89
+ #### Modifica del file RNSdkPianoioSpec.h
90
+
91
+ ```
92
+ @interface NativeSdkPianoioSpecBase : NSObject {
93
+ @protected
94
+ facebook::react::EventEmitterCallback _eventEmitterCallback;
95
+ }
96
+ - (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *) eventEmitterCallbackWrapper;
97
+
98
+ @end
99
+ ```
100
+
101
+ Sostituire il codice sovrastante con:
102
+
103
+ ```
104
+ @interface NativeSdkPianoioSpecBase : NSObject {
105
+ @protected
106
+ void *_eventEmitterCallback;
107
+ }
108
+ - (void)setEventEmitterCallback:(void *)eventEmitterCallbackWrapper;
109
+
110
+ @end
111
+ ```
112
+
113
+ #### Modifica del file RNSdkPianoioSpec.h
114
+
115
+ ```
116
+ @implementation NativeSdkPianoioSpecBase
117
+
118
+
119
+ - (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *)eventEmitterCallbackWrapper
120
+ {
121
+ _eventEmitterCallback = std::move(eventEmitterCallbackWrapper->_eventEmitterCallback);
122
+ }
123
+ @end
124
+ ```
125
+
126
+ Sostituire il codice sovrastante con:
127
+
128
+ ```
129
+ @implementation NativeSdkPianoioSpecBase
130
+
131
+ - (void)setEventEmitterCallback:(void *)eventEmitterCallbackWrapper;
132
+ {
133
+ _eventEmitterCallback = std::move(eventEmitterCallbackWrapper);
134
+ }
135
+ @end
136
+ ```
137
+
138
+ ### React native
38
139
 
39
140
  Nel progetto di react native eseguire:
40
141
 
@@ -42,7 +143,7 @@ Nel progetto di react native eseguire:
42
143
  npm install react-native-sdk-pianoio
43
144
  ```
44
145
 
45
- #### iOS
146
+ #### iOS
46
147
 
47
148
  Nel progetto di react native entrare nella cartella per ios ed installare le dipendenze:
48
149
 
@@ -50,7 +151,7 @@ Nel progetto di react native entrare nella cartella per ios ed installare le dip
50
151
  pod install
51
152
  ```
52
153
 
53
- #### Android
154
+ #### Android
54
155
 
55
156
  Nel progetto di react native entrare nella cartella per android e [...]
56
157
 
@@ -74,7 +175,7 @@ import PianoComposer from './PianoComposer';
74
175
  const composer = await PianoComposer.create('your_aid');
75
176
  ```
76
177
 
77
- ## API del Composer
178
+ ## Metodi del Composer
78
179
 
79
180
  ### `addTag(tag: string)`
80
181
 
@@ -170,13 +271,12 @@ PianoComposer {
170
271
 
171
272
  ---
172
273
 
173
- ## 🔍 Metodi statici
274
+ ## Metodi statici
174
275
 
175
276
  ### `PianoComposer.create(aid: string): Promise<PianoComposer>`
176
277
 
177
278
  Crea e inizializza una nuova istanza di `PianoComposer`.
178
279
 
179
-
180
280
  ### `PianoComposer.isInitialized(): Promise<boolean>`
181
281
 
182
282
  Verifica se il composer è stato inizializzato correttamente a livello nativo.
@@ -201,7 +301,7 @@ Recupera i dati correnti dal modulo nativo iOS. Questo oggetto include:
201
301
  }
202
302
  ```
203
303
 
204
- ## 📋 Esempio completo
304
+ ## Esempio completo
205
305
 
206
306
  ```ts
207
307
  const composer = await PianoComposer.create('YOUR_AID');
@@ -213,8 +313,6 @@ await composer.setUrl('https://my.site/article');
213
313
  await composer.setUserToken('jwt-token');
214
314
  await composer.setCustomVariable('device', 'mobile');
215
315
 
216
- await composer.execute();
217
-
218
316
  console.log(await composer.toString());
219
317
  ```
220
318
 
@@ -14,7 +14,7 @@ Pod::Spec.new do |s|
14
14
  s.platforms = { :ios => min_ios_version_supported }
15
15
  s.source = { :git => "https://google.ch$.git", :tag => "#{s.version}" }
16
16
 
17
- s.source_files = "ios/**/*.{h,m,mm,cpp,swift}"
17
+ s.source_files = "ios/**/*.{h,m,mm,cpp,swift}", "ios/services/**/*.{swift}"
18
18
  s.private_header_files = "ios/**/*.h"
19
19
 
20
20
 
@@ -12,74 +12,10 @@
12
12
 
13
13
  namespace facebook::react {
14
14
 
15
- static facebook::jsi::Value __hostFunction_NativeSdkPianoioSpecJSI_initializeComposer(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
16
- static jmethodID cachedMethodId = nullptr;
17
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "initializeComposer", "(Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
18
- }
19
-
20
- static facebook::jsi::Value __hostFunction_NativeSdkPianoioSpecJSI_getComposer(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
21
- static jmethodID cachedMethodId = nullptr;
22
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "getComposer", "(Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
23
- }
24
15
 
25
- static facebook::jsi::Value __hostFunction_NativeSdkPianoioSpecJSI_addComposerTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
26
- static jmethodID cachedMethodId = nullptr;
27
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "addComposerTag", "(Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
28
- }
29
-
30
- static facebook::jsi::Value __hostFunction_NativeSdkPianoioSpecJSI_addComposerTags(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
31
- static jmethodID cachedMethodId = nullptr;
32
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "addComposerTags", "(Lcom/facebook/react/bridge/ReadableArray;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
33
- }
34
-
35
- static facebook::jsi::Value __hostFunction_NativeSdkPianoioSpecJSI_setComposerZoneId(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
36
- static jmethodID cachedMethodId = nullptr;
37
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "setComposerZoneId", "(Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
38
- }
39
-
40
- static facebook::jsi::Value __hostFunction_NativeSdkPianoioSpecJSI_setComposerReferrer(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
41
- static jmethodID cachedMethodId = nullptr;
42
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "setComposerReferrer", "(Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
43
- }
44
-
45
- static facebook::jsi::Value __hostFunction_NativeSdkPianoioSpecJSI_setComposerUrl(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
46
- static jmethodID cachedMethodId = nullptr;
47
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "setComposerUrl", "(Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
48
- }
49
-
50
- static facebook::jsi::Value __hostFunction_NativeSdkPianoioSpecJSI_setComposerCustomVariable(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
51
- static jmethodID cachedMethodId = nullptr;
52
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "setComposerCustomVariable", "(Ljava/lang/String;Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
53
- }
54
-
55
- static facebook::jsi::Value __hostFunction_NativeSdkPianoioSpecJSI_setComposerUserToken(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
56
- static jmethodID cachedMethodId = nullptr;
57
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "setComposerUserToken", "(Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
58
- }
59
-
60
- static facebook::jsi::Value __hostFunction_NativeSdkPianoioSpecJSI_executeComposer(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
61
- static jmethodID cachedMethodId = nullptr;
62
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "executeComposer", "(Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
63
- }
64
-
65
- NativeSdkPianoioSpecJSI::NativeSdkPianoioSpecJSI(const JavaTurboModule::InitParams &params)
66
- : JavaTurboModule(params) {
67
- methodMap_["initializeComposer"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioSpecJSI_initializeComposer};
68
- methodMap_["getComposer"] = MethodMetadata {0, __hostFunction_NativeSdkPianoioSpecJSI_getComposer};
69
- methodMap_["addComposerTag"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioSpecJSI_addComposerTag};
70
- methodMap_["addComposerTags"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioSpecJSI_addComposerTags};
71
- methodMap_["setComposerZoneId"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioSpecJSI_setComposerZoneId};
72
- methodMap_["setComposerReferrer"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioSpecJSI_setComposerReferrer};
73
- methodMap_["setComposerUrl"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioSpecJSI_setComposerUrl};
74
- methodMap_["setComposerCustomVariable"] = MethodMetadata {2, __hostFunction_NativeSdkPianoioSpecJSI_setComposerCustomVariable};
75
- methodMap_["setComposerUserToken"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioSpecJSI_setComposerUserToken};
76
- methodMap_["executeComposer"] = MethodMetadata {0, __hostFunction_NativeSdkPianoioSpecJSI_executeComposer};
77
- }
78
16
 
79
17
  std::shared_ptr<TurboModule> RNSdkPianoioSpec_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams &params) {
80
- if (moduleName == "SdkPianoio") {
81
- return std::make_shared<NativeSdkPianoioSpecJSI>(params);
82
- }
18
+
83
19
  return nullptr;
84
20
  }
85
21
 
@@ -16,13 +16,6 @@
16
16
 
17
17
  namespace facebook::react {
18
18
 
19
- /**
20
- * JNI C++ class for module 'NativeSdkPianoio'
21
- */
22
- class JSI_EXPORT NativeSdkPianoioSpecJSI : public JavaTurboModule {
23
- public:
24
- NativeSdkPianoioSpecJSI(const JavaTurboModule::InitParams &params);
25
- };
26
19
 
27
20
 
28
21
  JSI_EXPORT
@@ -11,79 +11,7 @@
11
11
 
12
12
  namespace facebook::react {
13
13
 
14
- static jsi::Value __hostFunction_NativeSdkPianoioCxxSpecJSI_initializeComposer(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
15
- return static_cast<NativeSdkPianoioCxxSpecJSI *>(&turboModule)->initializeComposer(
16
- rt,
17
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
18
- );
19
- }
20
- static jsi::Value __hostFunction_NativeSdkPianoioCxxSpecJSI_getComposer(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
21
- return static_cast<NativeSdkPianoioCxxSpecJSI *>(&turboModule)->getComposer(
22
- rt
23
- );
24
- }
25
- static jsi::Value __hostFunction_NativeSdkPianoioCxxSpecJSI_addComposerTag(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
26
- return static_cast<NativeSdkPianoioCxxSpecJSI *>(&turboModule)->addComposerTag(
27
- rt,
28
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
29
- );
30
- }
31
- static jsi::Value __hostFunction_NativeSdkPianoioCxxSpecJSI_addComposerTags(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
32
- return static_cast<NativeSdkPianoioCxxSpecJSI *>(&turboModule)->addComposerTags(
33
- rt,
34
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asObject(rt).asArray(rt)
35
- );
36
- }
37
- static jsi::Value __hostFunction_NativeSdkPianoioCxxSpecJSI_setComposerZoneId(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
38
- return static_cast<NativeSdkPianoioCxxSpecJSI *>(&turboModule)->setComposerZoneId(
39
- rt,
40
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
41
- );
42
- }
43
- static jsi::Value __hostFunction_NativeSdkPianoioCxxSpecJSI_setComposerReferrer(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
44
- return static_cast<NativeSdkPianoioCxxSpecJSI *>(&turboModule)->setComposerReferrer(
45
- rt,
46
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
47
- );
48
- }
49
- static jsi::Value __hostFunction_NativeSdkPianoioCxxSpecJSI_setComposerUrl(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
50
- return static_cast<NativeSdkPianoioCxxSpecJSI *>(&turboModule)->setComposerUrl(
51
- rt,
52
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
53
- );
54
- }
55
- static jsi::Value __hostFunction_NativeSdkPianoioCxxSpecJSI_setComposerCustomVariable(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
56
- return static_cast<NativeSdkPianoioCxxSpecJSI *>(&turboModule)->setComposerCustomVariable(
57
- rt,
58
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
59
- count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asString(rt)
60
- );
61
- }
62
- static jsi::Value __hostFunction_NativeSdkPianoioCxxSpecJSI_setComposerUserToken(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
63
- return static_cast<NativeSdkPianoioCxxSpecJSI *>(&turboModule)->setComposerUserToken(
64
- rt,
65
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
66
- );
67
- }
68
- static jsi::Value __hostFunction_NativeSdkPianoioCxxSpecJSI_executeComposer(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
69
- return static_cast<NativeSdkPianoioCxxSpecJSI *>(&turboModule)->executeComposer(
70
- rt
71
- );
72
- }
73
14
 
74
- NativeSdkPianoioCxxSpecJSI::NativeSdkPianoioCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
75
- : TurboModule("SdkPianoio", jsInvoker) {
76
- methodMap_["initializeComposer"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioCxxSpecJSI_initializeComposer};
77
- methodMap_["getComposer"] = MethodMetadata {0, __hostFunction_NativeSdkPianoioCxxSpecJSI_getComposer};
78
- methodMap_["addComposerTag"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioCxxSpecJSI_addComposerTag};
79
- methodMap_["addComposerTags"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioCxxSpecJSI_addComposerTags};
80
- methodMap_["setComposerZoneId"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioCxxSpecJSI_setComposerZoneId};
81
- methodMap_["setComposerReferrer"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioCxxSpecJSI_setComposerReferrer};
82
- methodMap_["setComposerUrl"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioCxxSpecJSI_setComposerUrl};
83
- methodMap_["setComposerCustomVariable"] = MethodMetadata {2, __hostFunction_NativeSdkPianoioCxxSpecJSI_setComposerCustomVariable};
84
- methodMap_["setComposerUserToken"] = MethodMetadata {1, __hostFunction_NativeSdkPianoioCxxSpecJSI_setComposerUserToken};
85
- methodMap_["executeComposer"] = MethodMetadata {0, __hostFunction_NativeSdkPianoioCxxSpecJSI_executeComposer};
86
- }
87
15
 
88
16
 
89
17
  } // namespace facebook::react
@@ -15,138 +15,5 @@
15
15
  namespace facebook::react {
16
16
 
17
17
 
18
- class JSI_EXPORT NativeSdkPianoioCxxSpecJSI : public TurboModule {
19
- protected:
20
- NativeSdkPianoioCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
21
-
22
- public:
23
- virtual jsi::Value initializeComposer(jsi::Runtime &rt, jsi::String aid) = 0;
24
- virtual jsi::Value getComposer(jsi::Runtime &rt) = 0;
25
- virtual jsi::Value addComposerTag(jsi::Runtime &rt, jsi::String tag) = 0;
26
- virtual jsi::Value addComposerTags(jsi::Runtime &rt, jsi::Array tags) = 0;
27
- virtual jsi::Value setComposerZoneId(jsi::Runtime &rt, jsi::String zoneId) = 0;
28
- virtual jsi::Value setComposerReferrer(jsi::Runtime &rt, jsi::String referrer) = 0;
29
- virtual jsi::Value setComposerUrl(jsi::Runtime &rt, jsi::String url) = 0;
30
- virtual jsi::Value setComposerCustomVariable(jsi::Runtime &rt, jsi::String name, jsi::String value) = 0;
31
- virtual jsi::Value setComposerUserToken(jsi::Runtime &rt, jsi::String token) = 0;
32
- virtual jsi::Value executeComposer(jsi::Runtime &rt) = 0;
33
-
34
- };
35
-
36
- template <typename T>
37
- class JSI_EXPORT NativeSdkPianoioCxxSpec : public TurboModule {
38
- public:
39
- jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
40
- return delegate_.create(rt, propName);
41
- }
42
-
43
- std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime& runtime) override {
44
- return delegate_.getPropertyNames(runtime);
45
- }
46
-
47
- static constexpr std::string_view kModuleName = "SdkPianoio";
48
-
49
- protected:
50
- NativeSdkPianoioCxxSpec(std::shared_ptr<CallInvoker> jsInvoker)
51
- : TurboModule(std::string{NativeSdkPianoioCxxSpec::kModuleName}, jsInvoker),
52
- delegate_(reinterpret_cast<T*>(this), jsInvoker) {}
53
-
54
-
55
- private:
56
- class Delegate : public NativeSdkPianoioCxxSpecJSI {
57
- public:
58
- Delegate(T *instance, std::shared_ptr<CallInvoker> jsInvoker) :
59
- NativeSdkPianoioCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
60
-
61
- }
62
-
63
- jsi::Value initializeComposer(jsi::Runtime &rt, jsi::String aid) override {
64
- static_assert(
65
- bridging::getParameterCount(&T::initializeComposer) == 2,
66
- "Expected initializeComposer(...) to have 2 parameters");
67
-
68
- return bridging::callFromJs<jsi::Value>(
69
- rt, &T::initializeComposer, jsInvoker_, instance_, std::move(aid));
70
- }
71
- jsi::Value getComposer(jsi::Runtime &rt) override {
72
- static_assert(
73
- bridging::getParameterCount(&T::getComposer) == 1,
74
- "Expected getComposer(...) to have 1 parameters");
75
-
76
- return bridging::callFromJs<jsi::Value>(
77
- rt, &T::getComposer, jsInvoker_, instance_);
78
- }
79
- jsi::Value addComposerTag(jsi::Runtime &rt, jsi::String tag) override {
80
- static_assert(
81
- bridging::getParameterCount(&T::addComposerTag) == 2,
82
- "Expected addComposerTag(...) to have 2 parameters");
83
-
84
- return bridging::callFromJs<jsi::Value>(
85
- rt, &T::addComposerTag, jsInvoker_, instance_, std::move(tag));
86
- }
87
- jsi::Value addComposerTags(jsi::Runtime &rt, jsi::Array tags) override {
88
- static_assert(
89
- bridging::getParameterCount(&T::addComposerTags) == 2,
90
- "Expected addComposerTags(...) to have 2 parameters");
91
-
92
- return bridging::callFromJs<jsi::Value>(
93
- rt, &T::addComposerTags, jsInvoker_, instance_, std::move(tags));
94
- }
95
- jsi::Value setComposerZoneId(jsi::Runtime &rt, jsi::String zoneId) override {
96
- static_assert(
97
- bridging::getParameterCount(&T::setComposerZoneId) == 2,
98
- "Expected setComposerZoneId(...) to have 2 parameters");
99
-
100
- return bridging::callFromJs<jsi::Value>(
101
- rt, &T::setComposerZoneId, jsInvoker_, instance_, std::move(zoneId));
102
- }
103
- jsi::Value setComposerReferrer(jsi::Runtime &rt, jsi::String referrer) override {
104
- static_assert(
105
- bridging::getParameterCount(&T::setComposerReferrer) == 2,
106
- "Expected setComposerReferrer(...) to have 2 parameters");
107
-
108
- return bridging::callFromJs<jsi::Value>(
109
- rt, &T::setComposerReferrer, jsInvoker_, instance_, std::move(referrer));
110
- }
111
- jsi::Value setComposerUrl(jsi::Runtime &rt, jsi::String url) override {
112
- static_assert(
113
- bridging::getParameterCount(&T::setComposerUrl) == 2,
114
- "Expected setComposerUrl(...) to have 2 parameters");
115
-
116
- return bridging::callFromJs<jsi::Value>(
117
- rt, &T::setComposerUrl, jsInvoker_, instance_, std::move(url));
118
- }
119
- jsi::Value setComposerCustomVariable(jsi::Runtime &rt, jsi::String name, jsi::String value) override {
120
- static_assert(
121
- bridging::getParameterCount(&T::setComposerCustomVariable) == 3,
122
- "Expected setComposerCustomVariable(...) to have 3 parameters");
123
-
124
- return bridging::callFromJs<jsi::Value>(
125
- rt, &T::setComposerCustomVariable, jsInvoker_, instance_, std::move(name), std::move(value));
126
- }
127
- jsi::Value setComposerUserToken(jsi::Runtime &rt, jsi::String token) override {
128
- static_assert(
129
- bridging::getParameterCount(&T::setComposerUserToken) == 2,
130
- "Expected setComposerUserToken(...) to have 2 parameters");
131
-
132
- return bridging::callFromJs<jsi::Value>(
133
- rt, &T::setComposerUserToken, jsInvoker_, instance_, std::move(token));
134
- }
135
- jsi::Value executeComposer(jsi::Runtime &rt) override {
136
- static_assert(
137
- bridging::getParameterCount(&T::executeComposer) == 1,
138
- "Expected executeComposer(...) to have 1 parameters");
139
-
140
- return bridging::callFromJs<jsi::Value>(
141
- rt, &T::executeComposer, jsInvoker_, instance_);
142
- }
143
-
144
- private:
145
- friend class NativeSdkPianoioCxxSpec;
146
- T *instance_;
147
- };
148
-
149
- Delegate delegate_;
150
- };
151
18
 
152
19
  } // namespace facebook::react
@@ -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
  }