1- import { Text , TouchableOpacity } from 'react-native' ;
1+ import { ScrollView , Text , TouchableOpacity , View } from 'react-native' ;
22import { useCallback , useState } from 'react' ;
3- import { Iterable } from '@iterable/react-native-sdk' ;
3+ import {
4+ Iterable ,
5+ type IterableEmbeddedMessage ,
6+ } from '@iterable/react-native-sdk' ;
47import { SafeAreaView } from 'react-native-safe-area-context' ;
58
69import styles from './Embedded.styles' ;
710
811export const Embedded = ( ) => {
912 const [ placementIds , setPlacementIds ] = useState < number [ ] > ( [ ] ) ;
13+ const [ embeddedMessages , setEmbeddedMessages ] = useState <
14+ IterableEmbeddedMessage [ ]
15+ > ( [ ] ) ;
16+
17+ const syncEmbeddedMessages = useCallback ( ( ) => {
18+ Iterable . embeddedManager . syncMessages ( ) ;
19+ } , [ ] ) ;
20+
1021 const getPlacementIds = useCallback ( ( ) => {
11- Iterable . embeddedManager . getPlacementIds ( ) . then ( ( ids : unknown ) => {
22+ return Iterable . embeddedManager . getPlacementIds ( ) . then ( ( ids : unknown ) => {
1223 console . log ( ids ) ;
1324 setPlacementIds ( ids as number [ ] ) ;
25+ return ids ;
1426 } ) ;
1527 } , [ ] ) ;
1628
@@ -28,28 +40,69 @@ export const Embedded = () => {
2840 Iterable . embeddedManager . endSession ( ) ;
2941 } , [ ] ) ;
3042
43+ const getEmbeddedMessages = useCallback ( ( ) => {
44+ getPlacementIds ( )
45+ . then ( ( ids : number [ ] ) => Iterable . embeddedManager . getMessages ( ids ) )
46+ . then ( ( messages : IterableEmbeddedMessage [ ] ) => {
47+ setEmbeddedMessages ( messages ) ;
48+ console . log ( messages ) ;
49+ } ) ;
50+ } , [ getPlacementIds ] ) ;
51+
3152 return (
3253 < SafeAreaView style = { styles . container } >
3354 < Text style = { styles . text } > EMBEDDED</ Text >
34- < Text style = { styles . text } >
35- Does embedded class exist? { Iterable . embeddedManager ? 'Yes' : 'No' }
36- </ Text >
37- < Text style = { styles . text } >
38- Is embedded manager enabled?{ ' ' }
39- { Iterable . embeddedManager . isEnabled ? 'Yes' : 'No' }
40- </ Text >
41- < Text style = { styles . text } >
42- Placement ids: [{ placementIds . join ( ', ' ) } ]
43- </ Text >
44- < TouchableOpacity style = { styles . button } onPress = { getPlacementIds } >
45- < Text style = { styles . buttonText } > Get placement ids</ Text >
46- </ TouchableOpacity >
47- < TouchableOpacity style = { styles . button } onPress = { startEmbeddedSession } >
48- < Text style = { styles . buttonText } > Start embedded session</ Text >
49- </ TouchableOpacity >
50- < TouchableOpacity style = { styles . button } onPress = { endEmbeddedSession } >
51- < Text style = { styles . buttonText } > End embedded session</ Text >
52- </ TouchableOpacity >
55+ < View style = { styles . utilitySection } >
56+ < Text style = { styles . text } >
57+ Does embedded class exist? { Iterable . embeddedManager ? 'Yes' : 'No' }
58+ </ Text >
59+ < Text style = { styles . text } >
60+ Is embedded manager enabled?{ ' ' }
61+ { Iterable . embeddedManager . isEnabled ? 'Yes' : 'No' }
62+ </ Text >
63+ < Text style = { styles . text } >
64+ Placement ids: [{ placementIds . join ( ', ' ) } ]
65+ </ Text >
66+ < TouchableOpacity style = { styles . button } onPress = { syncEmbeddedMessages } >
67+ < Text style = { styles . buttonText } > Sync embedded messages</ Text >
68+ </ TouchableOpacity >
69+ < TouchableOpacity style = { styles . button } onPress = { getPlacementIds } >
70+ < Text style = { styles . buttonText } > Get placement ids</ Text >
71+ </ TouchableOpacity >
72+ < TouchableOpacity style = { styles . button } onPress = { startEmbeddedSession } >
73+ < Text style = { styles . buttonText } > Start embedded session</ Text >
74+ </ TouchableOpacity >
75+ < TouchableOpacity style = { styles . button } onPress = { endEmbeddedSession } >
76+ < Text style = { styles . buttonText } > End embedded session</ Text >
77+ </ TouchableOpacity >
78+ < TouchableOpacity style = { styles . button } onPress = { getEmbeddedMessages } >
79+ < Text style = { styles . buttonText } > Get embedded messages</ Text >
80+ </ TouchableOpacity >
81+ </ View >
82+ < View style = { styles . hr } />
83+ < ScrollView >
84+ < View style = { styles . embeddedSection } >
85+ { embeddedMessages . map ( ( message ) => (
86+ < View key = { message . metadata . messageId } >
87+ < Text > Embedded message</ Text >
88+ < Text > metadata.messageId: { message . metadata . messageId } </ Text >
89+ < Text > metadata.placementId: { message . metadata . placementId } </ Text >
90+ < Text > elements.title: { message . elements ?. title } </ Text >
91+ < Text > elements.body: { message . elements ?. body } </ Text >
92+ { ( message . elements ?. buttons ?? [ ] ) . map ( ( button , buttonIndex ) => (
93+ < View key = { `${ button . id } -${ buttonIndex } ` } >
94+ < Text > Button { buttonIndex + 1 } </ Text >
95+ < Text > button.id: { button . id } </ Text >
96+ < Text > button.title: { button . title } </ Text >
97+ < Text > button.action?.data: { button . action ?. data } </ Text >
98+ < Text > button.action?.type: { button . action ?. type } </ Text >
99+ </ View >
100+ ) ) }
101+ < Text > payload: { JSON . stringify ( message . payload ) } </ Text >
102+ </ View >
103+ ) ) }
104+ </ View >
105+ </ ScrollView >
53106 </ SafeAreaView >
54107 ) ;
55108} ;
0 commit comments